From: danw Date: Thu, 14 Aug 1997 20:22:47 +0000 (+0000) Subject: add mitdir prefs menu X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/commitdiff_plain/10207d4dbf08fe324296f7146354f03c35405029 add mitdir prefs menu --- diff --git a/clients/moira/f_defs.h b/clients/moira/f_defs.h index 33a7e9fb..886e6766 100644 --- a/clients/moira/f_defs.h +++ b/clients/moira/f_defs.h @@ -144,6 +144,8 @@ int DeleteUserByUid(); /* detete a user by uid. */ int GetKrbmap(); /* fetch a user->kerberos mapping */ int AddKrbmap(); int DeleteKrbmap(); +int GetDirFlags(); +int SetDirFlags(); /* printer.c */ int AddPcap(); diff --git a/clients/moira/menus.c b/clients/moira/menus.c index 22e0587e..3ac4b94b 100644 --- a/clients/moira/menus.c +++ b/clients/moira/menus.c @@ -561,6 +561,23 @@ Menu krbmap_menu = { } }; +Menu mitdir_menu = { + NULLFUNC, + NULLFUNC, + "MIT On-line Directory Preferences Menu", + 2, + { + { GetDirFlags, NULLMENU, 2, { + { "show", "Show Directory Preferences" }, + { "login", "Login name: " }, + } }, + { SetDirFlags, NULLMENU, 2, { + { "change", "Change Directory Preference" }, + { "login", "Login name: " }, + } }, + } +}; + /* * User Menu */ @@ -569,7 +586,7 @@ Menu user_menu = { NULLFUNC, NULLFUNC, "User Menu", - 11, + 12, { {ShowUserByLogin, NULLMENU, 2, { {"login", "Show user information by login name"}, @@ -605,6 +622,7 @@ Menu user_menu = { } }, SUBMENU("pobox", "Post Office Box Menu", &pobox_menu), SUBMENU("krbmap", "User Kerberos Mappings", &krbmap_menu), + SUBMENU("mitdir", "MIT On-line Directory Preferences", &mitdir_menu), } }; diff --git a/clients/moira/user.c b/clients/moira/user.c index 41059cb3..d72a04c6 100644 --- a/clients/moira/user.c +++ b/clients/moira/user.c @@ -1044,6 +1044,105 @@ char **argv; } +/* Function Name: GetDirFlags + * Description: Shows MITdir listing preferences + * Arguments: argc, argv - argv[1] contains the user login name + * Returns: none. + */ + +/* ARGSUSED */ +int +GetDirFlags(argc, argv) +int argc; +char **argv; +{ + int stat, flags; + struct qelem *elem = NULL; + char buf[BUFSIZ], **info; + + if (!ValidName(argv[1])) + return(DM_NORMAL); + + if ((stat = do_mr_query("get_user_directory_flags", 1, &argv[1], + StoreInfo, (char *)&elem)) != 0) { + com_err(program_name, stat, " in GetDirFlags."); + return(DM_NORMAL); + } + + info = (char **) QueueTop(elem)->q_data; + flags = atoi(info[0]); + FreeQueue(QueueTop(elem)); + + Put_message(""); + sprintf(buf, "User: %s", argv[1]); + Put_message(buf); + if (flags & DIRFLAGS_SUPPRESS) { + Put_message("Does NOT appear in the on-line directory."); + } else { + Put_message("Does appear in the on-line directory."); + if (flags & DIRFLAGS_NONLOCAL) { + Put_message("Is listed with non-MIT.EDU email address (if known)"); + } else { + Put_message("Is listed with MIT.EDU email address."); + } + } + + return(DM_NORMAL); +} + +/* Function Name: SetDirFlags + * Description: Update online directory preferences + * Arguments: argc, argv - the login name of the user in argv[1]. + * Returns: DM_NORMAL. + */ + +int +SetDirFlags(argc, argv) +int argc; +char **argv; +{ + int stat, flags; + char **info, buf[BUFSIZ], *args[2]; + struct qelem *elem = NULL; + + if (!ValidName(argv[1])) + return(DM_NORMAL); + + /* Fetch current prefs */ + if ((stat = do_mr_query("get_user_directory_flags", 1, &argv[1], + StoreInfo, (char *)&elem)) != 0) { + com_err(program_name, stat, " in GetDirFlags."); + return(DM_NORMAL); + } + info = (char **) QueueTop(elem)->q_data; + flags = atoi(info[0]); + FreeQueue(QueueTop(elem)); + + sprintf(buf, "List %s in the on-line directory (y/n)", argv[1]); + if (YesNoQuestion(buf, !(flags & DIRFLAGS_SUPPRESS))) + flags &= ~DIRFLAGS_SUPPRESS; + else + flags |= DIRFLAGS_SUPPRESS; + + sprintf(buf, "List MIT.EDU email address even when mail is forwarded elsewhere? (y/n)"); + if (YesNoQuestion(buf, !(flags & DIRFLAGS_NONLOCAL))) + flags &= ~DIRFLAGS_NONLOCAL; + else + flags |= DIRFLAGS_NONLOCAL; + + args[0] = argv[1]; + sprintf(buf, "%d", flags); + args[1] = buf; + if ( (stat = do_mr_query("update_user_directory_flags", 2, + args, Scream, NULL)) != MR_SUCCESS) + com_err(program_name, stat, " in SetDirFlags"); + else + Put_message("Directory preferences set."); + + return (DM_NORMAL); +} + +#ifdef DEBUG hex_dump(p) unsigned char *p; { @@ -1092,3 +1191,4 @@ unsigned char *p; } Put_message(buf); } +#endif