]> andersk Git - moira.git/blame_incremental - clients/moira/menus.c
Wildcards now work on gubl! users.type is no longer VARCHAR.
[moira.git] / clients / moira / menus.c
... / ...
CommitLineData
1#if (!defined(lint) && !defined(SABER))
2 static char rcsid_module_c[] = "$Header$";
3#endif lint
4
5/* This is the file menus.c for the MOIRA Client, which allows a nieve
6 * user to quickly and easily maintain most parts of the MOIRA database.
7 * It Contains: All menu definitions.
8 *
9 * Created: 4/11/88
10 * By: Chris D. Peterson
11 *
12 * $Source$
13 * $Author$
14 * $Header$
15 *
16 * Copyright 1988 by the Massachusetts Institute of Technology.
17 *
18 * For further information on copyright and distribution
19 * see the file mit-copyright.h
20 */
21
22#include <stdio.h>
23#include <menu.h>
24
25#include "mit-copyright.h"
26#include "defs.h"
27#include "f_defs.h"
28#include "globals.h"
29
30
31/* ------------------------- Second Tier Menus ------------------------- */
32
33/*
34 * Cluster Data Menu
35 */
36
37Menu cluster_data_menu = {
38 NULLFUNC,
39 NULLFUNC,
40 "Cluster Data Menu",
41 4,
42 {
43 { ShowClusterData, NULLMENU, 3, {
44 {"show", "Show Data on a given Cluster"},
45 {"clus", "Cluster's Name: "},
46 {"label", "Label Identifing the data: "},
47 } },
48 { AddClusterData, NULLMENU, 4, {
49 {"add", "Add Data to a given Cluster"},
50 {"clus", "Cluster Name: "},
51 {"label", "Label Identifing the data: "},
52 {"data", "The data to be added: "},
53 } },
54 { RemoveClusterData, NULLMENU, 3, {
55 {"delete", "Remove Data from a given Cluster"},
56 {"clus", "Cluster's Name: "},
57 {"label", "Label Identifing the data: "},
58 } },
59 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode)
60 }
61};
62
63/*
64 * List Information Menu
65 */
66
67Menu list_info_menu = {
68 NULLFUNC,
69 NULLFUNC,
70 "List Information Menu",
71 3,
72 {
73 SIMPLEFUNC("member",
74 "Show all lists to which a given member belongs",
75 ListByMember),
76 SIMPLEFUNC("admin",
77 "Show all items which a given member can administer",
78 ListByAdministrator),
79 SIMPLEFUNC("public", "Show all public mailing lists",
80 ListAllPublicMailLists),
81 }
82};
83
84/*
85 * List Member Menu
86 */
87
88Menu list_member_menu = {
89 ListmaintMemberMenuEntry,
90 ListmaintMemberMenuExit,
91 NULL,
92 7,
93 {
94 SIMPLEFUNC("add", "Add a member to this list", AddMember),
95 SIMPLEFUNC("remove", "Remove a member from this list", DeleteMember),
96 SIMPLEFUNC("all", "Show the members of this list", ListAllMembers),
97 SIMPLEFUNC("user", "Show the members of type USER", ListUserMembers),
98 SIMPLEFUNC("list", "Show the members of type LIST", ListListMembers),
99 SIMPLEFUNC("string", "Show the members of type STRING",
100 ListStringMembers),
101 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode)
102 }
103};
104
105/*
106 * Machine To Cluster Mappings Menu
107 */
108
109Menu mappings_menu = {
110 NULLFUNC,
111 NULLFUNC,
112 "Machine To Cluster Mappings Menu",
113 4,
114 {
115 { MachineToClusterMap, NULLMENU, 3, {
116 {"map", "Show Machine to cluster mapping"},
117 {"name", "Machine's Name: "},
118 {"cluster", "Cluster's Name: "},
119 } },
120 { AddMachineToCluster, NULLMENU, 3, {
121 {"addcluster","Add machine to a cluster"},
122 {"name","Machine's Name: "},
123 {"cluster", "Cluster's Name: "},
124 } },
125 { RemoveMachineFromCluster, NULLMENU, 3, {
126 {"remcluster", "Remove machines from clusters"},
127 {"name","Machine's Name: "},
128 {"cluster", "Cluster's Name: "},
129 } },
130 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode),
131 }
132};
133
134/*
135 * Post Office Box Menu
136 */
137
138Menu pobox_menu = {
139 NULLFUNC,
140 NULLFUNC,
141 "Post Office Box Menu",
142 4,
143 {
144 {GetUserPOBox, NULLMENU, 2, {
145 {"show", "Show a user's post office box"},
146 {"login name", "login name: "}
147 } },
148 {SetUserPOBox, NULLMENU, 2, {
149 {"set", "Set (Add or Change) a user's post office box"},
150 {"login name", "login name: "}
151 } },
152 {RemoveUserPOBox, NULLMENU, 2, {
153 {"remove", "Remove a user's post office box"},
154 {"login name", "login name: "}
155 } },
156 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode)
157 }
158};
159
160/*
161 * Quota Menu
162 */
163
164Menu quota_menu = {
165 NULLFUNC,
166 NULLFUNC,
167 "Quota Menu",
168 8,
169 {
170 SIMPLEFUNC("shdef", "Show default user quota (in KB)", ShowDefaultQuota),
171 {ChangeDefaultQuota, NULLMENU, 2, {
172 {"chdef", "Change default user quota"},
173 {"quota", "New quota (in KB): "}
174 } },
175 SIMPLEFUNC("getquota", "Show a quota on a filesystem",
176 GetQuota),
177 SIMPLEFUNC("getfsquotas", "Show all quotas on a filesystem",
178 GetQuotaByFilesys),
179 SIMPLEFUNC("addquota", "Add a new disk quota on a filesystem",
180 AddQuota),
181 SIMPLEFUNC("upquota", "Change a quota on a filesystem",
182 UpdateQuota),
183 SIMPLEFUNC("delquota", "Delete a quota on a filesystem",
184 DeleteQuota),
185 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode)
186 }
187};
188
189Menu fsgroup_menu = {
190 NULLFUNC,
191 NULLFUNC,
192 "Filesystem Group Menu",
193 6,
194 {
195 { GetFS, NULLMENU, 2, {
196 {"get", "Get individual or group filesystem information"},
197 {"name", "Name of Filesystem: "}
198 } },
199 { AddFSToGroup, NULLMENU, 3, {
200 {"add", "Add a new filesystem to an FS group"},
201 {"group", "FS Group name: "},
202 {"filsys", "Filesystem name: "}
203 } },
204 { RemoveFSFromGroup, NULLMENU, 3, {
205 {"remove", "Remove a filesystem from an FS group"},
206 {"group", "FS Group name: "},
207 {"filsys", "Filesystem name: "}
208 } },
209 { ChangeFSGroupOrder, NULLMENU, 2, {
210 {"order", "Change the order of filesystems in a group"},
211 {"group", "FS Group name: "}
212 } },
213 SIMPLEFUNC("help", "Info on Filesystem Groups", FSGroupHelp),
214 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode)
215 }
216};
217
218Menu service_menu = {
219 NULLFUNC,
220 NULLFUNC,
221 "DCM Service Menu",
222 6,
223 {
224 { showserv, NULLMENU, 2, {
225 { "showserv", "Show service information" },
226 { "service name", "Name of service: " },
227 } },
228 { addserv, NULLMENU, 2, {
229 { "addserv", "Add a new service" },
230 { "service name", "Name of service: " },
231 } },
232 { updateserv, NULLMENU, 2, {
233 { "updateserv", "Update service information" },
234 { "service name", "Name of service: " },
235 } },
236 { resetsrverr, NULLMENU, 2, {
237 { "resetsrverr", "Reset service error" },
238 { "service name", "Name of service: " },
239 } },
240 { resetsrvc, NULLMENU, 2, {
241 { "resetsrvc", "Reset service state" },
242 { "service name", "Name of service: " },
243 } },
244 { delserv, NULLMENU, 2, {
245 { "delserv", "Delete service info" },
246 { "service name", "Name of service: " },
247 } },
248 }
249};
250
251Menu host_menu = {
252 NULLFUNC,
253 NULLFUNC,
254 "DCM Host Menu",
255 7,
256 {
257 { showhost, NULLMENU, 3, {
258 { "showhost", "Show service/host tuple information" },
259 { "service name", "Name of service: " },
260 { "host name", "Name of machine: " },
261 } },
262 { addhost, NULLMENU, 3, {
263 { "addhost", "Add a new service/host tuple" },
264 { "service name", "Name of service: " },
265 { "host name", "Name of machine: " },
266 } },
267 { updatehost, NULLMENU, 3, {
268 { "updatehost", "Update a service/host tuple" },
269 { "service name", "Name of service: " },
270 { "host name", "Name of machine: " },
271 } },
272 { resethosterr, NULLMENU, 3, {
273 { "resethosterr", "Reset service/host error" },
274 { "service name", "Name of service: " },
275 { "host name", "Name of machine: " },
276 } },
277 { resethost, NULLMENU, 3, {
278 { "resethost", "Reset service/host state" },
279 { "service name", "Name of service: " },
280 { "host name", "Name of machine: " },
281 } },
282 { sethostor, NULLMENU, 3, {
283 { "override", "Set service/host override" },
284 { "service name", "Name of service: " },
285 { "host name", "Name of machine: " },
286 } },
287 { delhost, NULLMENU, 3, {
288 { "delhost", "Delete service/host tuple" },
289 { "service name", "Name of service: " },
290 { "host name", "Name of machine: " },
291 } },
292 }
293};
294
295/* ------------------------- First Tier Menus ------------------------- */
296
297/*
298 * Cluster Menu
299 */
300
301Menu cluster_menu = {
302 NULLFUNC,
303 NULLFUNC,
304 "Cluster Menu",
305 7,
306 {
307 { ShowClusterInfo, NULLMENU, 2, {
308 {"show", "Get cluster information"},
309 {"name", "Cluster's Name: "}
310 } },
311 { AddCluster, NULLMENU, 2, {
312 {"add", "Add a new cluster"},
313 {"name","Cluster's Name: "},
314 } },
315 { UpdateCluster, NULLMENU, 2, {
316 {"update", "Update cluster information"},
317 {"name","Cluster's Name: "},
318 } },
319 { DeleteCluster, NULLMENU, 2, {
320 {"delete", "Delete this cluster"},
321 {"name", "Cluster's Name: "}
322 } },
323 SUBMENU("mappings","Machine To Cluster Mappings Menu", &mappings_menu),
324 SUBMENU("c_data","Cluster Data Menu", &cluster_data_menu),
325 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode)
326 }
327};
328
329/*
330 * Filesystem Menu
331 */
332
333Menu filesys_menu = {
334 NULLFUNC,
335 NULLFUNC,
336 "Filesystem Menu",
337 10,
338 {
339 { GetFS, NULLMENU, 2, {
340 {"get", "Get Filesystem Name Information"},
341 {"name", "Name of Filesystem: "}
342 } },
343 { GetFSM, NULLMENU, 2, {
344 {"getmach", "Get Filesystems by Machine"},
345 {"name", "Name of Server: "}
346 } },
347 { AddFS, NULLMENU, 2, {
348 {"add", "Add New Filesystem to Database"},
349 {"name", "name: "},
350 } },
351 { ChangeFS, NULLMENU, 2, {
352 {"change", "Update Filesystem Information"},
353 {"name", "name: "},
354 } },
355 { DeleteFS, NULLMENU, 2, {
356 {"delete", "Delete Filesystem"},
357 {"name", "Filesystem Name: "}
358 } },
359 SUBMENU("fsgroups", "File System Groups Menu", &fsgroup_menu),
360 { GetFSAlias, NULLMENU, 2, {
361 {"check", "Check An Association"},
362 {"name", "alias name : "}
363 } },
364 { CreateFSAlias, NULLMENU, 2, {
365 {"alias", "Associate with a Filesystem"},
366 {"name", "alias name : "},
367 } },
368 { DeleteFSAlias, NULLMENU, 2, {
369 {"unalias", "Disassociate from a Filesystem"},
370 {"name", "alias name : "},
371 } },
372 SUBMENU("quotas","Quota Menu", &quota_menu),
373/* SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode), */
374/* SIMPLEFUNC("help", "Help ..", AttachHelp) */
375 }
376};
377
378/*
379 * Machine Menu
380 */
381
382Menu machine_menu = {
383 NULLFUNC,
384 NULLFUNC,
385 "Machine Menu",
386 6,
387 {
388 { ShowMachineInfo, NULLMENU, 2, {
389 {"show","Get machine information"},
390 {"name","Machine's Name: "}
391 } },
392 { AddMachine, NULLMENU, 2, {
393 {"add","Add a new machine"},
394 {"name","Machine's Name: "},
395 } },
396 { UpdateMachine, NULLMENU, 2, {
397 {"update","Update machine information"},
398 {"name","Machine's Name: "},
399 } },
400 { DeleteMachine, NULLMENU, 2, {
401 {"delete","Delete this machine"},
402 {"name","Machine's Name: "}
403 } },
404 SUBMENU("mappings","Machine To Cluster Mappings Menu", &mappings_menu),
405 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode)
406 }
407};
408
409/*
410 * List Menu
411 */
412
413Menu list_menu = {
414 NULLFUNC,
415 NULLFUNC,
416 "List Menu",
417 9,
418 {
419 { ShowListInfo, NULLMENU, 2, {
420 {"show", "Display information about a list"},
421 {"list name", "Name of list: "}
422 } },
423 { NULLFUNC, &list_member_menu, 2, {
424 {"add", "Create new List"},
425 {"list name", "Name of list: "}
426 } },
427 { UpdateList, NULLMENU, 2, {
428 {"update", "Update characteristics of a list"},
429 {"list name", "Name of list: "}
430 } },
431 { DeleteList, NULLMENU, 2, {
432 {"delete", "Delete a List"},
433 {"list name", "Name of list: "}
434 } },
435 SIMPLEFUNC("query_remove",
436 "Interactively remove an item from all lists",
437 InterRemoveItemFromLists),
438 { NULLFUNC, &list_member_menu, 2, {
439 {"members", "Member Menu - Change/Show Members of a List."},
440 {"list name", "Name of list: "}
441 } },
442 SUBMENU("list_info", "List Info Menu",
443 &list_info_menu),
444 SUBMENU("quotas","Quota Menu", &quota_menu),
445/* SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode), */
446 SIMPLEFUNC("help", "Print Help", ListHelp)
447 }
448};
449
450/*
451 * NFS Physical Menu
452 */
453
454Menu nfsphys_menu = {
455 NULLFUNC,
456 NULLFUNC,
457 "NFS Physical Menu",
458 6,
459 {
460 { ShowNFSService, NULLMENU, 2, {
461 { "show", "Show an NFS server" },
462 { "machine", "Machine Name: "},
463 } },
464 { AddNFSService, NULLMENU, 2, {
465 { "add", "Add NFS server" },
466 { "machine", "Machine Name: "},
467 } },
468 { UpdateNFSService, NULLMENU, 2, {
469 { "update", "Update NFS server"},
470 { "machine", "Machine Name: "},
471 } },
472 { DeleteNFSService, NULLMENU, 2, {
473 { "delete", "Delete NFS server"},
474 {"machine", "Machine Name: "},
475 } },
476 SUBMENU("quotas","Quota Menu", &quota_menu),
477 SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode),
478/* SIMPLEFUNC("help", "Help", NFSHelp), */
479 }
480};
481
482Menu krbmap_menu = {
483 NULLFUNC,
484 NULLFUNC,
485 "User Kerberos Mapping Menu",
486 3,
487 {
488 { GetKrbmap, NULLMENU, 3, {
489 { "show", "Show Kerberos Mappings" },
490 { "user", "User login name: " },
491 { "principal", "Principal: " },
492 } },
493 { AddKrbmap, NULLMENU, 3, {
494 { "add", "Add Kerberos Mapping" },
495 { "user", "User login name: " },
496 { "principal", "Principal (this is case sensitive): " },
497 } },
498 { DeleteKrbmap, NULLMENU, 3, {
499 { "delete", "Delete Kerberos Mapping" },
500 { "user", "User login name: " },
501 { "principal", "Principal: " },
502 } },
503 }
504};
505
506/*
507 * User Menu
508 */
509
510Menu user_menu = {
511 NULLFUNC,
512 NULLFUNC,
513 "User Menu",
514 11,
515 {
516 {ShowUserByLogin, NULLMENU, 2, {
517 {"login", "Show user information by login name"},
518 {"login name", "Desired login name: "}
519 } },
520 {ShowUserByName, NULLMENU, 3, {
521 {"name", "Show user information by name"},
522 {"first", "First name: "},
523 {"last", "Last name: "}
524 } },
525 {ShowUserByClass, NULLMENU, 2, {
526 {"class", "Show names of users in a given class"},
527 {"login name", "Desired class: "}
528 } },
529 {UpdateUser, NULLMENU, 2, {
530 {"modify", "Change all user fields"},
531 {"login", "Login name: "}
532 } },
533 SIMPLEFUNC("adduser", "Add a new user to the database",
534 AddNewUser),
535 SIMPLEFUNC("register", "Register a user", RegisterUser),
536 {DeactivateUser, NULLMENU, 2, {
537 {"deactivate", "Deactivate user"},
538 {"login", "Login name: "},
539 } },
540 {DeleteUser, NULLMENU, 2, {
541 {"expunge", "Expunge user"},
542 {"login", "Login name: "}
543 } },
544 SUBMENU("pobox", "Post Office Box Menu", &pobox_menu),
545 SUBMENU("quota", "Quota Menu", &quota_menu),
546 SUBMENU("krbmap", "User Kerberos Mappings", &krbmap_menu),
547 }
548};
549
550Menu dcm_menu = {
551 NULLFUNC,
552 NULLFUNC,
553 "DCM Menu",
554 6,
555 {
556 SIMPLEFUNC("enable", "Enable/disable DCM", EnableDcm),
557 SUBMENU("service", "DCM Service Menu", &service_menu),
558 SUBMENU("host", "DCM Host Menu", &host_menu),
559 SIMPLEFUNC("active", "Display entries currently being updated",
560 InProgress),
561 SIMPLEFUNC("failed", "Display entries with errors to be reset",
562 DcmFailed),
563 SIMPLEFUNC("dcm", "Invoke a DCM update now", Dcm),
564 }
565};
566
567/*
568 * Printcap Printer Menu
569 */
570
571Menu printer_menu = {
572 NULLFUNC,
573 NULLFUNC,
574 "Printer Menu",
575 4,
576 {
577 { GetPcap, NULLMENU, 2, {
578 {"get", "Get Printcap Entry Information"},
579 {"name", "Name of Printer: "}
580 } },
581 { AddPcap, NULLMENU, 2, {
582 {"add", "Add New Printcap Entry to Database"},
583 {"name", "name: "},
584 } },
585 { ChngPcap, NULLMENU, 2, {
586 {"change", "Update Printer Information"},
587 {"name", "name: "},
588 } },
589 { DeletePcap, NULLMENU, 2, {
590 {"delete", "Delete Printcap Entry"},
591 {"name", "Printer Name: "}
592 } }
593 }
594};
595
596
597/*
598 * Palladium Printer Menu
599 */
600
601Menu palladium_menu = {
602 NULLFUNC,
603 NULLFUNC,
604 "Printer Menu",
605 7,
606 {
607 { GetPalladium, NULLMENU, 2, {
608 {"get", "Get Palladium Server/Supervisor Information"},
609 {"name", "Name of Printer: "}
610 } },
611 { AddPalladium, NULLMENU, 2, {
612 {"add", "Add New Palladium Server/Supervisor to Database"},
613 {"name", "Supervisor/server name: "},
614 } },
615 { ChngPalladium, NULLMENU, 2, {
616 {"change", "Update Palladium Server/Supervisor Information"},
617 {"name", "name: "},
618 } },
619 { DeletePalladium, NULLMENU, 2, {
620 {"delete", "Delete Palladium Server/Supervisor Entry"},
621 {"name", "Printer Name: "}
622 } },
623 { ShowPalladiumAlias, NULLMENU, 3, {
624 {"getprinter", "Show Logical Printers"},
625 {"newname", "Printer name: "},
626 {"server", "Supervisor or Server name: "},
627 } },
628 { AddPalladiumAlias, NULLMENU, 3, {
629 {"addprinter", "Add Logical Printer"},
630 {"newname", "New printer: "},
631 {"server", "Supervisor or Server name: "},
632 } },
633 { DeletePalladiumAlias, NULLMENU, 3, {
634 {"delprinter", "Remove Logical Printer"},
635 {"newname", "Printer name: "},
636 {"server", "Supervisor or Server name: "},
637 } },
638 }
639};
640
641
642
643/*
644 * Zephyr Menu
645 */
646
647Menu zephyr_menu = {
648 NULLFUNC,
649 NULLFUNC,
650 "Zephyr Menu",
651 5,
652 {
653 { GetZephyr, NULLMENU, 2, {
654 {"get", "Get Zephyr Class Information"},
655 {"name", "Name of class: "}
656 } },
657 { AddZephyr, NULLMENU, 2, {
658 {"add", "Add New Zephyr class restrictions"},
659 {"name", "Class name: "},
660 } },
661 { ChngZephyr, NULLMENU, 2, {
662 {"change", "Update Zephyr class restrictions"},
663 {"name", "Class name: "},
664 } },
665 { DeleteZephyr, NULLMENU, 2, {
666 {"delete", "Delete Zephyr class restriction"},
667 {"name", "Class Name: "}
668 } },
669 { NULLFUNC, &list_member_menu, 2, {
670 {"members", "Member Menu - Change/Show Members of a List."},
671 {"list name", "Name of list: "}
672 } },
673 }
674};
675
676
677/*
678 * Miscellaneous Menu
679 */
680
681Menu misc_menu = {
682 NULLFUNC,
683 NULLFUNC,
684 "Miscellaneous Menu",
685 4,
686 {
687 SIMPLEFUNC("statistics", "Show database statistics", TableStats),
688 SIMPLEFUNC("clients", "Show active Moira clients", ShowClients),
689 { ShowValue, NULLMENU, 2, {
690 {"getval", "Show a database variable value"},
691 {"name", "variable name: "},
692 } },
693 { ShowAlias, NULLMENU, 3, {
694 {"getalias", "Show an alias relation"},
695 {"name", "Alias name: "},
696 {"type", "Alias type: "},
697 } },
698 }
699};
700
701
702/* ------------------------- Root Menu ------------------------- */
703
704/*
705 * Moira top menu
706 */
707
708Menu moira_top_menu = {
709 NULLFUNC,
710 NULLFUNC,
711 "Moira Database Manipulation",
712 11,
713 {
714 SUBMENU("cluster","Cluster Menu",&cluster_menu),
715 SUBMENU("filesys","Filesystem Menu", &filesys_menu),
716 SUBMENU("list","Lists and Group Menu", &list_menu),
717 SUBMENU("machine","Machine Menu",&machine_menu),
718 SUBMENU("nfs","NFS Physical Menu", &nfsphys_menu),
719 SUBMENU("user","User Menu", &user_menu),
720 SUBMENU("printcap", "Printcap Printer Menu", &printer_menu),
721 SUBMENU("palladium", "Palladium Printer Menu", &palladium_menu),
722 SUBMENU("zephyr", "Zephyr ACLS Menu", &zephyr_menu),
723 SUBMENU("dcm", "DCM Menu", &dcm_menu),
724 SUBMENU("misc", "Miscellaneous Menu", &misc_menu)
725 }
726};
This page took 0.035173 seconds and 5 git commands to generate.