convert to use slc; also add stash subcommand
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13970 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
141
kadmin/kadmin.c
141
kadmin/kadmin.c
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997 - 2001, 2003 Kungliga Tekniska H<>gskolan
|
||||
* Copyright (c) 1997 - 2004 Kungliga Tekniska H<>gskolan
|
||||
* (Royal Institute of Technology, Stockholm, Sweden).
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -81,91 +81,6 @@ static struct getargs args[] = {
|
||||
|
||||
static int num_args = sizeof(args) / sizeof(args[0]);
|
||||
|
||||
static SL_cmd commands[] = {
|
||||
/* commands that are only available with `-l' */
|
||||
{
|
||||
"dump", dump, "dump [file]",
|
||||
"Dumps the database in a human readable format to the\n"
|
||||
"specified file, or the standard out."
|
||||
},
|
||||
{
|
||||
"load", load, "load file",
|
||||
"Loads a previously dumped file."
|
||||
},
|
||||
{
|
||||
"merge", merge, "merge file" ,
|
||||
"Merges the contents of a dump file into the database."
|
||||
},
|
||||
{
|
||||
"init", init, "init realm...",
|
||||
"Initializes the default principals for a realm.\n"
|
||||
"Creates the database if necessary."
|
||||
},
|
||||
/* common commands */
|
||||
{
|
||||
"add", add_new_key, "add principal" ,
|
||||
"Adds a principal to the database."
|
||||
},
|
||||
{ "add_new_key"},
|
||||
{ "ank"},
|
||||
{
|
||||
"passwd", cpw_entry, "passwd expression..." ,
|
||||
"Changes the password of one or more principals\n"
|
||||
"matching the expressions."
|
||||
},
|
||||
{ "change_password"},
|
||||
{ "cpw"},
|
||||
{
|
||||
"delete", del_entry, "delete expression...",
|
||||
"Deletes all principals matching the expressions."
|
||||
},
|
||||
{ "del_entry" },
|
||||
{ "del" },
|
||||
{
|
||||
"del_enctype", del_enctype, "del_enctype principal enctype...",
|
||||
"Delete all the mentioned enctypes for principal."
|
||||
},
|
||||
{
|
||||
"ext_keytab", ext_keytab, "ext_keytab expression...",
|
||||
"Extracts the keys of all principals matching the expressions,\n"
|
||||
"and stores them in a keytab."
|
||||
},
|
||||
{
|
||||
"get", get_entry, "get expression...",
|
||||
"Shows information about principals matching the expressions."
|
||||
},
|
||||
{ "get_entry" },
|
||||
{
|
||||
"rename", rename_entry, "rename source target",
|
||||
"Renames `source' to `target'."
|
||||
},
|
||||
{
|
||||
"modify", mod_entry, "modify principal",
|
||||
"Modifies some attributes of the specified principal."
|
||||
},
|
||||
{
|
||||
"privileges", get_privs, "privileges",
|
||||
"Shows which kinds of operations you are allowed to perform."
|
||||
},
|
||||
{ "privs" },
|
||||
{
|
||||
"password-quality",
|
||||
password_quality,
|
||||
"password-quality principal password",
|
||||
"Try run the password quality function locally "
|
||||
"(not doing RPC out to server)."
|
||||
},
|
||||
{ "pwq" },
|
||||
{
|
||||
"list", list_princs, "list expression...",
|
||||
"Lists principals in a terse format. The same as `get -t'."
|
||||
},
|
||||
{ "help", help, "help"},
|
||||
{ "?"},
|
||||
{ "exit", exit_kadmin, "exit"},
|
||||
{ "quit" },
|
||||
{ NULL}
|
||||
};
|
||||
|
||||
krb5_context context;
|
||||
void *kadm_handle;
|
||||
@@ -173,14 +88,40 @@ void *kadm_handle;
|
||||
static SL_cmd *actual_cmds;
|
||||
|
||||
int
|
||||
help(int argc, char **argv)
|
||||
help(void *opt, int argc, char **argv)
|
||||
{
|
||||
sl_help(actual_cmds, argc, argv);
|
||||
if(argc == 0) {
|
||||
sl_help(actual_cmds, 1, argv - 1 /* XXX */);
|
||||
} else {
|
||||
SL_cmd *c = sl_match (actual_cmds, argv[0], 0);
|
||||
if(c == NULL) {
|
||||
printf ("No such command: %s. "
|
||||
"Try \"help\" for a list of commands\n",
|
||||
argv[0]);
|
||||
} else {
|
||||
if(c->func) {
|
||||
char *fake[] = { argv[0], "--help", NULL };
|
||||
(*c->func)(2, fake);
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
if(c->help && *c->help)
|
||||
fprintf (stderr, "%s\n", c->help);
|
||||
if((++c)->name && c->func == NULL) {
|
||||
int f = 0;
|
||||
fprintf (stderr, "Synonyms:");
|
||||
while (c->name && c->func == NULL) {
|
||||
fprintf (stderr, "%s%s", f ? ", " : " ", (c++)->name);
|
||||
f = 1;
|
||||
}
|
||||
fprintf (stderr, "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
exit_kadmin (int argc, char **argv)
|
||||
exit_kadmin (void *opt, int argc, char **argv)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@@ -193,30 +134,12 @@ usage(int ret)
|
||||
}
|
||||
|
||||
int
|
||||
get_privs(int argc, char **argv)
|
||||
get_privs(void *opt, int argc, char **argv)
|
||||
{
|
||||
u_int32_t privs;
|
||||
char str[128];
|
||||
kadm5_ret_t ret;
|
||||
|
||||
int help_flag = 0;
|
||||
struct getargs args[] = {
|
||||
{ "help", 'h', arg_flag, NULL }
|
||||
};
|
||||
int num_args = sizeof(args) / sizeof(args[0]);
|
||||
int optind = 0;
|
||||
|
||||
args[0].value = &help_flag;
|
||||
|
||||
if(getarg(args, num_args, argc, argv, &optind)) {
|
||||
arg_printusage (args, num_args, "privileges", NULL);
|
||||
return 0;
|
||||
}
|
||||
if(help_flag) {
|
||||
arg_printusage (args, num_args, "privileges", NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = kadm5_get_privs(kadm_handle, &privs);
|
||||
if(ret)
|
||||
krb5_warn(context, ret, "kadm5_get_privs");
|
||||
@@ -314,7 +237,7 @@ main(int argc, char **argv)
|
||||
KADM5_ADMIN_SERVICE,
|
||||
&conf, 0, 0,
|
||||
&kadm_handle);
|
||||
actual_cmds = commands + 4; /* XXX */
|
||||
actual_cmds = commands + 5; /* XXX */
|
||||
} else {
|
||||
ret = kadm5_c_init_with_password_ctx(context,
|
||||
client_name,
|
||||
|
Reference in New Issue
Block a user