]> andersk Git - moira.git/blob - clients/mmoira/display.c
*** empty log message ***
[moira.git] / clients / mmoira / display.c
1 /* $Header$
2  */
3
4 #include <stdio.h>
5 #include <moira.h>
6 #include <moira_site.h>
7 #include <sys/types.h>
8 #include <netdb.h>
9 #include <sys/socket.h>
10 #include <netinet/in.h>
11 #include <Xm/Xm.h>
12 #include "mmoira.h"
13
14
15 /******* temporary ********/
16 char *atot(s) char *s; { return s; }
17
18
19 static save_info(argc, argv, sq)
20 int argc;
21 char **argv;
22 struct save_queue *sq;
23 {
24     sq_save_args(argc, argv, sq);
25 }
26
27
28 int DisplayCallback(argc, info, form)
29 int argc;
30 char **info;
31 EntryForm *form;
32 {
33     char buf[1024], name[128];
34     char *MOD_FORMAT = "Modified by %s at %s with %s\n";
35     int i;
36
37     switch (form->menu->operation) {
38     case MM_SHOW_USER:
39         sprintf(name, "%s, %s %s", info[U_LAST], info[U_FIRST], info[U_MIDDLE]);
40         sprintf(buf, "Login name: %-20s Full name: %s\n", info[U_NAME], name);
41         AppendToLog(buf);
42         sprintf(buf, "User id: %-23s Login shell %-10s Class: %s\n", 
43                 info[U_UID], info[U_SHELL], info[U_CLASS]);
44         AppendToLog(buf);
45         sprintf(buf, "Account is: %-20s Encrypted MIT ID number: %s\n",
46                 user_states[atoi(info[U_STATE])], info[U_MITID]);
47         AppendToLog(buf);
48         sprintf(buf, MOD_FORMAT,
49                 info[U_MODBY], info[U_MODTIME],info[U_MODWITH]);
50         AppendToLog(buf);
51         break;
52     case MM_SHOW_FINGER:
53         sprintf(buf, "Finger information for user %s:\n", info[F_NAME]);
54         AppendToLog(buf);
55         sprintf(buf, "Login name: %-27s In real life: %s\n", info[F_NAME],
56                 info[F_FULLNAME]);
57         AppendToLog(buf);
58         sprintf(buf, "Nickname: %-29s Department: %s\n", info[F_NICKNAME],
59                 info[F_MIT_DEPT]);
60         AppendToLog(buf);
61         sprintf(buf, "Home: %-33s Home phone: %s\n", info[F_HOME_ADDR],
62                 info[F_HOME_PHONE]);
63         AppendToLog(buf);
64         sprintf(buf, "Office: %-31s Office phone: %s\n", info[F_OFFICE_ADDR],
65                 info[F_OFFICE_PHONE]);
66         AppendToLog(buf);
67         sprintf(buf, MOD_FORMAT, info[F_MODBY], info[F_MODTIME],
68                 info[F_MODWITH]);
69         AppendToLog(buf);
70         break;
71     case MM_SHOW_POBOX:
72         sprintf(buf, "Post Office information for user %s:\n", info[PO_NAME]);
73         AppendToLog(buf);
74         sprintf(buf, "type: %-8s Box: %s\n", info[PO_TYPE], info[PO_BOX]);
75         AppendToLog(buf);
76         sprintf(buf, MOD_FORMAT, info[4], info[3], info[5]);
77         AppendToLog(buf);
78         break;
79     case MM_SHOW_KRBMAP:
80         sprintf(buf, "Kerberos mapping: User %-9s Principal %s\n",
81                 info[KMAP_USER], info[KMAP_PRINCIPAL]);
82         AppendToLog(buf);
83         break;
84     case MM_SHOW_FILSYS:
85     case MM_SHOW_FSGROUP:
86         if (!strcmp(info[FS_TYPE], "FSGROUP")) {
87             int stat;
88             char **argv;
89             struct save_queue *sq;
90
91             sprintf(buf,"%20s Filesystem Group: %s\n", " ", info[FS_NAME]);
92             AppendToLog(buf);
93
94             sprintf(buf,"Comments: %s\n",info[FS_COMMENTS]);
95             AppendToLog(buf);
96             sprintf(buf, MOD_FORMAT, info[FS_MODBY], info[FS_MODTIME], 
97                     info[FS_MODWITH]);
98             AppendToLog(buf);
99             AppendToLog("Containing the filesystems (in order):");
100
101             sq = sq_create();
102             if ((stat = MoiraQuery("get_fsgroup_members", 1, &info[FS_NAME],
103                                     save_info, (char *)sq)) != 0) {
104                 if (stat == MR_NO_MATCH)
105                   AppendToLog("    [no members]");
106                 else
107                   com_err(program_name, stat, NULL);
108             } else {
109                 while (sq_get_data(sq, &argv)) {
110                     sprintf(buf, "  Filesystem: %-32s (sort key: %s)",
111                             info[0], info[1]);
112                     free(argv[0]);
113                     free(argv[1]);
114                     free(argv);
115                 }
116                 sq_destroy(sq);
117             }
118         } else {
119             sprintf(buf,"Filesystem: %s\n", info[FS_NAME]);
120             AppendToLog(buf);
121             sprintf(buf,"Type: %-40s Machine: %-15s\n",
122                     info[FS_TYPE], info[FS_MACHINE]);
123             AppendToLog(buf);
124             sprintf(buf,"Default Access: %-2s Packname: %-17s Mountpoint %s \n",
125                     info[FS_ACCESS], info[FS_PACK], info[FS_M_POINT]);
126             AppendToLog(buf);
127             sprintf(buf,"Comments: %s\n",info[FS_COMMENTS]);
128             AppendToLog(buf);
129             sprintf(buf, "User Ownership: %-30s Group Ownership: %s\n",
130                     info[FS_OWNER], info[FS_OWNERS]);
131             AppendToLog(buf);
132             sprintf(buf, "Auto Create: %-34s Locker Type: %s\n",
133                     atoi(info[FS_CREATE]) ? "ON" : "OFF", 
134                     info[FS_L_TYPE]);
135             AppendToLog(buf);
136             sprintf(buf, MOD_FORMAT, info[FS_MODBY], info[FS_MODTIME], 
137                     info[FS_MODWITH]);
138             AppendToLog(buf);
139         }
140         break;
141     case MM_SHOW_NFS:
142         sprintf(buf,"Machine: %-20s Directory: %-15s Device: %s\n",
143                 info[NFS_NAME], info[NFS_DIR], info[NFS_DEVICE]);
144         AppendToLog(buf);
145         sprintf(buf, "Status: %s\n",
146                 format_filesys_type(info[NFS_STATUS]));
147         AppendToLog(buf);
148         sprintf(buf, "Quota Allocated: %-17s Size: %s\n",
149                 info[NFS_ALLOC], info[NFS_SIZE]);
150         AppendToLog(buf);
151         sprintf(buf, MOD_FORMAT, info[NFS_MODBY], info[NFS_MODTIME],
152                 info[NFS_MODWITH]);
153         AppendToLog(buf);
154         break;
155     case MM_SHOW_QUOTA:
156         if (!strcmp(info[Q_TYPE], "ANY"))
157           sprintf(buf, "Filesystem: %s\n", info[Q_FILESYS]);
158         else
159           sprintf(buf, "Filesystem: %-45s %s %s\n", info[Q_FILESYS],
160                   info[Q_TYPE], info[Q_NAME]);
161         AppendToLog(buf);
162         sprintf(buf, "Machine: %-20s Directory: %-15s\n",
163                 info[Q_MACHINE], info[Q_DIRECTORY]);
164         AppendToLog(buf);
165         sprintf(buf, "Quota: %s\n", info[Q_QUOTA]);
166         AppendToLog(buf);
167         sprintf(buf, MOD_FORMAT, info[Q_MODBY], info[Q_MODTIME], info[Q_MODWITH]);
168         AppendToLog(buf);
169         break;
170     case MM_SHOW_LIST:
171         (void) sprintf(buf, "List: %s\n", info[L_NAME]);
172         AppendToLog(buf);
173         (void) sprintf(buf, "Description: %s\n", info[L_DESC]);
174         AppendToLog(buf);
175         if ( atoi(info[L_MAILLIST]))
176           AppendToLog("This list is a mailing list.\n");
177         else
178           AppendToLog("This list is NOT a mailing list.\n");
179         if (atoi(info[L_GROUP])) {
180             (void) sprintf(buf,"This list is a Group and its ID number is %s\n",
181                            info[L_GID]);
182             AppendToLog(buf);
183         } else
184           AppendToLog("This list is NOT a Group.\n");
185         if (strcmp(info[L_ACE_TYPE],"NONE") == 0)
186           AppendToLog("This list has no Administrator, how strange?!\n");
187         else {
188             sprintf(buf, "The Administrator of this list is the %s: %s\n",
189                     info[L_ACE_TYPE], info[L_ACE_NAME]);
190             AppendToLog(buf);
191         }
192         (void) sprintf(buf, "This list is: %s, %s, and %s\n",
193                        atoi(info[L_ACTIVE]) ? "active" : "inactive",
194                        atoi(info[L_PUBLIC]) ? "public" : "private",
195                        atoi(info[L_HIDDEN]) ? "hidden" : "visible");
196         AppendToLog(buf);
197         sprintf(buf, MOD_FORMAT, info[L_MODBY], info[L_MODTIME], info[L_MODWITH]);
198         AppendToLog(buf);
199         break;
200     case MM_SHOW_MACH:
201         sprintf(buf, "Machine: %-30s Type: %s\n", info[M_NAME], info[M_TYPE]);
202         AppendToLog(buf);
203         sprintf(buf, MOD_FORMAT, info[M_MODBY], info[M_MODTIME], info[M_MODWITH]);
204         AppendToLog(buf);
205         break;
206     case MM_SHOW_CLUSTER:
207         sprintf(buf, "Cluster:     %s\n", info[C_NAME]);
208         AppendToLog(buf);
209         sprintf(buf, "Description: %s\n", info[C_DESCRIPT]);
210         AppendToLog(buf);
211         sprintf(buf, "Location:    %s\n", info[C_LOCATION]);
212         AppendToLog(buf);
213         sprintf(buf, MOD_FORMAT, info[C_MODBY], info[C_MODTIME], info[C_MODWITH]);
214         AppendToLog(buf);
215         break;
216     case MM_SHOW_CLDATA:
217         sprintf(buf, "Cluster: %-20s Label: %-15s Data: %s\n",
218                 info[CD_NAME], info[CD_LABEL], info[CD_DATA]);
219         AppendToLog(buf);
220         break;
221     case MM_SHOW_MCMAP:
222         sprintf(buf, "Machine: %-20s Cluster: %s\n", info[0], info[1]);
223         AppendToLog(buf);
224         break;
225     case MM_SHOW_MEMBERS:
226         if (argc == 2)
227           sprintf(buf, "%-9s %s\n", info[0], info[1]);
228         else
229           sprintf(buf, "%s\n", info[0]);
230         AppendToLog(buf);
231         break;
232     case MM_STATS:
233         sprintf(buf, "Table: %-20s Modified: %s\n", info[0], info[5]);
234         AppendToLog(buf);
235         sprintf(buf, "  %-8D appends, %-8d updates, %-8d deletes\n",
236                 info[2], info[3], info[4]);
237         AppendToLog(buf);
238         break;
239     case MM_CLIENTS:
240         {
241             unsigned long host_address;
242             struct hostent *host_entry;
243
244             host_address = inet_addr(info[1]);
245             if (host_address != NULL) {
246                 host_entry = gethostbyaddr((char *)&host_address, 4, AF_INET);
247                 if (host_entry != NULL) {
248                     free(info[1]);
249                     info[1] = strsave(host_entry->h_name);
250                 }
251             }
252         }
253         sprintf(buf, "Principal %s on %s (%s)\n", info[0], info[1], info[2]);
254         AppendToLog(buf);
255         sprintf(buf, "  Connected at %s, client %s\n", info[3], info[4]);
256         AppendToLog(buf);
257         break;
258     case MM_SHOW_VALUE:
259         sprintf(buf, "Variable: %-20s Value: %s\n", stringval(form, 0),
260                 info[0]);
261         AppendToLog(buf);
262         break;
263     case MM_SHOW_ALIAS:
264         sprintf(buf, "Alias: %-20s Type: %-8s Value: %s\n",
265                 info[0], info[1], info[2]);
266         AppendToLog(buf);
267         break;
268     case MM_SHOW_HOST:
269         sprintf(buf, "%s:%s  mod by %s on %s with %s\n", info[SH_MACHINE],
270                 info[SH_SERVICE], info[SH_MODBY], info[SH_MODTIME],
271                 info[SH_MODWITH]);
272         AppendToLog(buf);
273         if (atoi(info[SH_HOSTERROR]))
274           sprintf(name, "Error %d: %s", atoi(info[SH_HOSTERROR]),
275                   info[SH_ERRMSG]);
276         else
277           strcpy(name, "No error");
278         sprintf(buf, "  %s/%s/%s/%s/%s\n",
279                 atoi(info[SH_ENABLE]) ? "Enabled" : "Disabled",
280                 atoi(info[SH_SUCCESS]) ? "Success" : "Failure",
281                 atoi(info[SH_INPROGRESS]) ? "InProgress" : "Idle",
282                 atoi(info[SH_OVERRIDE]) ? "Override" : "Normal", name);
283         AppendToLog(buf);
284         AppendToLog("  Last Try             Last Success         Value1    Value2    Value3\n");
285         strcpy(name, atot(info[SH_LASTTRY]));
286         sprintf(buf, "  %-20s %-20s %-9d %-9d %s\n", name,
287                 atot(info[SH_LASTSUCCESS]), atoi(info[SH_VALUE1]),
288                 atoi(info[SH_VALUE2]), info[SH_VALUE3]);
289         AppendToLog(buf);
290         break;
291     case MM_SHOW_DQUOTA:
292         sprintf(buf, "The default quota is %s Kbytes.\n", info[0]);
293         AppendToLog(buf);
294         break;
295     case MM_SHOW_DCM:
296         if (argc == 2)
297           sprintf(buf, "%s:%s\n", info[0], info[1]);
298         else
299           sprintf(buf, "%s\n", info[0]);
300         AppendToLog(buf);
301         break;
302     case MM_SHOW_PCAP:
303         sprintf(buf, "Printer: %-35s Spool host: %s\n", info[PCAP_NAME],
304                 info[PCAP_SPOOL_HOST]);
305         AppendToLog(buf);
306         sprintf(buf, "Spool directory: %-27s Remote Printer Name: %s\n",
307                 info[PCAP_SPOOL_DIR], info[PCAP_RPRINTER]);
308         AppendToLog(buf);
309         sprintf(buf, "Authentication: %-3s Price/page: %-3s  Quota Server: %s\n",
310                 atoi(info[PCAP_AUTH]) ? "yes" : "no",
311                 info[PCAP_PRICE], info[PCAP_QSERVER]);
312         AppendToLog(buf);
313         sprintf(buf, "Comments: %s\n", info[PCAP_COMMENTS]);
314         AppendToLog(buf);
315         sprintf(buf, MOD_FORMAT, info[PCAP_MODBY], info[PCAP_MODTIME], 
316                 info[PCAP_MODWITH]);
317         AppendToLog(buf);
318         break;
319     case MM_SHOW_ZEPHYR:
320         sprintf(buf, "Zephyr class: %s\n", info[ZA_CLASS]);
321         AppendToLog(buf);
322         if (!strcmp("NONE", info[ZA_XMT_TYPE]))
323           name[0] = 0;
324         else
325           sprintf(name, "Name: %s", info[ZA_XMT_ID]);
326         sprintf(buf, "XMT ACL Type %s %s\n", info[ZA_XMT_TYPE], name);
327         AppendToLog(buf);
328         if (!strcmp("NONE", info[ZA_SUB_TYPE]))
329           name[0] = 0;
330         else
331           sprintf(name, "Name: %s", info[ZA_SUB_ID]);
332         sprintf(buf, "SUB ACL Type %s %s\n", info[ZA_SUB_TYPE], name);
333         AppendToLog(buf);
334         if (!strcmp("NONE", info[ZA_IWS_TYPE]))
335           name[0] = 0;
336         else
337           sprintf(name, "Name: %s", info[ZA_IWS_ID]);
338         sprintf(buf, "IWS ACL Type %s %s\n", info[ZA_IWS_TYPE], name);
339         AppendToLog(buf);
340         if (!strcmp("NONE", info[ZA_IUI_TYPE]))
341           name[0] = 0;
342         else
343           sprintf(name, "Name: %s", info[ZA_IUI_ID]);
344         sprintf(buf, "IUI ACL Type %s %s\n", info[ZA_IUI_TYPE], name);
345         AppendToLog(buf);
346         break;
347     default:
348         for (i = 0; i < argc; i++) {
349             if (i != 0) AppendToLog(", ");
350             AppendToLog(info[i]);
351         }
352         AppendToLog("\n");
353     }
354     return(MR_CONT);
355 }
This page took 0.069097 seconds and 5 git commands to generate.