From 00d4c0ba85b8a1e1c4a73ffb67487843af077a9c Mon Sep 17 00:00:00 2001 From: mar Date: Fri, 14 Aug 1992 12:59:41 +0000 Subject: [PATCH] generate correct signature on rename, and optionally deactivate list & filsys with user --- clients/moira/user.c | 59 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/clients/moira/user.c b/clients/moira/user.c index 9db8ec01..f1f377c8 100644 --- a/clients/moira/user.c +++ b/clients/moira/user.c @@ -119,6 +119,8 @@ char ** info; status = GDSS_Verify(buf, strlen(buf), info[U_SIGNATURE], &si); #ifdef DEBUG hex_dump(info[U_SIGNATURE]); + sprintf(buf, "GDSS_Verify => %d", status); + Put_message(buf); #endif /* DEBUG */ #else /* GDSS */ status = 0; @@ -300,7 +302,10 @@ Bool name; /* Sign record */ #ifdef GDSS if (strcmp(info[U_NAME], UNIQUE_LOGIN)) { - sprintf(temp_buf, "%s:%s", info[U_NAME], info[U_MITID]); + if (name) + sprintf(temp_buf, "%s:%s", newname, info[U_MITID]); + else + sprintf(temp_buf, "%s:%s", info[U_NAME], info[U_MITID]); si.rawsig = NULL; i = GDSS_Verify(temp_buf, strlen(temp_buf), info[U_SIGNATURE], &si); /* If it's already signed OK, don't resign it. */ @@ -676,7 +681,8 @@ Bool one_item; { register int status; char txt_buf[BUFSIZ]; - char * qargs[2]; + char * qargs[2], **args; + struct qelem *elem = NULL; if (one_item) { sprintf(txt_buf, "Deactivate user %s (y/n)", info[NAME]); @@ -691,6 +697,55 @@ Bool one_item; com_err(program_name, status, " in update_user_status"); sprintf(txt_buf, "User %s not deactivated due to errors.", info[NAME]); Put_message(txt_buf); + } else if (YesNoQuestion("Also deactivate matching list and filesystem (y/n)", + FALSE) == TRUE) { + if (status = do_mr_query("get_list_info", 1, &(info[NAME]), + StoreInfo, (char *) &elem)) { + com_err(program_name, status, " getting list info, not deactivating list or filesystem"); + return; + } + args =(char **) (QueueTop(elem)->q_data); + free(args[L_ACTIVE]); + args[L_ACTIVE] = strsave("0"); + FreeAndClear(&args[L_MODTIME], TRUE); + FreeAndClear(&args[L_MODBY], TRUE); + FreeAndClear(&args[L_MODWITH], TRUE); + SlipInNewName(args, args[L_NAME]); + if (status = do_mr_query("update_list", CountArgs(args), args, + Scream, (char *) NULL)) { + com_err(program_name, status, " updating list, not deactivating list or filesystem"); + FreeInfo(args); + FreeQueue(elem); + return; + } + FreeInfo(args); + FreeQueue(elem); + elem = (struct qelem *) NULL; + if (status = do_mr_query("get_filesys_by_label", 1, &(info[NAME]), + StoreInfo, (char *) &elem)) { + com_err(program_name, status, " getting filsys info, not deactivating filesystem"); + FreeInfo(args); + FreeQueue(elem); + return; + } + args = (char **) (QueueTop(elem)->q_data); + free(args[FS_TYPE]); + args[FS_TYPE] = strsave("ERR"); + free(args[FS_COMMENTS]); + args[FS_COMMENTS] = strsave("Locker disabled; call 3-1325 for help"); + FreeAndClear(&args[FS_MODTIME], TRUE); + FreeAndClear(&args[FS_MODBY], TRUE); + FreeAndClear(&args[FS_MODWITH], TRUE); + SlipInNewName(args, args[FS_NAME]); + if (status = do_mr_query("update_filesys", CountArgs(args), args, + Scream, (char *) NULL)) { + com_err(program_name, status, " updating filesystem, not deactivating filesystem"); + FreeInfo(args); + FreeQueue(elem); + return; + } + FreeInfo(args); + FreeQueue(elem); } } -- 2.45.2