char *username, *whoami;
char *newlogin, *uid, *shell, *winshell, *last, *first, *middle, *u_status;
-char *clearid, *class, *comment, *secure, *winhomedir, *winprofiledir;
+char *clearid, *class, *comment, *secure, *winhomedir, *winprofiledir, *expiration;
struct owner_type *parse_member(char *s);
list_res_flag = update_res_flag = unformatted_flag = verbose = noauth = 0;
newlogin = uid = shell = winshell = last = first = middle = NULL;
u_status = clearid = class = comment = secure = NULL;
- winhomedir = winprofiledir = NULL;
+ winhomedir = winprofiledir = expiration = NULL;
reservation_add_queue = reservation_remove_queue = NULL;
sponsor = NULL;
whoami = argv[0];
} else
usage(argv);
}
+ else if (argis("e", "expiration")) {
+ if (arg - argv < argc - 1) {
+ arg++;
+ update_flag++;
+ expiration = *arg;
+ } else
+ usage(argv);
+ }
else if (argis("ar", "addreservation")) {
if (arg - argv < argc - 1) {
arg++;
argv[U_WINPROFILEDIR] = winprofiledir;
else
argv[U_WINPROFILEDIR] = "[DFS]";
+ if (expiration)
+ argv[U_EXPIRATION] = expiration;
if (sponsor)
{
argv[U_SPONSOR_NAME] = sponsor->name;
case M_ANY:
case M_USER:
argv[U_SPONSOR_TYPE] = "USER";
- status = wrap_mr_query("add_user_account", 17, argv, NULL, NULL);
+ status = wrap_mr_query("add_user_account", 18, argv, NULL, NULL);
if (sponsor->type != M_ANY || status != MR_USER)
break;
case M_LIST:
argv[U_SPONSOR_TYPE] = "LIST";
- status = wrap_mr_query("add_user_account", 17, argv, NULL, NULL);
+ status = wrap_mr_query("add_user_account", 18, argv, NULL, NULL);
break;
case M_KERBEROS:
mrcl_com_err(whoami);
if (status == MRCL_REJECT)
exit(1);
- status = wrap_mr_query("add_user_account", 17, argv, NULL, NULL);
+ status = wrap_mr_query("add_user_account", 18, argv, NULL, NULL);
break;
case M_NONE:
argv[U_SPONSOR_TYPE] = "NONE";
- status = wrap_mr_query("add_user_account", 17, argv, NULL, NULL);
+ status = wrap_mr_query("add_user_account", 18, argv, NULL, NULL);
break;
}
}
argv[U_SPONSOR_TYPE] = "NONE";
argv[U_SPONSOR_NAME] = "NONE";
- status = wrap_mr_query("add_user_account", 17, argv, NULL, NULL);
+ status = wrap_mr_query("add_user_account", 18, argv, NULL, NULL);
}
if (status)
argv[15] = old_argv[14];
argv[16] = old_argv[15];
argv[17] = old_argv[16];
+ argv[18] = old_argv[17];
argv[0] = username;
if (newlogin)
argv[14] = winhomedir;
if (winprofiledir)
argv[15] = winprofiledir;
+ if (expiration)
+ argv[18] = expiration;
if (sponsor)
{
argv[17] = sponsor->name;
case M_ANY:
case M_USER:
argv[16] = "USER";
- status = wrap_mr_query("update_user_account", 18, argv, NULL,
+ status = wrap_mr_query("update_user_account", 19, argv, NULL,
NULL);
if (sponsor->type != M_ANY || status != MR_USER)
break;
case M_LIST:
argv[16] = "LIST";
- status = wrap_mr_query("update_user_account", 18, argv, NULL,
+ status = wrap_mr_query("update_user_account", 19, argv, NULL,
NULL);
break;
mrcl_com_err(whoami);
if (status == MRCL_REJECT)
exit(1);
- status = wrap_mr_query("update_user_account", 18, argv, NULL,
+ status = wrap_mr_query("update_user_account", 19, argv, NULL,
NULL);
break;
case M_NONE:
argv[16] = "NONE";
- status = wrap_mr_query("update_user_account", 18, argv, NULL,
+ status = wrap_mr_query("update_user_account", 19, argv, NULL,
NULL);
break;
}
}
else
- status = wrap_mr_query("update_user_account", 18, argv, NULL, NULL);
+ status = wrap_mr_query("update_user_account", 19, argv, NULL, NULL);
if (status)
com_err(whoami, status, "while updating user.");
argv[U_WINCONSOLESHELL]);
sprintf(tbuf, "%s %s", argv[U_SPONSOR_TYPE],
strcmp(argv[U_SPONSOR_TYPE], "NONE") ? argv[U_SPONSOR_NAME] : "");
- printf("Sponsor: %-25s\n", tbuf);
+ printf("Sponsor: %-23s Expiration date: %s\n", tbuf, argv[U_EXPIRATION]);
printf("Account is: %-20s MIT ID number: %s\n",
UserState(atoi(argv[U_STATE])), argv[U_MITID]);
printf("Windows Home Directory: %s\n", argv[U_WINHOMEDIR]);
sprintf(tbuf, "%s %s", argv[U_SPONSOR_TYPE],
strcmp(argv[U_SPONSOR_TYPE], "NONE") ? argv[U_SPONSOR_NAME] : "");
printf("Sponsor: %s\n", tbuf);
+ printf("Expiration date: %s\n", argv[U_EXPIRATION]);
printf("Login shell: %s\n", argv[U_SHELL]);
printf("Windows Console Shell: %s\n", argv[U_WINCONSOLESHELL]);
printf("Account is: %s\n", UserState(atoi(argv[U_STATE])));
"login",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
- "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
- "modby", "modwith", "created", "creator",
+ "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
+ "modtime", "modby", "modwith", "created", "creator",
};
static char *gubl2_fields[] = {
"unix_uid",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
- "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
- "modby", "modwith", "created", "creator",
+ "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
+ "modtime", "modby", "modwith", "created", "creator",
};
static char *guan2_fields[] = {
"first", "last",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
- "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
- "modby", "modwith", "created", "creator",
+ "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
+ "modtime", "modby", "modwith", "created", "creator",
};
static struct validate guan2_validate =
"class",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
- "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
- "modby", "modwith", "created", "creator",
+ "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
+ "modtime", "modby", "modwith", "created", "creator",
};
static char *guam2_fields[] = {
"clearid",
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
- "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
- "modby", "modwith", "created", "creator",
+ "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
+ "modtime", "modby", "modwith", "created", "creator",
};
static char *guas_fields[] = {
static char *auac_fields[] = {
"login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
"status", "clearid", "class", "comments", "signature", "secure",
- "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name",
+ "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
};
static struct valobj auac2_valobj[] = {
{V_LEN, 14, USERS_TABLE, "winprofiledir"},
{V_TYPE, 15, 0, "ace_type", 0, MR_ACE},
{V_TYPEDATA, 16, 0, 0, "list_id", MR_ACE},
+ {V_CHAR, 17, USERS_TABLE, "expiration"},
};
static struct validate auac2_validate = {
static struct validate auac_validate = {
auac_valobj,
- 16,
+ 17,
"login",
"login = '%s'",
1,
static struct validate ausr_validate = {
auac_valobj,
- 14,
+ 15,
"login",
"login = '%s'",
1,
"login",
"newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first",
"middle", "status", "clearid", "class", "comments", "signature", "secure",
- "winhomedir", "winprofiledir, sponsor_type, sponsor_name",
+ "winhomedir", "winprofiledir, sponsor_type, sponsor_name", "expiration",
};
static struct valobj uuac2_valobj[] = {
{V_LEN, 15, USERS_TABLE, "winprofiledir"},
{V_TYPE, 16, 0, "ace_type", 0, MR_ACE},
{V_TYPEDATA, 17, 0, 0, "list_id", MR_ACE},
+ {V_CHAR, 18, USERS_TABLE, "expiration"},
};
static struct validate uuac2_validate = {
static struct validate uuac_validate = {
uuac_valobj,
- 17,
+ 18,
0,
0,
0,
static struct validate uusr_validate = {
uuac_valobj,
- 15,
+ 16,
0,
0,
0,
RETRIEVE,
"u",
USERS_TABLE,
- "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
gual_fields,
- 22,
+ 23,
"u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
1,
"u.login",
RETRIEVE,
"u",
USERS_TABLE,
- "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
guau_fields,
- 22,
+ 23,
"u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
1,
"u.login",
RETRIEVE,
"u",
USERS_TABLE,
- "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
guan_fields,
- 22,
+ 23,
"u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
2,
"u.login",
RETRIEVE,
"u",
USERS_TABLE,
- "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
guac_fields,
- 22,
+ 23,
"u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
1,
"u.login",
RETRIEVE,
"u",
USERS_TABLE,
- "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
+ "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
guam_fields,
- 22,
+ 23,
"u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
1,
"u.login",
/* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
* but using up one argv element.
*/
- "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, sponsor_type, sponsor_id, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, %s, SYSDATE, %s)",
+ "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, sponsor_type, sponsor_id, expiration, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, NVL('%s', CHR(0)), %s, SYSDATE, %s)",
auac_fields,
- 17,
+ 18,
NULL,
0,
NULL,
APPEND,
"u",
USERS_TABLE,
- "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, sponsor_type, sponsor_id, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, %s, SYSDATE, %s)",
+ "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, sponsor_type, sponsor_id, expiration, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, NVL('%s', CHR(0)), %s, SYSDATE, %s)",
auac_fields,
- 14,
+ 15,
0,
0,
NULL,
"u",
USERS_TABLE,
/* See comment in auac about signature. */
- "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s, winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)), sponsor_type = '%s', sponsor_id = %d",
+ "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s, winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)), sponsor_type = '%s', sponsor_id = %d, expiration = NVL('%s', CHR(0))",
uuac_fields,
- 17,
+ 18,
"users_id = %d",
1,
NULL,
UPDATE,
"u",
USERS_TABLE,
- "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)), sponsor_type = '%s', sponsor_id = %d ",
+ "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)), sponsor_type = '%s', sponsor_id = %d, expiration = NVL('%s', CHR(0)) ",
uuac_fields,
- 14,
+ 15,
"users_id = %d",
1,
NULL,