]> andersk Git - moira.git/blame - clients/mmoira/display.c
*** empty log message ***
[moira.git] / clients / mmoira / display.c
CommitLineData
83d3aa0c 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 ********/
16char *atot(s) char *s; { return s; }
17
18
b2d21e59 19static save_info(argc, argv, sq)
20int argc;
21char **argv;
22struct save_queue *sq;
23{
24 sq_save_args(argc, argv, sq);
25}
26
83d3aa0c 27
28int DisplayCallback(argc, info, form)
29int argc;
30char **info;
31EntryForm *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:
b2d21e59 53 sprintf(buf, "Finger information for user %s:\n", info[F_NAME]);
83d3aa0c 54 AppendToLog(buf);
55 sprintf(buf, "Login name: %-27s In real life: %s\n", info[F_NAME],
56 info[F_FULLNAME]);
57 AppendToLog(buf);
b2d21e59 58 sprintf(buf, "Nickname: %-29s Department: %s\n", info[F_NICKNAME],
59 info[F_MIT_DEPT]);
60 AppendToLog(buf);
83d3aa0c 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:
b2d21e59 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]);
83d3aa0c 75 AppendToLog(buf);
76 sprintf(buf, MOD_FORMAT, info[4], info[3], info[5]);
77 AppendToLog(buf);
78 break;
79 case MM_SHOW_KRBMAP:
b2d21e59 80 sprintf(buf, "Kerberos mapping: User %-9s Principal %s\n",
83d3aa0c 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;
b2d21e59 88 char **argv;
89 struct save_queue *sq;
83d3aa0c 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):");
b2d21e59 100
101 sq = sq_create();
102 if ((stat = MoiraQuery("get_fsgroup_members", 1, &info[FS_NAME],
103 save_info, (char *)sq)) != 0) {
83d3aa0c 104 if (stat == MR_NO_MATCH)
105 AppendToLog(" [no members]");
106 else
107 com_err(program_name, stat, NULL);
108 } else {
b2d21e59 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);
83d3aa0c 117 }
83d3aa0c 118 } else {
b2d21e59 119 sprintf(buf,"Filesystem: %s\n", info[FS_NAME]);
83d3aa0c 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);
83d3aa0c 145 sprintf(buf, "Status: %s\n",
b2d21e59 146 format_filesys_type(info[NFS_STATUS]));
83d3aa0c 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:
b2d21e59 171 (void) sprintf(buf, "List: %s\n", info[L_NAME]);
83d3aa0c 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;
b2d21e59 221 case MM_SHOW_MCMAP:
222 sprintf(buf, "Machine: %-20s Cluster: %s\n", info[0], info[1]);
223 AppendToLog(buf);
224 break;
83d3aa0c 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;
b2d21e59 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;
83d3aa0c 347 default:
348 for (i = 0; i < argc; i++) {
349 if (i != 0) AppendToLog(", ");
350 AppendToLog(info[i]);
351 }
352 AppendToLog("\n");
353 }
83d3aa0c 354 return(MR_CONT);
355}
This page took 0.097944 seconds and 5 git commands to generate.