From: Theodore Tso Date: Fri, 26 Jul 1996 04:46:14 +0000 (+0000) Subject: Remove v5client, which is the old client for the old kadmin system X-Git-Tag: krb5-1.0-beta7~249 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=9de287e92e6b61de22540cc178bd4f0375dc2579;p=krb5.git Remove v5client, which is the old client for the old kadmin system git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@8833 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/kadmin/v5client/.Sanitize b/src/kadmin/v5client/.Sanitize deleted file mode 100644 index f85c41009..000000000 --- a/src/kadmin/v5client/.Sanitize +++ /dev/null @@ -1,43 +0,0 @@ -# Sanitize.in for Kerberos V5 - -# Each directory to survive it's way into a release will need a file -# like this one called "./.Sanitize". All keyword lines must exist, -# and must exist in the order specified by this file. Each directory -# in the tree will be processed, top down, in the following order. - -# Hash started lines like this one are comments and will be deleted -# before anything else is done. Blank lines will also be squashed -# out. - -# The lines between the "Do-first:" line and the "Things-to-keep:" -# line are executed as a /bin/sh shell script before anything else is -# done in this - -Do-first: - -# All files listed between the "Things-to-keep:" line and the -# "Files-to-sed:" line will be kept. All other files will be removed. -# Directories listed in this section will have their own Sanitize -# called. Directories not listed will be removed in their entirety -# with rm -rf. - -Things-to-keep: - -.cvsignore -ChangeLog -Makefile.in -configure -configure.in -convert.c -kadmin5.M -kadmin5.c -kadmin5.h -kadmin5_ct.ct -network.c -ss_wrapper.c - -Things-to-lose: - -Do-last: - -# End of file. diff --git a/src/kadmin/v5client/ChangeLog b/src/kadmin/v5client/ChangeLog deleted file mode 100644 index 3106ca7aa..000000000 --- a/src/kadmin/v5client/ChangeLog +++ /dev/null @@ -1,136 +0,0 @@ -Thu Jun 13 21:42:36 1996 Tom Yu - - * configure.in: remove ref to SS_RULES - -Sun Mar 31 17:49:01 1996 Mark Eichin - - * kadmin5.c (kadmin_extract_snk4): new command to get the key data - out for an SNK4 device. Prints the octal digits as they'd be - entered into the hardware, and the checksum printed by the device - in response. - -Fri Sep 29 14:44:24 1995 Mark Eichin - - * kadmin5.c (kadmin_startup): initialize action before strcat'ing - on to it. - -Wed Sep 06 14:20:57 1995 Chris Provenzano (proven@mit.edu) - - * kadmin5.c : s/keytype/enctype/g, s/KEYTYPE/ENCTYPE/g - -Mon Aug 21 17:02:52 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5.M - Remove description of flags since this should be in a - common manpage. - - -Tue Aug 8 17:27:04 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5_ct.ct - Add add_key_type and del_key_type to add/delete a - particular key/salt pair. - * kadmin5.c - Add kadmin_{add,del}_key_type to support add_key_type - and del_key_type commands. Change -l processing to use - krb5_string_to_deltat(). - * kadmin5.h - Update prototypes and remove obsolete functions. - * network.c - Add new protocol error message support. - * kadmin5.M - Remove descriptions of obsolete syntax or syntax which - has been made common among utilities. - - -Fri Aug 4 16:13:20 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5.c - Replace explicit hand-decoded integers with macros. - - -Thu Aug 3 11:37:39 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5,convert.c - Update to use new database entry format and string - conversion functions. - -Fri Jul 7 16:00:34 EDT 1995 Paul Park (pjpark@mit.edu) - * Makefile.in - Remove all explicit library handling and LDFLAGS. - * configure.in - Add USE_ and KRB5_LIBRARIES. - - -Fri Jun 30 14:33:31 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5.c - Add usage of compile(3) regular expression interfaces - if present. Also call regfree if using regcomp. - * configure.in - Add --with-dbm to select between Berkeley and DBM - KDC database format. - -Tue Jun 27 18:50:29 1995 Sam Hartman (hartmans@tardis) - - * Makefile.in: Remove -g from linker flags. - -Fri Jun 16 20:28:38 1995 Sam Hartman - - * kadmin5.c (kadmin_cleanup): Return success always; nothing - called has a useful return value, and the previous behavior - (returning an undefined value) caused periodic failure of the - regression tests. - -Thu Jun 15 17:54:04 EDT 1995 Paul Park (pjpark@mit.edu) - * Makefile.in - Change explicit library names to -l form, and - change target link line to use $(LD) and associated flags. - Also, remove DBMLIB, it was not used. - * configure.in - Remove dbm library checks, these are no longer needed - with the Berkeley database code. Also, add shared library - usage check. - - - -Sat Jun 10 23:03:41 1995 Tom Yu (tlyu@dragons-lair) - - * network.c: krb5_auth_context redefinitions - -Fri Jun 9 23:04:56 1995 Theodore Y. Ts'o - - * kadmin5.c: Change the default kadmin instance to be "admin" - -Fri Jun 9 19:05:57 1995 - - * configure.in: Remove standardized set of autoconf macros, which - are now handled by CONFIG_RULES. - -Mon Jun 5 16:00:56 EDT 1995 Paul Park (pjpark@mit.edu) - * network.c : add ability to perform net_connect() whenever the caller - feels like it. This controls when the administrator is - prompted for his/her password. Also fix bug when -m is not - specified and -c ccache is specified. - * kadmin5.c : break out calls to net_connect() to be before krb5_read - _password() for kadmin_add_new_key() and kadmin_change_pwd(). - * kadmin5.h : Add new argument to net_do_proto(). - - -Mon Jun 5 14:11:58 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5.c - Add support for specifiable credentials caches and - ticket lifetimes. - * network.c - Use new krb5_adm_connect() calling sequence. - * kadmin5.h - Update prototypes and externals. - * kadmin5.M - Update description to add -c -l -d and -s flags. - - -Thu Jun 1 14:31:49 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5.c: Change the default admin instance name to "kadmin" - * kadmin5.c(kadmin_list): Compare principals to each of the supplied - regular expressions instead of only to the last one. This - is slightly inefficient, but correct. - * kadmin5.M: Document the change in default instance name. - - -Mon May 15 10:57:17 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5.M - Change default principal name for kadmin5. - - -Fri May 12 16:04:01 EDT 1995 Paul Park (pjpark@mit.edu) - * configure.in - Check for regex.h. - * kadmin5.c - Use regex.h only if present. Correctly calculate - length of argument string to build when command is - on command line. - - -Thu May 11 12:18:27 EDT 1995 Paul Park (pjpark@mit.edu) - * kadmin5.c - Change "programname" to be the last component of - argv[0]. Also correctly terminate generated - argument string in kadmin_startup. - - -Tue May 9 15:56:40 EDT 1995 Paul Park (pjpark@mit.edu) - First checkin of new administrative client. - diff --git a/src/kadmin/v5client/Makefile.in b/src/kadmin/v5client/Makefile.in deleted file mode 100644 index 50bac0f92..000000000 --- a/src/kadmin/v5client/Makefile.in +++ /dev/null @@ -1,38 +0,0 @@ -CFLAGS = $(CCOPTS) $(DEFS) $(LOCALINCLUDE) - -all:: - -LOCALINCLUDE= - -OBJS= kadmin5.o \ - kadmin5_ct.o \ - network.o \ - convert.o \ - ss_wrapper.o \ - $(LIBOBJS) - -SRCS= $(srcdir)/kadmin5.c \ - $(srcdir)/kadmin5_ct.c \ - $(srcdir)/ss_wrapper.c - -all:: kadmin5 - -kadmin5: kadmin5.o $(DEPLIBS) $(OBJS) - $(LD) $(LDFLAGS) $(LDARGS) -o kadmin5 $(OBJS) $(LIBS) - -install:: - $(INSTALL_PROGRAM) kadmin5 ${DESTDIR}$(ADMIN_BINDIR)/kadmin5 - $(INSTALL_DATA) $(srcdir)/kadmin5.M ${DESTDIR}$(ADMIN_MANDIR)/kadmin5.8 - -# needed until we run makedepend -kadmin5_ct.c: kadmin5_ct.ct - -kadmin5_ct.o: kadmin5_ct.c - -clean:: - $(RM) kadmin5_ct.c - -depend:: kadmin5_ct.c - -clean:: - $(RM) kadmin5 diff --git a/src/kadmin/v5client/configure.in b/src/kadmin/v5client/configure.in deleted file mode 100644 index c80e35afa..000000000 --- a/src/kadmin/v5client/configure.in +++ /dev/null @@ -1,14 +0,0 @@ -AC_INIT(kadmin5.c) -CONFIG_RULES -AC_PROG_INSTALL -AC_PROG_YACC -AC_HAVE_HEADERS(pwd.h regex.h regexp.h) -AC_HAVE_FUNCS(strptime re_comp regcomp getcwd) -AC_CONST -USE_KADM_LIBRARY -USE_KDB5_LIBRARY -USE_KRB4_LIBRARY -USE_SS_LIBRARY -KRB5_LIBRARIES -V5_USE_SHARED_LIB -V5_AC_OUTPUT_MAKEFILE diff --git a/src/kadmin/v5client/convert.c b/src/kadmin/v5client/convert.c deleted file mode 100644 index 9f8393e12..000000000 --- a/src/kadmin/v5client/convert.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - * kadmin/v5client/convert.c - * - * Copyright 1995 by the Massachusetts Institute of Technology. - * All Rights Reserved. - * - * Export of this software from the United States of America may - * require a specific license from the United States Government. - * It is the responsibility of any person or organization contemplating - * export to obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and - * distribute this software and its documentation for any purpose and - * without fee is hereby granted, provided that the above copyright - * notice appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, and that - * the name of M.I.T. not be used in advertising or publicity pertaining - * to distribution of the software without specific, written prior - * permission. M.I.T. makes no representations about the suitability of - * this software for any purpose. It is provided "as is" without express - * or implied warranty. - * - */ - -/* - * convert.c - Perform various conversions for kadmin5. - */ -#include "k5-int.h" -#include "adm.h" -#include "kadmin5.h" - -/* Size of static buffers for conversions */ -#define BUFFER_SIZE 512 - -/* Forward declarations */ -static krb5_boolean get_integer PROTOTYPE((char *, const char *, void *)); -static krb5_boolean get_datestring PROTOTYPE((char *, const char *, void *)); -static krb5_boolean get_saltstring PROTOTYPE((char *, const char *, void *)); -/* static krb5_boolean get_deltastring PROTOTYPE((char *, const char *, void *)); */ - -/* Local data structure for flag to string and option to flag operations */ -struct flagtable { - krb5_flags f_value; - const char *f_string; - const char *f_option; - krb5_boolean f_sense; -}; - -/* Local data structure for option parsing */ -struct opttable { - krb5_ui_4 o_value; - const char *o_option; - krb5_boolean (*o_dispatch) PROTOTYPE((char *, - const char *, - void *)); - void *o_arg; -}; - -/* - * Static strings. - */ -static const char *o_not_int_fmt = "%s does not specify an integer value for %s"; -static const char *o_val_req_fmt = "value required for %s"; -static const char *o_not_time_fmt = "%s does not specify a valid time value for %s"; -static const char *o_not_salt_fmt = "%s does not specify a valid salt type for %s"; -static const char *o_opt_ufo_fmt = "%s is unrecognized"; -static const char *help_option_head = "%s: valid options are:\n"; - -static const char opt_maxlife[] = "maxlife"; -static const char opt_maxrenewlife[] = "maxrenewlife"; -static const char opt_expiration[] = "expiration"; -static const char opt_pwexpiration[] = "pwexpiration"; -static const char opt_randomkey[] = "randomkey"; - -/* - * Formatting buffers - */ -static char dt_outbuf[BUFFER_SIZE]; -static char abs_outbuf[BUFFER_SIZE]; -static char db_outbuf[BUFFER_SIZE]; -static char salt_outbuf[BUFFER_SIZE]; -static krb5_db_entry opt_dbent; - -/* Option string parse table */ -static struct opttable opttable[] = { -/* flag option dispatch routine - argument */ -{ KRB5_ADM_M_MAXLIFE, opt_maxlife, get_integer, - (void *) &opt_dbent.max_life }, -{ KRB5_ADM_M_MAXRENEWLIFE, opt_maxrenewlife, get_integer, - (void *) &opt_dbent.max_renewable_life }, -{ KRB5_ADM_M_EXPIRATION, opt_expiration, get_datestring, - (void *) &opt_dbent.expiration }, -{ KRB5_ADM_M_PWEXPIRATION, opt_pwexpiration, get_datestring, - (void *) &opt_dbent.pw_expiration } -}; - - -/* - * delta2string() - Convert delta time value to string. - * - * WARNING: the returned output buffer is static. - */ -char * -delta2string(dt) - krb5_deltat dt; -{ - return(krb5_deltat_to_string(dt, dt_outbuf, sizeof(dt_outbuf)) ? - (char *) NULL : dt_outbuf); -} - -/* - * abs2string() - Convert absolute Kerberos time to string. - * - * WARNING: the returned output buffer is static. - */ -char * -abs2string(t) - krb5_timestamp t; -{ - return(krb5_timestamp_to_string(t, abs_outbuf, sizeof(abs_outbuf)) ? - (char *) NULL : abs_outbuf); -} - -/* - * dbflags2string() - Convert database flags to string. - * - * WARNING: the returned output buffer is static. - */ -char * -dbflags2string(f) - krb5_flags f; -{ - return(krb5_flags_to_string(f, ", ", db_outbuf, sizeof(db_outbuf)) ? - (char *) NULL : db_outbuf); -} - -/* - * get_integer() - Test for an option and its integer value. - */ -static krb5_boolean -get_integer(arg, value, optp) - char *arg; - const char *value; - void *optp; -{ - int index; - krb5_boolean good; - krb5_int32 *intp; - - intp = (krb5_int32 *) optp; - good = 0; - /* Match the value */ - if (!strncasecmp(arg, value, strlen(value))) { - /* If we have a match, look for value= */ - index = strlen(value); - if (arg[index] == '=') { - /* Match one integer argument */ - if (sscanf(&arg[index+1], "%d", intp) == 1) - good = 1; - else - com_err(requestname, 0, o_not_int_fmt, &arg[index+1], value); - } - else - com_err(requestname, 0, o_val_req_fmt, value); - } - return(good); -} - -/* - * get_datestring() - Test for an option and its date value - */ -static krb5_boolean -get_datestring(arg, value, optp) - char *arg; - const char *value; - void *optp; -{ - int index; - krb5_timestamp *tp; - krb5_boolean good; - char *retval; - int ti; - - tp = (krb5_timestamp *) optp; - good = 0; - /* Match the value */ - if (!strncasecmp(arg, value, strlen(value))) { - /* If we have a match, look for value= */ - index = strlen(value); - if (arg[index] == '=') { - if (!krb5_string_to_timestamp(&arg[index+1], tp)) - good = 1; - else - com_err(requestname, 0, o_not_time_fmt, &arg[index+1], value); - } - else - com_err(requestname, 0, o_val_req_fmt, value); - } - return(good); -} - -/* - * parse_princ_options() - Parse an argument list for values. - * - * NOTE: The formatting buffer is static. - */ -krb5_boolean -parse_princ_options(argc, argv, vmaskp, dbentp) - int argc; - char *argv[]; - krb5_ui_4 *vmaskp; - krb5_db_entry *dbentp; -{ - int i, oindex; - krb5_boolean good; - krb5_boolean found; - - good = 1; - /* Copy in our values */ - memcpy(&opt_dbent, dbentp, sizeof(krb5_db_entry)); - for (i=0; i -Specifies the maximum ticket life for the principal. -.TP i -.I maxrenewlife= -Specifies the maximum renewable ticket life for the principal. -.TP i -.I expiration= -Specifies the expiration date and time of the principal. -.TP i -.I pwexpiration= -Specifies the expiration date and time of the principal's password. -.TP i -.I [+/-] -Selects a particular flag value. -.PP -.SH SEE ALSO -kadmind5(8), kpasswd(1) diff --git a/src/kadmin/v5client/kadmin5.c b/src/kadmin/v5client/kadmin5.c deleted file mode 100644 index 71a46bbc0..000000000 --- a/src/kadmin/v5client/kadmin5.c +++ /dev/null @@ -1,1858 +0,0 @@ -/* - * kadmin/v5client/kadmin5.c - * - * Copyright 1995 by the Massachusetts Institute of Technology. - * All Rights Reserved. - * - * Export of this software from the United States of America may - * require a specific license from the United States Government. - * It is the responsibility of any person or organization contemplating - * export to obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and - * distribute this software and its documentation for any purpose and - * without fee is hereby granted, provided that the above copyright - * notice appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, and that - * the name of M.I.T. not be used in advertising or publicity pertaining - * to distribution of the software without specific, written prior - * permission. M.I.T. makes no representations about the suitability of - * this software for any purpose. It is provided "as is" without express - * or implied warranty. - * - */ - -/* - * kadmin5.c - Perform administrative functions using the new - * administrative protocol. - */ -#include "k5-int.h" -#include "com_err.h" -#include "adm.h" -#include "kadmin5.h" -#if HAVE_PWD_H -#include -#endif /* HAVE_PWD_H */ -#if HAVE_REGEX_H -#include -#endif /* HAVE_REGEX_H */ - -/* - * Use compile(3) if no regcomp present. - */ -#if !defined(HAVE_REGCOMP) && defined(HAVE_REGEXP_H) -#define INIT char *sp = instring; -#define GETC() (*sp++) -#define PEEKC() (*sp) -#define UNGETC(c) (--sp) -#define RETURN(c) return(c) -#define ERROR(c) -#define RE_BUF_SIZE 1024 -#include -#endif /* !HAVE_REGCOMP && HAVE_REGEXP_H */ - -/* - * Global storage. - */ -int exit_status = 0; -krb5_context kcontext; -char *programname = (char *) NULL; -char *requestname = (char *) NULL; -krb5_boolean multiple = 0; -char *principal_name = (char *) NULL; -char *password_prompt = (char *) NULL; -char *ccname2use = (char *) NULL; -krb5_timestamp ticket_life = 0; -krb5_boolean delete_ccache = 0; - -extern krb5_kt_ops krb5_ktf_writable_ops; - -/* - * Own storage - */ -static char *realm_name = (char *) NULL; -#if !HAVE_RE_COMP && !HAVE_REGCOMP && !HAVE_REGEXP_H -static char *re_string = (char *) NULL; -#endif /* !HAVE_RE_COMP && !HAVE_REGCOMP && !HAVE_REGEXP_H */ - -/* - * Static strings. - */ -static const char *help_option = "-help"; -static const char *verbose_option = "-verbose"; -static const char *force_option = "-force"; -static const char *kadmin_instance = "admin"; - -static const char *wr_ktab_type = "WRFILE"; - -static const char *gent_opterr_fmt = "- cannot decode protocol"; -static const char *gen_conn_err_fmt = "- cannot connect to server"; -static const char *db_print_header = "------------------------------------\n"; -static const char *db_print_1_fmt = "Principal: %s\n"; -static const char *db_print_2_fmt = "Maximum ticket lifetime: %s\n"; -static const char *db_print_2a_fmt = "Maximum renewable lifetime: %s\n"; -static const char *db_print_3_fmt = "Principal expiration: %s\n"; -static const char *db_print_3a_fmt = "Password expiration: %s\n"; -static const char *db_print_4_fmt = "Last password change: %s\n"; -static const char *db_print_5_fmt = "Last successful entry: %s\n"; -static const char *db_print_6_fmt = "Last unsuccessful entry: %s"; -static const char *db_print_6_opt_fmt = " - failed %d times"; -static const char *db_print_7_fmt = "Last modified by: %s (%s)\n"; -static const char *db_print_8_fmt = "Flags: %s\n"; -static const char *db_print_ufo_tl_fmt = "Unknown Tagged Data: Tag=%d, Length=%d\n"; -static const char *db_print_9_fmt = "Key: Type=%s, Salt=%s, Version=%d\n"; -static const char *db_print_trailer = "------------------------------------\n"; - -static const char *db_indef_dt_msg = "indefinite"; -static const char *db_never_msg = "never"; -static const char *db_none_msg = "none"; - -static const char *sprinc_usage_fmt = "usage is %s principal [...]"; -static const char *add_usage_fmt = "usage is %s principal [attributes...]"; -static const char *add_prompt1_fmt = " Enter new password for %s : "; -static const char *add_prompt2_fmt = "Re-enter new password for %s : "; -static const char *add_succ_fmt = "principal %s added"; -static const char *add_protoerr_fmt = "- protocol encode error"; -static const char *add_noconf_fmt = "password not confirmed"; -static const char *add_synerr_fmt = "syntax error"; -static const char *cpw_usage_fmt = "usage is %s principal"; -static const char *cpw_prompt1_fmt = " Enter new password for %s: "; -static const char *cpw_prompt2_fmt = "Re-enter new password for %s: "; -static const char *cpw_succ_fmt = "password changed for %s"; -static const char *cpw_nochange_fmt = "password not changed for %s"; -static const char *akt_usage_fmt = "usage is %s principal [key:salt]+"; -static const char *akt_prompt1_fmt = " Enter current password for %s: "; -static const char *akt_prompt2_fmt = "Re-enter current password for %s: "; -static const char *akt_succ_fmt = "enctypes successfully added for %s"; -static const char *akt_nochange_fmt = "enctypes not added for %s"; -static const char *dkt_usage_fmt = "usage is %s principal [key:salt[:kvno]]+"; -static const char *dkt_prompt1_fmt = " Enter current password for %s: "; -static const char *dkt_prompt2_fmt = "Re-enter current password for %s: "; -static const char *dkt_succ_fmt = "enctypes successfully deleted for %s"; -static const char *dkt_nochange_fmt = "enctypes not deleted for %s"; -static const char *dprinc_usage_fmt = "usage is %s [%s] principal [...]"; -static const char *del_conf_fmt = "Enter '%c' to delete principal %s: "; -static const char del_conf_char = 'y'; -static const char *del_princ_fmt = "principal %s deleted."; -static const char *del_noconf_fmt = "not confirmed - principal %s not deleted"; -static const char *xst_ktab_name_fmt = "%s:%s-new-srvtab"; -static const char *xst_k4tab_name_fmt = "%s-new-v4-srvtab"; -static const char *xst_dfl_ktname = "DEFAULT"; -static const char *xst_usage_fmt = "usage is %s instance principal [...]"; -static const char *xst_wr_reg_fmt = "(%s) cannot register writeable keytable"; -static const char *xst_inst2long_fmt = "'%s' is too long for a filename, using '%s' instead"; -static const char *xst_nokeytab_fmt = "cannot open key table %s"; -static const char *xst_nodeskey_fmt = "%s does not have a DES key"; -static const char *xst_adderr_fmt = "cannot add entry %s"; -static const char *xst_success_fmt = "extracted entry %s to key table %s"; -static const char *xst_proto_fmt = "cannot decode service key table entry from protocol"; -static const char *xst_kclose_fmt = "cannot close key table %s"; -static const char *mod_usage_fmt = "usage is %s principal [attributes...]"; -static const char *mod_succ_fmt = "principal %s modified."; -static const char *mod_protoerr_fmt = "protocol encode error"; -static const char *mod_synerr_fmt = "syntax error"; -static const char *rprinc_usage_fmt = "usage is %s [%s] principal principal"; -static const char *ren_conf_fmt = "Enter '%c' to rename principal %s to %s: "; -static const char ren_conf_char = 'y'; -static const char *ren_princ_fmt = "principal %s renamed to %s."; -static const char *ren_noconf_fmt = "not confirmed - principal %s not renamed to %s."; -#if HAVE_RE_COMP || HAVE_REGCOMP || HAVE_REGEXP_H -static const char *lprinc_usage_fmt = "usage is %s [%s] "; -#else /* HAVE_RE_COMP || HAVE_REGCOMP || HAVE_REGEXP_H */ -static const char *lprinc_usage_fmt = "usage is %s [%s] princpal"; -#endif /* HAVE_RE_COMP || HAVE_REGCOMP || HAVE_REGEXP_H */ -static const char *lprinc_all_regexp = ".*"; -static const char *lprinc_regexp_fmt = "%s - regular expression error: %s"; -static const char *lprinc_regsrch_fmt = "%s on %s - RE search error: %s"; -static const char *lprinc_first_msg = "first database entry"; -static const char *cant_get_fmt = "cannot get entry for %s"; -static const char *no_memory_fmt = "cannot get memory"; -static const char *lang_usage_fmt = "usage is %s language"; -static const char *cd_cannot_fmt = "cannot change directory to %s"; -static const char *cd_usage_fmt = "usage is %s directory"; -static const char *pwd_mess_fmt = "Current directory is %s\n"; -static const char *pwd_err_fmt = "cannot get current directory: %s"; -static const char *pwd_usage_fmt = "usage is %s"; -static const char *kadmin_badtime_fmt = "%s is a bad time value"; -static const char *kadmin_usage_fmt = "usage is %s [-c ccache] [-r realm] [-p principal] [-l lifetime] [-dms] [command ...]"; -static const char *kadmin_sd_err_fmt = "-d and -s are mutually exclusive"; -static const char *kadmin_defrealm_msg = ": cannot get default realm"; -static const char *kadmin_srealm_fmt = ": cannot set realm to \"%s\""; -static const char *kadmin_ccache_fmt = ": cannot find credential cache %s"; -static const char *kadmin_nopname_msg = ": cannot find a principal name"; -static const char *kadmin_unparse_msg = ": cannot flatten principal name"; -static const char *kadmin_nocomp_msg = ": no components in principal name"; -static const char *kadmin_noprompt_msg = ": cannot make password prompt"; - -static const char *kadmin_pprompt_fmt = "Enter password for %s: "; - -#if !HAVE_RE_COMP && !HAVE_REGCOMP && !HAVE_REGEXP_H -/* - * re_comp() - Compile a regular expression for subsequent usage by re_exec - * - * This routine is only a shell. Null expressions or expressions matching - * lprinc_all_regexp are taken to match everything, all others are - * interpreted as "string".*. - */ -static char * -re_comp(rstring) - char *rstring; -{ - if (strlen(rstring) && strcmp(rstring, lprinc_all_regexp)) { - re_string = rstring; - } - else { - re_string = (char *) NULL; - } - return((char *) NULL); -} - -/* - * re_exec() - Attempt to match a string to a regular expression previously - * specified to re_comp(). - * - * This routine is only a shell. - */ -static int -re_exec(sstring) - char *sstring; -{ - if (re_string) - return(strncmp(sstring, re_string, strlen(re_string)) ? 0 : 1); - else - return(1); -} -#endif /* !HAVE_RE_COMP && !HAVE_REGCOMP && !HAVE_REGEXP_H */ - -/* - * kadmin_get_entry() - Get a principal entry. - */ -static krb5_error_code -kadmin_get_entry(pname, validp, dbentp, nextp) - char *pname; - krb5_ui_4 *validp; - krb5_db_entry *dbentp; - char **nextp; -{ - krb5_error_code kret; - krb5_int32 proto_stat; - krb5_int32 ncomps; - krb5_data *complist; - char *pword; - - if (!(kret = net_do_proto(KRB5_ADM_INQ_PRINC_CMD, - pname, - (char *) NULL, - 0, - (krb5_data *) NULL, - &proto_stat, - &ncomps, - &complist, - 0))) { - if (proto_stat == KRB5_ADM_SUCCESS) { - *nextp = (char *) malloc((size_t) complist[0].length + 1); - if (*nextp) { - strncpy(*nextp, complist[0].data, (size_t) complist[0].length); - (*nextp)[complist[0].length] = '\0'; - } - if (!(kret = krb5_adm_proto_to_dbent(kcontext, - ncomps-1, - &complist[1], - validp, - dbentp, - &pword))) { - if (pword) - krb5_xfree(pword); - } - else { - com_err(requestname, kret, gent_opterr_fmt); - } - krb5_free_adm_data(kcontext, ncomps, complist); - } - else - kret = EIO; - } - return(kret); -} - -/* - * kadmin_princ_entry() - Print out a database entry. - */ -static void -kadmin_print_entry(name, valid, dbentp) - char *name; - krb5_ui_4 valid; - krb5_db_entry *dbentp; -{ - krb5_tl_data *tl; - krb5_tl_mod_princ *modprinc; - krb5_timestamp now; - int i; - char enctype[128]; - char salttype[128]; - - printf(db_print_header); - printf(db_print_1_fmt, name); - printf(db_print_2_fmt, - ((valid & KRB5_ADM_M_MAXLIFE) ? - delta2string(dbentp->max_life) : db_indef_dt_msg)); - printf(db_print_2a_fmt, - ((valid & KRB5_ADM_M_MAXRENEWLIFE) ? - delta2string(dbentp->max_renewable_life) : db_indef_dt_msg)); - printf(db_print_3_fmt, - ((valid & KRB5_ADM_M_EXPIRATION) ? - abs2string(dbentp->expiration) : db_never_msg)); - printf(db_print_3a_fmt, - ((valid & KRB5_ADM_M_PWEXPIRATION) ? - abs2string(dbentp->pw_expiration) : db_never_msg)); - printf(db_print_5_fmt, - ((valid & KRB5_ADM_M_LASTSUCCESS) ? - abs2string(dbentp->last_success) : db_never_msg)); - if ((valid & KRB5_ADM_M_FAILCOUNT) && (dbentp->fail_auth_count > 0)) { - printf(db_print_6_fmt, - ((valid & KRB5_ADM_M_LASTFAILED) ? - abs2string(dbentp->last_failed) : db_never_msg)); - printf(db_print_6_opt_fmt, dbentp->fail_auth_count); - printf("\n"); - } - - printf(db_print_8_fmt, - ((valid & KRB5_ADM_M_FLAGS) ? - dbflags2string(dbentp->attributes) : "")); - - for (tl=dbentp->tl_data; tl; tl = tl->tl_data_next) { - switch (tl->tl_data_type) { - case KRB5_TL_LAST_PWD_CHANGE: - krb5_kdb_decode_int32(tl->tl_data_contents, now); - printf(db_print_4_fmt, abs2string(now)); - break; - case KRB5_TL_MOD_PRINC: - krb5_kdb_decode_int32(tl->tl_data_contents, now); - printf(db_print_7_fmt, &tl->tl_data_contents[4], abs2string(now)); - break; - default: - printf(db_print_ufo_tl_fmt, tl->tl_data_type, tl->tl_data_length); - break; - } - } - for (i=0; in_key_data; i++) { - krb5_enctype_to_string((krb5_enctype) dbentp->key_data[i]. - key_data_type[0], - enctype, - sizeof(enctype)); - krb5_salttype_to_string((krb5_enctype) dbentp->key_data[i]. - key_data_type[1], - salttype, - sizeof(salttype)); - printf(db_print_9_fmt, enctype, salttype, - (int) dbentp->key_data[i].key_data_kvno); - } - - printf(db_print_trailer); -} - -/* - * Dispatch procedures. - */ - -/* - * kadmin_show_principal() - Show a principal. - */ -void -kadmin_show_principal(argc, argv) - int argc; - char *argv[]; -{ - int i; - krb5_error_code kret; - char *xxx; - krb5_ui_4 valid; - krb5_db_entry *dbentry; - - requestname = argv[0]; - if (argc == 1) { - com_err(argv[0], 0, sprinc_usage_fmt, argv[0]); - return; - } - for (i=1; i= sizeof(keytab_name)) { - com_err(requestname, 0, xst_inst2long_fmt, instance, xst_dfl_ktname); - sprintf(keytab_name, xst_ktab_name_fmt, wr_ktab_type, xst_dfl_ktname); - } - else - sprintf(keytab_name, xst_ktab_name_fmt, wr_ktab_type, instance); - actname = &keytab_name[strlen(wr_ktab_type)+1]; - - if (kret = krb5_kt_resolve(kcontext, keytab_name, &keytab_id)) { - com_err(requestname, kret, xst_nokeytab_fmt, actname); - return; - } - memset((char *) &keytab_entry, 0, sizeof(krb5_keytab_entry)); - - for (i=0; i= sizeof(keytab_name)) { - com_err(requestname, 0, xst_inst2long_fmt, instance, xst_dfl_ktname); - sprintf(keytab_name, xst_k4tab_name_fmt, xst_dfl_ktname); - } - else - sprintf(keytab_name, xst_k4tab_name_fmt, instance); - - if ((v4tab = fopen(keytab_name, "w")) == NULL) { - com_err(requestname, errno, xst_nokeytab_fmt, keytab_name); - return; - } - memset((char *) &keytab_entry, 0, sizeof(krb5_keytab_entry)); - - for (i=0; i 0) { - if (!strcmp(argv[0], force_option)) { - force = 1; - argc--; - argv++; - } - if (argc != 2) - uerr++; - } - else - uerr++; - if (uerr) { - com_err(requestname, 0, rprinc_usage_fmt, requestname, force_option); - return; - } - - doit = 0; - if (force) { - doit = 1; - } - else { - int c; - printf(ren_conf_fmt, ren_conf_char, argv[0], argv[1]); - if (getchar() == ren_conf_char) - doit = 1; - while (((c = getchar()) != '\n') && (c != EOF)); - } - - if (doit) { - if (!(kret = net_do_proto(KRB5_ADM_REN_PRINC_CMD, - argv[0], - argv[1], - 0, - (krb5_data *) NULL, - &proto_stat, - &ncomps, - &complist, - 0))) { - if (proto_stat == KRB5_ADM_SUCCESS) { - com_err(programname, 0, ren_princ_fmt, argv[0], argv[1]); - krb5_free_adm_data(kcontext, ncomps, complist); - } - } - } - else { - com_err(programname, 0, ren_noconf_fmt, argv[0], argv[1]); - } -} - -/* - * kadmin_list() - List principals. - */ -void -kadmin_list(argc, argv) - int argc; - char *argv[]; -{ - krb5_error_code kret; - int error; - int i; - krb5_boolean verbose; - char *re_result; -#if HAVE_REGCOMP - regex_t match_exp; - regmatch_t match_match; - int match_error; - char match_errmsg[BUFSIZ]; - size_t errmsg_size; -#elif HAVE_REGEXP_H - char regexp_buffer[RE_BUF_SIZE]; -#elif HAVE_RE_COMP - extern char *re_comp(); -#endif /* HAVE_REGEXP_H */ - - requestname = argv[0]; - error = 0; - verbose = 0; - - for (i=1; i 0) { - krb5_data *dp; - - dp = krb5_princ_component(kcontext, me, 0); - if (user = (char *) malloc((size_t) dp->length + 1)) { - strncpy(user, dp->data, (size_t) dp->length); - user[dp->length] = '\0'; - } - else { - kret = ENOMEM; - } - } - else { - com_err(argv[0], 0, kadmin_nocomp_msg); - exit(1); - } - } - /* Then try our default credentials cache */ - else if (!(kret = krb5_cc_default(kcontext, &ccache)) && - !(kret = krb5_cc_get_principal(kcontext, ccache, &me))) { - - /* Use our first component, if it exists. */ - if (krb5_princ_size(kcontext, me) > 0) { - krb5_data *dp; - - dp = krb5_princ_component(kcontext, me, 0); - if (user = (char *) malloc((size_t) dp->length + 1)) { - strncpy(user, dp->data, (size_t) dp->length); - user[dp->length] = '\0'; - } - else { - kret = ENOMEM; - } - } - else { - com_err(argv[0], 0, kadmin_nocomp_msg); - exit(1); - } - } - else if (user = getenv("USER")) { - char *xxx; - - xxx = (char *) malloc(strlen(user)+1); - if (xxx) { - strcpy(xxx, user); - kret = 0; - } - user = xxx; - } -#if HAVE_PWD_H - else if (pw = getpwuid(getuid())) { - if (user = (char *) malloc(strlen(pw->pw_name)+1)) { - strcpy(user, pw->pw_name); - kret = 0; - } - else - kret = ENOMEM; - } -#endif /* HAVE_PWD_H */ - - if (user) { - if (principal_name = (char *) malloc(strlen(user)+1+ - strlen(kadmin_instance)+1+ - strlen(realm_name)+1)) { - sprintf(principal_name, "%s/%s@%s", - user, kadmin_instance, realm_name); - free(user); - } - else - kret = ENOMEM; - } - if (kret || !user) { - com_err(argv[0], kret, kadmin_nopname_msg); - exit(1); - } - if (ccache) - krb5_cc_close(kcontext, ccache); - if (me) - krb5_free_principal(kcontext, me); - } - - /* Formulate the password prompt while we're here */ - if (password_prompt = (char *) malloc(strlen(kadmin_pprompt_fmt)+ - strlen(principal_name)+1)) { - sprintf(password_prompt, kadmin_pprompt_fmt, principal_name); - } - else { - com_err(argv[0], ENOMEM, kadmin_noprompt_msg); - exit(1); - } - - if (ccache) - krb5_cc_close(kcontext, ccache); - - /* See if something's left, e.g. a request */ - if (argc > optind) { - size_t n2alloc; - int i; - - n2alloc = 0; - for (i=optind; i 0) { - for (i=0; i -#include - -extern ss_request_table kadmin_cmds; -extern int exit_status; -extern char *kadmin_startup(); - -int main(argc, argv) - int argc; - char *argv[]; -{ - char *request; - krb5_error_code retval; - int sci_idx, code = 0; - - request = kadmin_startup(argc, argv); - sci_idx = ss_create_invocation("kadmin5", "5.0", (char *) NULL, - &kadmin_cmds, &retval); - if (retval) { - ss_perror(sci_idx, retval, "creating invocation"); - exit(1); - } - if (request) { - (void) ss_execute_line(sci_idx, request, &code); - free(request); - if (code != 0) { - ss_perror(sci_idx, code, request); - exit_status++; - } - } else - ss_listen(sci_idx, &retval); - return kadmin_cleanup() ? 1 : exit_status; -}