/*
* Copyright 2000, International Business Machines Corporation and others.
* All Rights Reserved.
- *
+ *
* This software has been released under the terms of the IBM Public
* License. For details, see the LICENSE file in the top-level source
* directory or online at http://www.openafs.org/dl/license10.html
#include <afsconfig.h>
#include <afs/param.h>
+#include <afs/stds.h>
+
+#ifdef IGNORE_SOME_GCC_WARNINGS
+# pragma GCC diagnostic warning "-Wstrict-prototypes"
+#endif
-RCSID
- ("$Header$");
+#include <roken.h>
+#include <afs/opr.h>
+#include <afs/opr_assert.h>
-#include <afs/stds.h>
-#include <afs/debug.h>
#include <ctype.h>
-#include <string.h>
- /* These two needed for rxgen output to work */
-#include <sys/types.h>
-#include <rx/xdr.h>
+#include <hcrypto/des.h>
+#include <hcrypto/ui.h>
-#include <stdio.h>
+#include <rx/xdr.h>
#include <rx/rx.h>
+#include <rx/rxkad.h>
+#include <rx/rxkad_convert.h>
#include <lock.h>
+#define UBIK_LEGACY_CALLITER 1
#include <ubik.h>
-#ifndef AFS_NT40_ENV
-#include <pwd.h>
-#endif
#include <afs/auth.h>
#include <afs/cellconfig.h>
#include <afs/cmd.h>
#include <afs/afsutil.h>
#include "kauth.h"
+#include "kauth_internal.h"
#include "kautils.h"
#include "kaport.h"
-
+#include "kkids.h"
#define CMD_PARSER_AMBIG_FIX 1 /* allow ambiguous aliases */
-extern char *ktime_GetDateUsage();
-
#define KA_SIXHOURS (6*3600)
static struct ubik_client *conn;
static int finished;
static int zero_argc;
static char **zero_argv;
-afs_uint32 ka_islocked();
+afs_uint32 ka_islocked(char *, char *, afs_uint32 *);
afs_int32
DefaultCell(void)
return 0;
code = ka_ExpandCell(0, cell, 0 /*local */ );
if (code) {
- com_err(whoami, code, "Can't expand cell name");
+ afs_com_err(whoami, code, "Can't expand cell name");
}
return code;
}
/* These are the command operation procedures. */
int
-ListUsers(struct cmd_syndesc *as, char *arock)
-{
- struct kaident name;
- afs_int32 index;
- afs_int32 count;
- afs_int32 next_index;
- int code, all = 0, showa = 0;
- int showkey = (as->parms[2].items != NULL);
-
- if (as->parms[0].items)
- all = 1;
- if (as->parms[1].items) {
- all = 1;
- showa = 1;
- }
- for (index = 0; 1; index = next_index) {
- code =
- ubik_Call(KAM_ListEntry, conn, 0, index, &next_index, &count,
- &name);
- if (code) {
- com_err(whoami, code, "calling KAM_ListEntry");
- break;
- }
- if (!next_index)
- break;
- if (next_index < 0)
- printf("next_index (%d) is negative: ", next_index);
- if (strlen(name.name) == 0)
- printf("name is zero length: ");
- if (all)
- DumpUser(name.name, NULL, showa, showkey, name.instance);
- else
- ka_PrintUserID("", name.name, name.instance, "\n");
- }
- return code;
-}
-
-
-int
-ExamineUser(struct cmd_syndesc *as, char *arock)
-{
- int showkey = (as->parms[1].items != NULL);
- return DumpUser(as->parms[0].items->data, arock, 0, showkey, NULL);
-}
-
-
-int
DumpUser(char *user, char *arock, int showadmin, int showkey, char *inst)
{
char name[MAXKTCNAMELEN];
code = ka_ParseLoginName(user, name, instance, 0);
if (code) {
- com_err(whoami, code, "parsing user's name '%s'", user);
+ afs_com_err(whoami, code, "parsing user's name '%s'", user);
return KABADCMD;
}
if (!inst)
inst = instance;
code =
- ubik_Call(KAM_GetEntry, conn, 0, name, inst, KAMAJORVERSION, &tentry);
+ ubik_KAM_GetEntry(conn, 0, name, inst, KAMAJORVERSION, &tentry);
if (code) {
- com_err(whoami, code, "getting information for %s.%s", name, inst);
+ afs_com_err(whoami, code, "getting information for %s.%s", name, inst);
return code;
}
if (tentry.minor_version != KAMINORVERSION)
return 0;
}
+int
+ListUsers(struct cmd_syndesc *as, void *arock)
+{
+ struct kaident name;
+ afs_int32 index;
+ afs_int32 count;
+ afs_int32 next_index;
+ int code, all = 0, showa = 0;
+ int showkey = (as->parms[2].items != NULL);
+
+ if (as->parms[0].items)
+ all = 1;
+ if (as->parms[1].items) {
+ all = 1;
+ showa = 1;
+ }
+ for (index = 0; 1; index = next_index) {
+ code =
+ ubik_KAM_ListEntry(conn, 0, index, &next_index, &count,
+ &name);
+ if (code) {
+ afs_com_err(whoami, code, "calling KAM_ListEntry");
+ break;
+ }
+ if (!next_index)
+ break;
+ if (next_index < 0)
+ printf("next_index (%d) is negative: ", next_index);
+ if (strlen(name.name) == 0)
+ printf("name is zero length: ");
+ if (all)
+ DumpUser(name.name, NULL, showa, showkey, name.instance);
+ else
+ ka_PrintUserID("", name.name, name.instance, "\n");
+ }
+ return code;
+}
+
+
+int
+ExamineUser(struct cmd_syndesc *as, void *arock)
+{
+ int showkey = (as->parms[1].items != NULL);
+ return DumpUser(as->parms[0].items->data, arock, 0, showkey, NULL);
+}
+
+
struct OKerrors {
int code;
char *msg;
}
}
- printf(" : [%s] %s", error_table_name(code), error_message(code));
+ printf(" : [%s] %s", afs_error_table_name(code), afs_error_message(code));
switch (code) {
case UNOQUORUM:
printf(", wait one second\n");
}
int
-CreateUser(struct cmd_syndesc *as, char *arock)
+CreateUser(struct cmd_syndesc *as, void *arock)
{
int code;
char name[MAXKTCNAMELEN];
code = ka_ParseLoginName(as->parms[0].items->data, name, instance, 0);
if (code) {
- com_err(whoami, code, "parsing user's name '%s'",
+ afs_com_err(whoami, code, "parsing user's name '%s'",
as->parms[0].items->data);
return KABADCMD;
}
ka_StringToKey(as->parms[1].items->data, cell, &key);
do {
- code = ubik_Call(KAM_CreateUser, conn, 0, name, instance, key);
+ code = ubik_KAM_CreateUser(conn, 0, name, instance,
+ *ktc_to_EncryptionKey(&key));
if (!code)
return 0;
ka_PrintUserID("Creating user ", name, instance, " ");
}
int
-DeleteUser(struct cmd_syndesc *as, char *arock)
+DeleteUser(struct cmd_syndesc *as, void *arock)
{
int code;
char name[MAXKTCNAMELEN];
OKlist[0].code = 0;
code = ka_ParseLoginName(as->parms[0].items->data, name, instance, 0);
if (code) {
- com_err(whoami, code, "parsing user's name '%s'",
+ afs_com_err(whoami, code, "parsing user's name '%s'",
as->parms[0].items->data);
return KABADCMD;
}
do {
- code = ubik_Call(KAM_DeleteUser, conn, 0, name, instance);
+ code = ubik_KAM_DeleteUser(conn, 0, name, instance);
if (!code)
return 0;
ka_PrintUserID("Deleting user ", name, instance, " ");
str = lcstring(bitspec, str, sizeof(bitspec));
if (isdigit(*str)) {
if (strncmp(str, "0x", 2) == 0) /* 0x => hex */
- sscanf(str, "0x%lx", &f);
+ sscanf(str, "0x%lx", (long unsigned int *) &f);
else if (*str == '0') /* assume octal */
- sscanf(str, "%lo", &f);
+ sscanf(str, "%lo", (long unsigned int *) &f);
else /* just assume hex */
- sscanf(str, "%lx", &f);
+ sscanf(str, "%lx", (long unsigned int *) &f);
} else {
if (*str == '=') {
str++;
} else
addop = 1;
code =
- ubik_Call(KAM_GetEntry, conn, 0, name, inst, KAMAJORVERSION,
+ ubik_KAM_GetEntry(conn, 0, name, inst, KAMAJORVERSION,
&tentry);
if (code) {
- com_err(whoami, code,
+ afs_com_err(whoami, code,
"could get current flag value for %s.%s", name, inst);
return -1;
}
do {
tempwhen = 0;
code =
- ubik_CallIter(KAM_LockStatus, conn, UPUBIKONLY, &count, name,
- instance, &tempwhen, /*spares */ 0, 0, 0,
- 0);
+ ubik_CallIter(KAM_LockStatus, conn, UPUBIKONLY, &count, (long) name,
+ (long) instance, (long) &tempwhen, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
if (code) {
if (seriouserror(code))
- com_err(whoami, code, "");
+ afs_com_err(whoami, code, NULL);
} else if (tempwhen) { /* user is locked */
if (!*when || tempwhen < *when) {
*when = tempwhen;
}
int
-Unlock(struct cmd_syndesc *as, char *arock)
+Unlock(struct cmd_syndesc *as, void *arock)
{
afs_int32 code, rcode = 0;
afs_int32 count;
code = ka_ParseLoginName(as->parms[0].items->data, name, instance, 0);
if (code) {
- com_err(whoami, code, "parsing user's name '%s'",
+ afs_com_err(whoami, code, "parsing user's name '%s'",
as->parms[0].items->data);
return KABADCMD;
}
count = 0;
do {
- code = ubik_CallIter(KAM_Unlock, conn, 0, &count, name, instance,
- /*spares */ 0, 0, 0, 0);
+ code = ubik_CallIter(KAM_Unlock, conn, 0, &count, (long) name, (long) instance,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
if (code && (code != UNOSERVERS)) {
server = 0;
if (conn && conn->conns[count - 1]
- && conn->conns[count - 1]->peer) {
- server = conn->conns[count - 1]->peer->host;
+ && rx_PeerOf(conn->conns[count - 1])) {
+ server = rx_HostOf(rx_PeerOf(conn->conns[count - 1]));
}
- com_err(whoami, code,
+ afs_com_err(whoami, code,
"so %s.%s may still be locked (on server %d.%d.%d.%d)",
name, instance, ((server >> 24) & 0xFF),
((server >> 16) & 0xFF), ((server >> 8) & 0xFF),
}
int
-SetFields(struct cmd_syndesc *as, char *arock)
+SetFields(struct cmd_syndesc *as, void *arock)
{
int code;
char name[MAXKTCNAMELEN];
char instance[MAXKTCNAMELEN];
+ char *end;
afs_int32 flags = 0;
- Date expiration = 0;
+ afs_int32 expiration = 0;
afs_int32 lifetime = 0;
afs_int32 maxAssociates = -1;
afs_int32 pwexpiry = 0;
code = ka_ParseLoginName(as->parms[0].items->data, name, instance, 0);
if (code) {
- com_err(whoami, code, "parsing user's name '%s'",
+ afs_com_err(whoami, code, "parsing user's name '%s'",
as->parms[0].items->data);
return KABADCMD;
}
for (i = 0; i < 4; misc_auth_bytes[i++] = 0);
if (as->parms[4].items) {
- if (util_isint(as->parms[4].items->data))
- pwexpiry = atoi(as->parms[4].items->data);
- else {
+ pwexpiry = strtol(as->parms[4].items->data, &end, 10);
+ if (*end != '\0') {
fprintf(stderr,
"Password lifetime specified must be a non-negative decimal integer.\n");
pwexpiry = -1;
"Password lifetime range must be [0..254] days.\n");
fprintf(stderr, "Zero represents an unlimited lifetime.\n");
return KABADCMD;
- } else {
- misc_auth_bytes[0] = pwexpiry + 1;
}
+
+ misc_auth_bytes[0] = pwexpiry + 1;
}
if (as->parms[5].items) {
if (as->parms[6].items) {
int nfailures;
+ nfailures = strtol(as->parms[6].items->data, &end, 10);
- if (util_isint(as->parms[6].items->data)
- && ((nfailures = atoi(as->parms[6].items->data)) < 255)) {
- misc_auth_bytes[2] = nfailures + 1;
- } else {
+ if (*end != '\0' || nfailures < 0 || nfailures > 254) {
fprintf(stderr, "Failure limit must be in [0..254].\n");
fprintf(stderr, "Zero represents unlimited login attempts.\n");
return KABADCMD;
}
+ misc_auth_bytes[2] = nfailures + 1;
}
if (as->parms[7].items) {
if (was_spare || flags || expiration || lifetime || (maxAssociates >= 0))
code =
- ubik_Call(KAM_SetFields, conn, 0, name, instance, flags,
+ ubik_KAM_SetFields(conn, 0, name, instance, flags,
expiration, lifetime, maxAssociates, was_spare,
/* spare */ 0);
else {
return KABADCMD;
}
if (code)
- com_err(whoami, code, "calling KAM_SetFields for %s.%s", name,
+ afs_com_err(whoami, code, "calling KAM_SetFields for %s.%s", name,
instance);
return code;
}
int
-StringToKey(struct cmd_syndesc *as, char *arock)
+StringToKey(struct cmd_syndesc *as, void *arock)
{
afs_int32 code;
char realm[MAXKTCREALMLEN];
if (as->parms[1].items) {
code = ka_ExpandCell(as->parms[1].items->data, realm, 0 /*local */ );
if (code) {
- com_err(whoami, code,
+ afs_com_err(whoami, code,
"expanding %s as cell name, attempting to continue",
as->parms[1].items->data);
}
ucstring(realm, realm, sizeof(realm));
} else {
- if (code = DefaultCell())
+ if ((code = DefaultCell()))
return code;
ucstring(realm, cell, sizeof(realm));
}
ka_PrintBytes((char *)&key, sizeof(key));
printf("'.\n");
- des_string_to_key(as->parms[0].items->data, &key);
+ DES_string_to_key(as->parms[0].items->data, ktc_to_cblockptr(&key));
printf("Converting %s with the DES string to key yields key='",
as->parms[0].items->data);
}
int
-SetPassword(struct cmd_syndesc *as, char *arock)
+SetPassword(struct cmd_syndesc *as, void *arock)
{
int code;
char name[MAXKTCNAMELEN];
code = ka_ParseLoginName(as->parms[0].items->data, name, instance, realm);
if (code) {
- com_err(whoami, code, "parsing user's name '%s'",
+ afs_com_err(whoami, code, "parsing user's name '%s'",
as->parms[0].items->data);
return KABADCMD;
}
if (as->parms[3].items)
sscanf(as->parms[3].items->data, "%d", &kvno);
-#ifdef AFS_S390_LINUX20_ENV
- code = ubik_Call(KAM_SetPassword, conn, 0, name, instance, kvno, 0, key);
-#else
- code = ubik_Call(KAM_SetPassword, conn, 0, name, instance, kvno, key);
-#endif
+ code = ubik_KAM_SetPassword(conn, 0, name, instance, kvno,
+ *ktc_to_EncryptionKey(&key));
if (code)
- com_err(whoami, code, "so can't set password for %s.%s", name,
+ afs_com_err(whoami, code, "so can't set password for %s.%s", name,
instance);
return code;
}
if (left) {
bad_name:
code = KABADNAME;
- com_err(whoami, code, "PrintName: principal name was '%s'.'%s'@'%s'",
+ afs_com_err(whoami, code, "PrintName: principal name was '%s'.'%s'@'%s'",
name, inst, acell);
return code;
}
left = ka_ConvertBytes(buf + nlen, buflen - nlen, acell, len);
if (left)
goto bad_name;
- nlen += len;
}
}
return 0;
/* get the ticket info itself */
code = ktc_GetToken(server, &token, sizeof(token), &client);
if (code) {
- com_err(whoami, code, "failed to get token info for server %s",
+ afs_com_err(whoami, code, "failed to get token info for server %s",
PrintedPrincipal(server));
return code;
}
return 0;
}
-static
-GetTicket(struct cmd_syndesc *as, char *arock)
+static int
+GetTicket(struct cmd_syndesc *as, void *arock)
{
int code;
struct ktc_principal server;
ka_ParseLoginName(as->parms[0].items->data, server.name,
server.instance, server.cell);
if (code) {
- com_err(whoami, code, "parsing user's name '%s'",
+ afs_com_err(whoami, code, "parsing user's name '%s'",
as->parms[0].items->data);
return KABADCMD;
}
if (server.cell[0] == 0) {
- if (code = DefaultCell())
+ if ((code = DefaultCell()))
return code;
strcpy(server.cell, cell);
} else {
code = ka_ExpandCell(server.cell, server.cell, 0 /*local */ );
if (code) {
- com_err(whoami, code, "Can't expand cell name");
+ afs_com_err(whoami, code, "Can't expand cell name");
return code;
}
}
ka_GetServerToken(server.name, server.instance, server.cell, life,
&token, /*new */ 1, /*dosetpag */ 0);
if (code)
- com_err(whoami, code, "getting ticket for %s",
+ afs_com_err(whoami, code, "getting ticket for %s",
PrintedPrincipal(&server));
else {
code = ListTicket(&server, /*verbose */ 1);
return code;
}
-static
-GetPassword(struct cmd_syndesc *as, char *arock)
+static int
+GetPassword(struct cmd_syndesc *as, void *arock)
{
int code;
char name[MAXKTCNAMELEN];
code = ka_ParseLoginName(as->parms[0].items->data, name, 0, 0);
if (code) {
abort:
- com_err(whoami, code,
+ afs_com_err(whoami, code,
"getting %s's password via loopback connection to GetPassword",
name);
/* if we got a timeout, print a clarification, too */
if (code)
goto abort;
sc = rxnull_NewClientSecurityObject();
- si = RX_SCINDEX_NULL;
+ si = RX_SECIDX_NULL;
conns[0] =
rx_NewConnection(htonl(INADDR_LOOPBACK), htons(AFSCONF_KAUTHPORT),
KA_MAINTENANCE_SERVICE, sc, si);
if (code)
goto abort;
}
- code = ubik_Call(KAM_GetPassword, lpbkConn, 0, name, &key);
+ code = ubik_KAM_GetPassword(lpbkConn, 0, name,
+ ktc_to_EncryptionKey(&key));
/* Lets close down the ubik_Client connection now */
ubik_ClientDestroy(lpbkConn);
if (code)
}
int
-GetRandomKey(struct cmd_syndesc *as, char *arock)
+GetRandomKey(struct cmd_syndesc *as, void *arock)
{
int code;
struct ktc_encryptionKey key;
- code = ubik_Call(KAM_GetRandomKey, conn, 0, &key);
+ code = ubik_KAM_GetRandomKey(conn, 0, ktc_to_EncryptionKey(&key));
if (code)
- com_err(whoami, code, "so can't get random key");
+ afs_com_err(whoami, code, "so can't get random key");
else {
int i;
printf("Key: ");
ka_PrintBytes((char *)&key, sizeof(key));
printf(" (");
for (i = 0; i < sizeof(key); i++) {
- printf("%0.2x", ((char *)&key)[i] & 0xff);
+ printf("%.2x", ((char *)&key)[i] & 0xff);
if (i == 3)
printf(" ");
else if (i != 7)
}
int
-Statistics(struct cmd_syndesc *as, char *arock)
+Statistics(struct cmd_syndesc *as, void *arock)
{
int code;
kasstats statics;
char bob[KA_TIMESTR_LEN];
code =
- ubik_Call(KAM_GetStats, conn, 0, KAMAJORVERSION, &admins, &statics,
+ ubik_KAM_GetStats(conn, 0, KAMAJORVERSION, &admins, &statics,
&dynamics);
if (code) {
printf("call to GetStats failed: %s\n", ka_ErrorString(code));
printf("Hash table utilization = %f%%\n",
(double)dynamics.hashTableUtilization / 100.0);
ka_timestr(dynamics.start_time, bob, KA_TIMESTR_LEN);
- printf("From host %lx started at %s:\n", dynamics.host, bob);
+ printf("From host %lx started at %s:\n",
+ afs_printable_uint32_lu(dynamics.host), bob);
#define print_stat(name) if (dynamics.name.requests) printf (" of %d requests for %s, %d were aborted.\n", dynamics.name.requests, # name, dynamics.name.aborts)
print_stat(Authenticate);
}
int
-DebugInfo(struct cmd_syndesc *as, char *arock)
+DebugInfo(struct cmd_syndesc *as, void *arock)
{
int code;
struct ka_debugInfo info;
if (code) {
struct afsconf_cell cellinfo;
- com_err(whoami, code, "couldn't find host %s in cell %s",
+ afs_com_err(whoami, code, "couldn't find host %s in cell %s",
as->parms[0].items->data, cell);
code = ka_GetServers(cell, &cellinfo);
if (code)
- com_err(whoami, code, "getting servers in cell %s", cell);
+ afs_com_err(whoami, code, "getting servers in cell %s", cell);
else {
printf("Servers in cell %s, are:\n", cell);
for (i = 0; i < cellinfo.numServers; i++)
}
return code;
}
- code = ubik_Call(KAM_Debug, iConn, 0, KAMAJORVERSION, 0, &info);
+ code = ubik_KAM_Debug(iConn, 0, KAMAJORVERSION, 0, &info);
ubik_ClientDestroy(iConn);
} else
- code = ubik_Call(KAM_Debug, conn, 0, KAMAJORVERSION, 0, &info);
+ code = ubik_KAM_Debug(conn, 0, KAMAJORVERSION, 0, &info);
if (code) {
- com_err(whoami, code, "call to Debug failed");
+ afs_com_err(whoami, code, "call to Debug failed");
return code;
}
now = time(0);
timeOffset, now - start);
}
ka_timestr(info.startTime, bob, KA_TIMESTR_LEN);
- printf("From host %lx started %sat %s:\n", info.host,
+ printf("From host %lx started %sat %s:\n",
+ afs_printable_uint32_lu(info.host),
(info.noAuth ? "w/o authorization " : ""), bob);
ka_timestr(info.lastTrans, bob, KA_TIMESTR_LEN);
printf("Last trans was %s at %s\n", info.lastOperation, bob);
printf("Next autoCPW at %s or in %d updates.\n", bob,
info.updatesRemaining);
if (info.cheader_lock || info.keycache_lock)
- printf("locks: cheader %08lx, keycache %08lx\n", info.cheader_lock,
- info.keycache_lock);
+ printf("locks: cheader %08lx, keycache %08lx\n",
+ afs_printable_uint32_lu(info.cheader_lock),
+ afs_printable_uint32_lu(info.keycache_lock));
printf("Last authentication for %s, last admin user was %s\n",
info.lastAuth, info.lastAdmin);
printf("Last TGS op was a %s ticket was for %s\n", info.lastTGSServer,
}
int
-Interactive(struct cmd_syndesc *as, char *arock)
+Interactive(struct cmd_syndesc *as, void *arock)
{
finished = 0;
return 0;
}
int
-Quit(struct cmd_syndesc *as, char *arock)
+Quit(struct cmd_syndesc *as, void *arock)
{
finished = 1;
return 0;
}
int
-MyAfterProc(struct cmd_syndesc *as)
+MyAfterProc(struct cmd_syndesc *as, void *arock)
{
if (!strcmp(as->name, "help"))
- return;
+ return 0;
/* Determine if we need to destory the ubik connection.
- * Closing it avoids resends of packets.
+ * Closing it avoids resends of packets.
*/
if (conn) {
ubik_ClientDestroy(conn);
char name[MAXKTCNAMELEN];
char instance[MAXKTCNAMELEN];
char newCell[MAXKTCREALMLEN];
-afs_int32 serverList[MAXSERVERS];
+afs_uint32 serverList[MAXSERVERS];
int
-NoAuth(struct cmd_syndesc *as, char *arock)
+NoAuth(struct cmd_syndesc *as, void *arock)
{
noauth = 1;
return 0;
}
static int
-MyBeforeProc(struct cmd_syndesc *as, char *arock)
+MyBeforeProc(struct cmd_syndesc *as, void *arock)
{
- extern struct passwd *getpwuid();
- struct passwd *pw;
struct ktc_encryptionKey key;
- struct ktc_principal auth_server, auth_token, client;
+ struct ktc_principal auth_server, client;
+ struct ktc_token auth_token;
char realm[MAXKTCREALMLEN];
struct ktc_token token, *pToken;
/* MyAfterProc() destroys the conn, but just to be sure */
if (conn) {
- code = ubik_ClientDestroy(conn);
+ ubik_ClientDestroy(conn);
conn = 0;
}
ka_ParseLoginName(as->parms[12].items->data, name, instance,
newCell);
if (code) {
- com_err(whoami, code, "parsing user's name '%s'",
+ afs_com_err(whoami, code, "parsing user's name '%s'",
as->parms[12].items->data);
return code;
}
}
#else
/* No explicit name provided: use Unix uid. */
- pw = getpwuid(getuid());
- if (pw == 0) {
+ struct passwd *pw = getpwuid(getuid());
+ if (pw == NULL) {
printf("Can't figure out your name from your user id.\n");
return KABADCMD;
}
}
code = ka_ExpandCell(newCell, newCell, 0 /*local */ );
if (code) {
- com_err(whoami, code, "Can't expand cell name");
+ afs_com_err(whoami, code, "Can't expand cell name");
return code;
}
strcpy(cell, newCell);
ap[i] = ip->data;
code = ubik_ParseClientList(i, ap, serverList);
if (code) {
- com_err(whoami, code, "could not parse server list");
+ afs_com_err(whoami, code, "could not parse server list");
return code;
}
ka_ExplicitCell(cell, serverList);
sprintf(msg, "Administrator's (%s) Password: ", name);
else
sprintf(msg, "Password for %s: ", name);
- code = read_pw_string(passwd, sizeof(passwd), msg, 0);
+ code = UI_UTIL_read_pw_string(passwd, sizeof(passwd), msg, 0);
if (code)
code = KAREADPW;
else if (strlen(passwd) == 0)
code = KANULLPASSWORD;
if (code) {
- com_err(whoami, code, "reading password");
+ afs_com_err(whoami, code, "reading password");
return code;
}
}
ka_GetAdminToken(name, instance, cell, &key, KA_SIXHOURS,
&token, 0 /* !new */ );
if (code == KABADREQUEST) {
- des_string_to_key(passwd, &key);
+ DES_string_to_key(passwd, ktc_to_cblockptr(&key));
code =
ka_GetAdminToken(name, instance, cell, &key, KA_SIXHOURS,
&token, 0 /* !new */ );
reason = "Authentication Server was unavailable";
break;
default:
- reason = (char *)error_message(code);
+ reason = (char *)afs_error_message(code);
}
fprintf(stderr,
"%s: Auth. as %s to AuthServer failed: %s\nProceeding w/o authentication\n",
/*Don't need pwd expiration info here */
);
if (acode && (acode != code)) /* codes are usually the same */
- com_err(whoami, code,
+ afs_com_err(whoami, code,
"getting Authentication token for %s",
PrintedName(name, instance, cell));
}
pToken = ((token.ticketLen == 0) ? 0 : &token);
code = ka_AuthServerConn(cell, KA_MAINTENANCE_SERVICE, pToken, &conn);
if (code && pToken) {
- com_err(whoami, code,
+ afs_com_err(whoami, code,
"connecting to AuthServer: now trying w/o authentication");
code = ka_AuthServerConn(cell, KA_MAINTENANCE_SERVICE, 0, &conn);
if (code)
- com_err(whoami, code,
+ afs_com_err(whoami, code,
"making unauthenticated connection to AuthServer");
}
if (code) {
- com_err(whoami, code,
+ afs_com_err(whoami, code,
"Couldn't establish connection to Authentication Server");
return code;
}
strcpy(msg, p + 1);
strcat(msg, ": ");
- code = read_pw_string(password, sizeof(password), msg, 1);
+ code = UI_UTIL_read_pw_string(password, sizeof(password), msg, 1);
if (code)
code = KAREADPW;
else if (strlen(password) == 0)
code = KANULLPASSWORD;
if (code) {
- com_err(whoami, code, "prompting for %s", p + 1);
+ afs_com_err(whoami, code, "prompting for %s", p + 1);
return code;
}
- ip = (struct cmd_item *)malloc(sizeof(struct cmd_item));
- ip->data = (char *)malloc(strlen(password) + 1);
+ ip = malloc(sizeof(struct cmd_item));
+ ip->data = strdup(password);
ip->next = 0;
- strcpy(ip->data, password);
as->parms[i].items = ip;
}
}
/* These are some helpful command that deal with the cache managers tokens. */
-static
-ForgetTicket(struct cmd_syndesc *as, char *arock)
+static int
+ForgetTicket(struct cmd_syndesc *as, void *arock)
{
afs_int32 code;
ka_ParseLoginName(name, server.name, server.instance,
server.cell);
if (code) {
- com_err(whoami, code, "couldn't interpret name '%s'", name);
+ afs_com_err(whoami, code, "couldn't interpret name '%s'", name);
return code;
}
if (server.cell[0] == 0) {
} else {
code = ka_ExpandCell(server.cell, server.cell, 0 /*local */ );
if (code) {
- com_err(whoami, code, "Can't expand cell name");
+ afs_com_err(whoami, code, "Can't expand cell name");
return code;
}
}
code = ktc_ForgetToken(&server);
if (code) {
- com_err(whoami, code, "couldn't remove tokens for %s",
+ afs_com_err(whoami, code, "couldn't remove tokens for %s",
PrintedPrincipal(&server));
return code;
}
}
code = ktc_ForgetAllTokens();
if (code) {
- com_err(whoami, code, "couldn't delete all tokens");
+ afs_com_err(whoami, code, "couldn't delete all tokens");
return code;
}
}
#endif
code = ktc_ForgetAllTokens();
if (code) {
- com_err(whoami, code, "couldn't delete all tokens");
+ afs_com_err(whoami, code, "couldn't delete all tokens");
return code;
}
return 0;
}
-static
-ListTickets(struct cmd_syndesc *as, char *arock)
+static int
+ListTickets(struct cmd_syndesc *as, void *arock)
{
afs_int32 code = 0;
int index, newIndex;
ka_ParseLoginName(name, server.name, server.instance,
server.cell);
if (code) {
- com_err(whoami, code, "couldn't interpret name '%s'", name);
+ afs_com_err(whoami, code, "couldn't interpret name '%s'", name);
return code;
}
if (server.cell[0] == 0) {
- if (code = DefaultCell())
+ if ((code = DefaultCell()))
return code;
strcpy(server.cell, cell);
} else {
code = ka_ExpandCell(server.cell, server.cell, 0 /*local */ );
if (code) {
- com_err(whoami, code, "Can't expand cell name");
+ afs_com_err(whoami, code, "Can't expand cell name");
return code;
}
}
}
static void
-add_std_args(register struct cmd_syndesc *ts)
+add_std_args(struct cmd_syndesc *ts)
{
cmd_Seek(ts, 12);
/* 12 */ cmd_AddParm(ts, "-admin_username", CMD_SINGLE, CMD_OPTIONAL,
afs_int32
ka_AdminInteractive(int cmd_argc, char *cmd_argv[])
{
- register int code;
- register struct cmd_syndesc *ts;
+ int code;
+ struct cmd_syndesc *ts;
char line[BUFSIZ];
afs_int32 argc;
cmd_SetBeforeProc(MyBeforeProc, NULL);
cmd_SetAfterProc(MyAfterProc, NULL);
- ts = cmd_CreateSyntax("interactive", Interactive, 0,
+ ts = cmd_CreateSyntax("interactive", Interactive, NULL, 0,
"enter interactive mode");
add_std_args(ts);
- ts = cmd_CreateSyntax("noauthentication", NoAuth, 0,
- "connect to AuthServer w/o using token");
+ cmd_CreateSyntax("noauthentication", NoAuth, NULL, 0,
+ "connect to AuthServer w/o using token");
- ts = cmd_CreateSyntax("list", ListUsers, 0, "list all users in database");
+ ts = cmd_CreateSyntax("list", ListUsers, NULL, 0,
+ "list all users in database");
cmd_AddParm(ts, "-long", CMD_FLAG, CMD_OPTIONAL,
"show detailed info about each user");
cmd_AddParm(ts, "-showadmin", CMD_FLAG, CMD_OPTIONAL,
add_std_args(ts);
cmd_CreateAlias(ts, "ls");
- ts = cmd_CreateSyntax("examine", ExamineUser, 0,
+ ts = cmd_CreateSyntax("examine", ExamineUser, NULL, 0,
"examine the entry for a user");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "name of user");
cmd_AddParm(ts, "-showkey", CMD_FLAG, CMD_OPTIONAL,
"show the user's actual key rather than the checksum");
add_std_args(ts);
- ts = cmd_CreateSyntax("create", CreateUser, 0,
+ ts = cmd_CreateSyntax("create", CreateUser, NULL, 0,
"create an entry for a user");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "name of user");
cmd_AddParm(ts, "-initial_password", CMD_SINGLE, CMD_OPTIONAL,
"initial password");
add_std_args(ts);
- ts = cmd_CreateSyntax("delete", DeleteUser, 0, "delete a user");
+ ts = cmd_CreateSyntax("delete", DeleteUser, NULL, 0, "delete a user");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "name of user");
add_std_args(ts);
cmd_CreateAlias(ts, "rm");
- ts = cmd_CreateSyntax("setfields", SetFields, 0,
+ ts = cmd_CreateSyntax("setfields", SetFields, NULL, 0,
"set various fields in a user's entry");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "name of user");
cmd_AddParm(ts, "-flags", CMD_SINGLE, CMD_OPTIONAL,
cmd_CreateAlias(ts, "sf");
- ts = cmd_CreateSyntax("unlock", Unlock, 0,
+ ts = cmd_CreateSyntax("unlock", Unlock, NULL, 0,
"Enable authentication ID after max failed attempts exceeded");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "authentication ID");
add_std_args(ts);
- ts = cmd_CreateSyntax("stringtokey", StringToKey, 0,
+ ts = cmd_CreateSyntax("stringtokey", StringToKey, NULL, 0,
"convert a string to a key");
cmd_AddParm(ts, "-string", CMD_SINGLE, 0, "password string");
cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "cell name");
- ts = cmd_CreateSyntax("setpassword", SetPassword, 0,
+ ts = cmd_CreateSyntax("setpassword", SetPassword, NULL, 0,
"set a user's password");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "name of user");
cmd_AddParm(ts, "-new_password", CMD_SINGLE, CMD_OPTIONAL,
cmd_CreateAlias(ts, "setpasswd");
#endif
- /* set a user's key */
- ts = cmd_CreateSyntax("setkey", SetPassword, 0, (char *)CMD_HIDDEN);
+ ts = cmd_CreateSyntax("setkey", SetPassword, NULL, CMD_HIDDEN, "set a user's key");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "name of user");
cmd_Seek(ts, 2);
cmd_AddParm(ts, "-new_key", CMD_SINGLE, 0, "eight byte new key");
cmd_AddParm(ts, "-kvno", CMD_SINGLE, CMD_OPTIONAL, "key version number");
add_std_args(ts);
- /* get a user's password */
- ts = cmd_CreateSyntax("getpassword", GetPassword, 0, (char *)CMD_HIDDEN);
+ ts = cmd_CreateSyntax("getpassword", GetPassword, NULL, CMD_HIDDEN, "get a user's password");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "name of user");
/* don't take standard args */
/* add_std_args (ts); */
cmd_CreateAlias(ts, "getpasswd");
#endif
- /* get a random key */
- ts = cmd_CreateSyntax("getrandomkey", GetRandomKey, 0,
- (char *)CMD_HIDDEN);
+ ts = cmd_CreateSyntax("getrandomkey", GetRandomKey, NULL, CMD_HIDDEN, "get a random key");
add_std_args(ts);
- /* get a ticket for a specific server */
- ts = cmd_CreateSyntax("getticket", GetTicket, 0, (char *)CMD_HIDDEN);
+ ts = cmd_CreateSyntax("getticket", GetTicket, NULL, CMD_HIDDEN, "get a ticket for a specific server");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "name of server");
cmd_AddParm(ts, "-lifetime", CMD_SINGLE, CMD_OPTIONAL, "ticket lifetime");
add_std_args(ts);
- ts = cmd_CreateSyntax("statistics", Statistics, 0,
+ ts = cmd_CreateSyntax("statistics", Statistics, NULL, 0,
"show statistics for AuthServer");
add_std_args(ts);
- /* show debugging info from AuthServer */
- ts = cmd_CreateSyntax("debuginfo", DebugInfo, 0, (char *)CMD_HIDDEN);
+ ts = cmd_CreateSyntax("debuginfo", DebugInfo, NULL, CMD_HIDDEN, "show debugging info from AuthServer");
cmd_AddParm(ts, "-hostname", CMD_SINGLE, CMD_OPTIONAL,
"authentication server host name");
add_std_args(ts);
- ts = cmd_CreateSyntax("forgetticket", ForgetTicket, 0,
+ ts = cmd_CreateSyntax("forgetticket", ForgetTicket, NULL, 0,
"delete user's tickets");
#ifdef notdef
cmd_AddParm(ts, "-name", CMD_SINGLE, (CMD_OPTIONAL | CMD_HIDE),
#endif
cmd_AddParm(ts, "-all", CMD_FLAG, CMD_OPTIONAL, "delete all tickets");
- ts = cmd_CreateSyntax("listtickets", ListTickets, 0,
+ ts = cmd_CreateSyntax("listtickets", ListTickets, NULL, 0,
"show all cache manager tickets");
cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_OPTIONAL, "name of server");
cmd_AddParm(ts, "-long", CMD_FLAG, CMD_OPTIONAL,
"show session key and ticket");
- ts = cmd_CreateSyntax("quit", Quit, 0, "exit program");
+ cmd_CreateSyntax("quit", Quit, NULL, 0, "exit program");
finished = 1;
conn = 0; /* no connection yet */
strcpy(whoami, "kas");
- if (code = cmd_Dispatch(cmd_argc, cmd_argv)) {
+ if ((code = cmd_Dispatch(cmd_argc, cmd_argv))) {
return code;
}
code =
cmd_ParseLine(line, argv, &argc, sizeof(argv) / sizeof(argv[0]));
if (code) {
- com_err(whoami, code, "parsing line: '%s'", line);
+ afs_com_err(whoami, code, "parsing line: '%s'", line);
return code;
}
code = cmd_Dispatch(argc, argv);