#include <afs/cmd.h>
#include <rx/rx.h>
#include <rx/xdr.h>
+#include <rx/rxgk_int.h>
#include "ptclient.h"
#include "ptuser.h"
#include "pterror.h"
#include "ptprototypes.h"
-#undef FOREIGN
-
char *whoami;
int force = 0;
afs_int32 sec;
int changed = 0;
const char* confdir;
+ RXGK_Level rxgk_level = RXGK_LEVEL_BOGUS;
whoami = as->a0name;
confdir = as->parms[23].items->data;
}
+ if (as->parms[24].items) { /* -rxgk */
+ char *rxgk_seclevel_str = as->parms[24].items->data;
+ changed = 1;
+
+ if (strcmp(rxgk_seclevel_str, "clear") == 0)
+ rxgk_level = RXGK_LEVEL_CLEAR;
+ else if (strcmp(rxgk_seclevel_str, "auth") == 0)
+ rxgk_level = RXGK_LEVEL_AUTH;
+ else if (strcmp(rxgk_seclevel_str, "crypt") == 0)
+ rxgk_level = RXGK_LEVEL_CRYPT;
+ else {
+ fprintf(stderr, "Invalid argument to -rxgk: %s\n", rxgk_seclevel_str);
+ return 1;
+ }
+
+ }
+
if (changed) {
CleanUp(as, arock);
- code = pr_Initialize(sec, confdir, cell);
+ code = pr_Initialize2(sec, confdir, cell, rxgk_level);
} else {
code = 0;
}
return code;
}
if (id == 0) {
- printf("0 isn't a valid group id; aborting\n");
+ fprintf(stderr, "0 isn't a valid group id; aborting\n");
return EINVAL;
}
if (id > 0) {
return code;
}
if (id == 0) {
- printf("0 isn't a valid user id; aborting\n");
+ fprintf(stderr, "0 isn't a valid user id; aborting\n");
return EINVAL;
}
if (id < 0) {
printf(", group quota: unlimited");
else
printf(", group quota: %d", aentry.ngroups);
-#if FOREIGN
- printf(", foreign user quota=%d", aentry.nusers);
-#endif
printf(".\n");
}
}
if (!as->parms[0].items && !as->parms[1].items) {
code = PRBADARG;
- printf("Must specify at least one of group or user.\n");
+ fprintf(stderr, "Must specify at least one of group or user.\n");
}
return code;
}
} else { /* interpret flag bit names */
if (strlen(access) != 5) {
form_error:
- printf("Access bits must be of the form 'somar', not %s\n",
+ fprintf(stderr, "Access bits must be of the form 'somar', not %s\n",
access);
return PRBADARG;
}
else if (access[i] == '-')
new = 0;
else {
- printf
- ("Access bits out of order or illegal:\n must be a combination of letters from '%s' or '%s' or hyphen, not %s\n",
+ fprintf(stderr,
+ "Access bits out of order or illegal:\n must be a combination of letters from '%s' or '%s' or hyphen, not %s\n",
flags_upcase, flags_dncase, access);
return PRBADARG;
}
}
mask |= PR_SF_NGROUPS;
}
-#if FOREIGN
- if (as->parms[3].items) { /* limitgroups */
- code = util_GetInt32(as->parms[3].items->data, &nusers);
- if (code) {
- afs_com_err(whoami, code, "because nusers was: '%s'",
- as->parms[3].items->data);
- return code;
- }
- mask |= PR_SF_NUSERS;
- }
-#endif
for (i = 0; i < ids.idlist_len; i++) {
afs_int32 id = ids.idlist_val[i];
static void
add_std_args(struct cmd_syndesc *ts)
{
- char test_help[AFSDIR_PATH_MAX];
+ char *test_help;
- sprintf(test_help, "use config file in %s", AFSDIR_SERVER_ETC_DIRPATH);
+ if (asprintf(&test_help, "use config file in %s",
+ AFSDIR_SERVER_ETC_DIRPATH) < 0) {
+ test_help = strdup("use server config file");
+ }
cmd_Seek(ts, 16);
cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "cell name");
cmd_AddParm(ts, "-encrypt", CMD_FLAG, CMD_OPTIONAL,
"encrypt commands");
cmd_AddParm(ts, "-config", CMD_SINGLE, CMD_OPTIONAL, "config location");
+ cmd_AddParm(ts, "-rxgk", CMD_SINGLE, CMD_OPTIONAL, "rxgk security level to use");
+ free(test_help);
}
/*
memset(&state, 0, sizeof(state));
state.sec = 1; /* default is auth */
- ts = cmd_CreateSyntax("creategroup", CreateGroup, NULL,
+ ts = cmd_CreateSyntax("creategroup", CreateGroup, NULL, 0,
"create a new group");
cmd_AddParm(ts, "-name", CMD_LIST, 0, "group name");
cmd_AddParm(ts, "-owner", CMD_SINGLE, CMD_OPTIONAL, "owner of the group");
add_std_args(ts);
cmd_CreateAlias(ts, "cg");
- ts = cmd_CreateSyntax("createuser", CreateUser, NULL, "create a new user");
+ ts = cmd_CreateSyntax("createuser", CreateUser, NULL, 0, "create a new user");
cmd_AddParm(ts, "-name", CMD_LIST, 0, "user name");
cmd_AddParm(ts, "-id", CMD_LIST, CMD_OPTIONAL, "user id");
add_std_args(ts);
cmd_CreateAlias(ts, "cu");
- ts = cmd_CreateSyntax("adduser", AddToGroup, NULL, "add a user to a group");
+ ts = cmd_CreateSyntax("adduser", AddToGroup, NULL, 0, "add a user to a group");
cmd_AddParm(ts, "-user", CMD_LIST, 0, "user name");
cmd_AddParm(ts, "-group", CMD_LIST, 0, "group name");
add_std_args(ts);
- ts = cmd_CreateSyntax("removeuser", RemoveFromGroup, NULL,
+ ts = cmd_CreateSyntax("removeuser", RemoveFromGroup, NULL, 0,
"remove a user from a group");
cmd_AddParm(ts, "-user", CMD_LIST, 0, "user name");
cmd_AddParm(ts, "-group", CMD_LIST, 0, "group name");
add_std_args(ts);
- ts = cmd_CreateSyntax("membership", ListMembership, NULL,
+ ts = cmd_CreateSyntax("membership", ListMembership, NULL, 0,
"list membership of a user or group");
cmd_AddParm(ts, "-nameorid", CMD_LIST, 0, "user or group name or id");
cmd_AddParm(ts, "-supergroups", CMD_FLAG, CMD_OPTIONAL, "show supergroups");
add_std_args(ts);
cmd_CreateAlias(ts, "groups");
- ts = cmd_CreateSyntax("delete", Delete, NULL,
+ ts = cmd_CreateSyntax("delete", Delete, NULL, 0,
"delete a user or group from database");
cmd_AddParm(ts, "-nameorid", CMD_LIST, 0, "user or group name or id");
add_std_args(ts);
- ts = cmd_CreateSyntax("examine", CheckEntry, NULL, "examine an entry");
+ ts = cmd_CreateSyntax("examine", CheckEntry, NULL, 0, "examine an entry");
cmd_AddParm(ts, "-nameorid", CMD_LIST, 0, "user or group name or id");
add_std_args(ts);
cmd_CreateAlias(ts, "check");
- ts = cmd_CreateSyntax("chown", ChownGroup, NULL,
+ ts = cmd_CreateSyntax("chown", ChownGroup, NULL, 0,
"change ownership of a group");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "group name");
cmd_AddParm(ts, "-owner", CMD_SINGLE, 0, "new owner");
add_std_args(ts);
- ts = cmd_CreateSyntax("rename", ChangeName, NULL, "rename user or group");
+ ts = cmd_CreateSyntax("rename", ChangeName, NULL, 0, "rename user or group");
cmd_AddParm(ts, "-oldname", CMD_SINGLE, 0, "old name");
cmd_AddParm(ts, "-newname", CMD_SINGLE, 0, "new name");
add_std_args(ts);
cmd_CreateAlias(ts, "chname");
- ts = cmd_CreateSyntax("listmax", ListMax, NULL, "list max id");
+ ts = cmd_CreateSyntax("listmax", ListMax, NULL, 0, "list max id");
add_std_args(ts);
- ts = cmd_CreateSyntax("setmax", SetMaxCommand, NULL, "set max id");
+ ts = cmd_CreateSyntax("setmax", SetMaxCommand, NULL, 0, "set max id");
cmd_AddParm(ts, "-group", CMD_SINGLE, CMD_OPTIONAL, "group max");
cmd_AddParm(ts, "-user", CMD_SINGLE, CMD_OPTIONAL, "user max");
add_std_args(ts);
- ts = cmd_CreateSyntax("setfields", SetFields, NULL,
+ ts = cmd_CreateSyntax("setfields", SetFields, NULL, 0,
"set fields for an entry");
cmd_AddParm(ts, "-nameorid", CMD_LIST, 0, "user or group name or id");
cmd_AddParm(ts, "-access", CMD_SINGLE, CMD_OPTIONAL, "set privacy flags");
cmd_AddParm(ts, "-groupquota", CMD_SINGLE, CMD_OPTIONAL,
"set limit on group creation");
-#if FOREIGN
- cmd_AddParm(ts, "-userquota", CMD_SINGLE, CMD_OPTIONAL,
- "set limit on foreign user creation");
-#endif
add_std_args(ts);
- ts = cmd_CreateSyntax("listowned", ListOwned, NULL,
+ ts = cmd_CreateSyntax("listowned", ListOwned, NULL, 0,
"list groups owned by an entry or zero id gets orphaned groups");
cmd_AddParm(ts, "-nameorid", CMD_LIST, 0, "user or group name or id");
add_std_args(ts);
- ts = cmd_CreateSyntax("listentries", ListEntries, NULL,
+ ts = cmd_CreateSyntax("listentries", ListEntries, NULL, 0,
"list users/groups in the protection database");
cmd_AddParm(ts, "-users", CMD_FLAG, CMD_OPTIONAL, "list user entries");
cmd_AddParm(ts, "-groups", CMD_FLAG, CMD_OPTIONAL, "list group entries");
add_std_args(ts);
- ts = cmd_CreateSyntax("interactive", pts_Interactive, NULL,
+ ts = cmd_CreateSyntax("interactive", pts_Interactive, NULL, 0,
"enter interactive mode");
add_std_args(ts);
cmd_CreateAlias(ts, "in");
- ts = cmd_CreateSyntax("quit", pts_Quit, NULL, "exit program");
+ ts = cmd_CreateSyntax("quit", pts_Quit, NULL, 0, "exit program");
add_std_args(ts);
- ts = cmd_CreateSyntax("source", pts_Source, NULL, "read commands from file");
+ ts = cmd_CreateSyntax("source", pts_Source, NULL, 0, "read commands from file");
cmd_AddParm(ts, "-file", CMD_SINGLE, 0, "filename");
add_std_args(ts);
- ts = cmd_CreateSyntax("sleep", pts_Sleep, NULL, "pause for a bit");
+ ts = cmd_CreateSyntax("sleep", pts_Sleep, NULL, 0, "pause for a bit");
cmd_AddParm(ts, "-delay", CMD_SINGLE, 0, "seconds");
add_std_args(ts);