#include <afs/cmd.h>
#include <rx/rx.h>
#include <rx/xdr.h>
+#include <rx/rxgk_int.h>
#include "ptclient.h"
#include "ptuser.h"
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) {
}
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;
}
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);
}
/*