3 * This program will bulk resign user records in the database.
11 #include <moira_site.h>
24 char buf[BUFSIZ], *data, *p;
25 struct save_queue *sq;
27 int found, status, i, wait;
28 ## char login[10], mid[32], rawsig[256];
29 ## int id, timestamp, sms, moira;
35 /* Set the name of our kerberos ticket file */
36 krb_set_tkt_string("/tmp/tkt_sign");
39 printf("Authenticating as moira.extra:\n");
40 status = krb_get_pw_in_tkt("moira", "extra", "ATHENA.MIT.EDU",
41 "krbtgt", "ATHENA.MIT.EDU",
44 com_err(program, status + krb_err_base, " in krb_get_pw_in_tkt");
47 for (i = 1; i < argc; i++) {
48 if (!strcmp(argv[i], "-w"))
50 else if (!strcmp(argv[i], "-D"))
51 setenv("ING_SET", "set printqry");
53 fprintf(stderr, "Usage: %s [-w] [-D]\n", argv[0]);
58 ## range of u is users
59 ## range of s is strings
62 ## retrieve (sms = s.string_id) where s.string="sms@ATHENA.MIT.EDU"
64 com_err(program, 0, " failed to find string sms@ATHENA.MIT.EDU in database");
69 ## retrieve (moira = s.string_id) where s.string="moira.extra@ATHENA.MIT.EDU"
71 com_err(program, 0, " failed to find string moira.extra@ATHENA.MIT.EDU in database");
79 ## retrieve (id = u.users_id, login = u.#login, mid = u.mit_id)
80 ## where u.sigwho = sms {
81 sprintf(buf, "%d:%s:%s", id, strtrim(login), strtrim(mid));
82 sq_save_data(sq, strsave(buf));
86 printf("Found %d users to resign.\n", found);
88 si.rawsig = (unsigned char *) &rawsig[0];
90 while (sq_get_data(sq, &data)) {
93 com_err(program, 0, " malformatted data");
99 status = GDSS_Sign(data, strlen(data), buf);
101 com_err(program, gdss2et(status), "resigning data");
104 status = GDSS_Verify(data, strlen(data), buf, &si);
106 com_err(program, gdss2et(status), "verifying data");
110 timestamp = si.timestamp;
111 ## replace u (signature = rawsig, sigwho = moira, sigdate = timestamp)
112 ## where u.users_id = id