From 84df654a93919c45442ab510b6ff13c74d12d732 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Fri, 14 Mar 1997 01:56:55 +0000 Subject: [PATCH] Trivial database editing program. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1394 ec53bebd-3082-4978-b11e-865c3cabbd6b --- admin/ank.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ kdc/ank.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 admin/ank.c create mode 100644 kdc/ank.c diff --git a/admin/ank.c b/admin/ank.c new file mode 100644 index 000000000..56d5d008f --- /dev/null +++ b/admin/ank.c @@ -0,0 +1,67 @@ +#include "kdc_locl.h" + +RCSID("$Id$"); + +int main(int argc, char **argv) +{ + HDB *db; + krb5_context context; + int err; + + hdb_entry ent; + + krb5_init_context(&context); + while (1){ + int32_t tmp; + char buf[1024]; + + printf("Principal: "); + fgets(buf, sizeof(buf), stdin); + if(buf[strlen(buf) - 1] == '\n') + buf[strlen(buf) - 1] = 0; + if(buf[0] == 0) + break; + krb5_parse_name(context, buf, &ent.principal); + + hdb_open(context, &db, argv[1], O_RDWR, 0600); + + err = db->fetch(context, db, &ent); + + switch(err){ + case KRB5_HDB_NOENTRY: + ent.kvno = 0; + ent.max_life = 86400; + ent.max_renew = 5 * 86400; + break; + case 0: + break; + default: + fprintf(stderr, "dbget: %s\n", krb5_get_err_text(context, err));; + exit(1); + } + printf("Max ticket life [%d]: ", ent.max_life); + fgets(buf, sizeof(buf), stdin); + if(sscanf(buf, "%d", &tmp) == 1) + ent.max_life = tmp; + printf("Max renewable ticket [%d]: ", ent.max_renew); + fgets(buf, sizeof(buf), stdin); + if(sscanf(buf, "%d", &tmp) == 1) + ent.max_renew = tmp; + des_read_pw_string(buf, sizeof(buf), "Password:", 1); + { + krb5_data salt; + krb5_get_salt(ent.principal, &salt); + krb5_string_to_key(buf, &salt, &ent.keyblock); + } + ent.kvno++; + { + err = db->store(context, db, &ent); + if(err == -1){ + perror("dbput"); + exit(1); + } + } + db->close(context, db); + } + return 0; +} diff --git a/kdc/ank.c b/kdc/ank.c new file mode 100644 index 000000000..56d5d008f --- /dev/null +++ b/kdc/ank.c @@ -0,0 +1,67 @@ +#include "kdc_locl.h" + +RCSID("$Id$"); + +int main(int argc, char **argv) +{ + HDB *db; + krb5_context context; + int err; + + hdb_entry ent; + + krb5_init_context(&context); + while (1){ + int32_t tmp; + char buf[1024]; + + printf("Principal: "); + fgets(buf, sizeof(buf), stdin); + if(buf[strlen(buf) - 1] == '\n') + buf[strlen(buf) - 1] = 0; + if(buf[0] == 0) + break; + krb5_parse_name(context, buf, &ent.principal); + + hdb_open(context, &db, argv[1], O_RDWR, 0600); + + err = db->fetch(context, db, &ent); + + switch(err){ + case KRB5_HDB_NOENTRY: + ent.kvno = 0; + ent.max_life = 86400; + ent.max_renew = 5 * 86400; + break; + case 0: + break; + default: + fprintf(stderr, "dbget: %s\n", krb5_get_err_text(context, err));; + exit(1); + } + printf("Max ticket life [%d]: ", ent.max_life); + fgets(buf, sizeof(buf), stdin); + if(sscanf(buf, "%d", &tmp) == 1) + ent.max_life = tmp; + printf("Max renewable ticket [%d]: ", ent.max_renew); + fgets(buf, sizeof(buf), stdin); + if(sscanf(buf, "%d", &tmp) == 1) + ent.max_renew = tmp; + des_read_pw_string(buf, sizeof(buf), "Password:", 1); + { + krb5_data salt; + krb5_get_salt(ent.principal, &salt); + krb5_string_to_key(buf, &salt, &ent.keyblock); + } + ent.kvno++; + { + err = db->store(context, db, &ent); + if(err == -1){ + perror("dbput"); + exit(1); + } + } + db->close(context, db); + } + return 0; +}