]> andersk Git - moira.git/blame - clients/moira/dcmmaint.c
fixed include files
[moira.git] / clients / moira / dcmmaint.c
CommitLineData
cc5b487a 1/* $Header$
44d40e72 2 *
3 * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
4 * For copying and distribution information, please see the file
5 * <mit-copyright.h>.
cc5b487a 6 */
7
8#include <stdio.h>
9#include <strings.h>
10#include <ctype.h>
11#include <sms.h>
3ed06d63 12#include <sms_app.h>
cc5b487a 13#include <menu.h>
14
15#include "mit-copyright.h"
16#include "defs.h"
17#include "f_defs.h"
18#include "globals.h"
cc5b487a 19
3ed06d63 20extern char *whoami;
cc5b487a 21static char buf[BUFSIZ];
44d40e72 22char *unparse_interval(), *canonicalize_hostname();
cc5b487a 23char *atot();
24
25#define DCM_ENABLE_FLAG 0
26
44d40e72 27genable(argc, argv, info)
cc5b487a 28int argc;
29char **argv;
44d40e72 30char **info;
cc5b487a 31{
44d40e72 32 info[1] = strsave(argv[0]);
cc5b487a 33 return(SMS_CONT);
34}
35
3ed06d63 36EnableDcm(argc, argv)
cc5b487a 37int argc;
38char **argv;
39{
44d40e72 40 int status;
41 char *info[3];
cc5b487a 42
44d40e72 43 info[0] = "dcm_enable";
44 if (status = do_sms_query("get_value", 1, info, genable, info))
cc5b487a 45 com_err(whoami, status, " while getting value of dcm_enable");
44d40e72 46 GetValueFromUser("Enable value", &info[1]);
47 if (status = do_sms_query("update_value", 2, info, Scream, NULL))
cc5b487a 48 com_err(whoami, status, " while updating value of dcm_enable");
44d40e72 49 FreeAndClear(&info[0], FALSE);
50 FreeAndClear(&info[1], TRUE);
cc5b487a 51 return(DM_NORMAL);
52}
53
54
55int shserv(argc, argv)
56int argc;
57char **argv;
58{
59 char tmp[64], *dfgen;
60
44d40e72 61 Put_message("Name Type Owner Modified");
62 sprintf(tmp, "%s:%s", argv[SVC_ACE_TYPE], argv[SVC_ACE_NAME]);
63 sprintf(buf, "%-10s %-8s %-11s by %s on %s with %s", argv[SVC_SERVICE],
64 argv[SVC_TYPE], tmp, argv[SVC_MODBY], argv[SVC_MODTIME],
65 argv[SVC_MODWITH]);
cc5b487a 66 Put_message(buf);
67 sprintf(buf, " Interval %s, Target:%s, Script:%s",
44d40e72 68 unparse_interval(atoi(argv[SVC_INTERVAL])), argv[SVC_TARGET],
69 argv[SVC_SCRIPT]);
cc5b487a 70 Put_message(buf);
44d40e72 71 if (atoi(argv[SVC_HARDERROR]))
72 sprintf(tmp, "Error %d: %s", atoi(argv[SVC_HARDERROR]), argv[SVC_ERRMSG]);
cc5b487a 73 else
74 strcpy(tmp, "No error");
44d40e72 75 dfgen = strsave(atot(argv[SVC_DFGEN]));
76 sprintf(buf, " Generated %s; Last Checked %s", dfgen,
77 atot(argv[SVC_DFCHECK]));
cc5b487a 78 free(dfgen);
79 Put_message(buf);
44d40e72 80 sprintf(buf, " %s/%s/%s", atoi(argv[SVC_ENABLE]) ? "Enabled" : "Disabled",
81 atoi(argv[SVC_INPROGRESS]) ? "InProgress" : "Idle", tmp);
cc5b487a 82 Put_message(buf);
83 Put_message("");
84 return(SMS_CONT);
85}
86
87
88showserv(argc, argv)
89int argc;
90char **argv;
91{
92 char *qargv[1];
93 int status;
94
95 qargv[0] = argv[1];
44d40e72 96 if (status = do_sms_query("get_server_info", 1, qargv, shserv, NULL))
cc5b487a 97 com_err(whoami, status, " while getting server info");
98 return(DM_NORMAL);
99}
100
101
102char *unparse_interval(i)
103int i;
104{
105 static char uibuf[10];
106
107 sprintf(uibuf, "%02d:%02d:00", i / 60, i % 60);
108 return(uibuf);
109}
110
111addserv(argc, argv)
112int argc;
113char **argv;
114{
cc5b487a 115 int status;
44d40e72 116 char *info[8];
cc5b487a 117
44d40e72 118 initserv(argv[1], info);
119 askserv(info);
120 if (status = do_sms_query("add_server_info", 8, info, Scream, NULL))
cc5b487a 121 com_err(whoami, status, " while updating server info");
44d40e72 122 FreeInfo(info);
cc5b487a 123 return(DM_NORMAL);
124}
125
44d40e72 126askserv(info)
127char **info;
128{
129 GetValueFromUser("Interval", &info[SC_INTERVAL]);
130 GetValueFromUser("Target", &info[SC_TARGET]);
131 GetValueFromUser("Script", &info[SC_SCRIPT]);
132 GetTypeFromUser("Service type", "service", &info[SC_TYPE]);
133 GetValueFromUser("Enable", &info[SC_ENABLE]);
134 GetTypeFromUser("ACE type", "ace_type", &info[SC_ACE_TYPE]);
135 if (strcasecmp("none", info[SC_ACE_TYPE]))
136 GetValueFromUser("Ace name", &info[SC_ACE_NAME]);
137}
138
cc5b487a 139
140gserv(argc, argv, cargv)
141int argc;
142char **argv;
143char **cargv;
144{
44d40e72 145 cargv[SC_SERVICE] = strsave(argv[SVC_SERVICE]);
146 cargv[SC_INTERVAL] = strsave(argv[SVC_INTERVAL]);
147 cargv[SC_TARGET] = strsave(argv[SVC_TARGET]);
148 cargv[SC_SCRIPT] = strsave(argv[SVC_SCRIPT]);
149 cargv[SC_TYPE] = strsave(argv[SVC_TYPE]);
150 cargv[SC_ENABLE] = strsave(argv[SVC_ENABLE]);
151 cargv[SC_ACE_TYPE] = strsave(argv[SVC_ACE_TYPE]);
152 cargv[SC_ACE_NAME] = strsave(argv[SVC_ACE_NAME]);
153 cargv[SC_END] = NULL;
cc5b487a 154 return(SMS_CONT);
155}
156
44d40e72 157initserv(name, argv)
158char *name;
159char **argv;
cc5b487a 160{
44d40e72 161 char tmp[BUFSIZ];
162
163 argv[SC_SERVICE] = strsave(name);
164 argv[SC_INTERVAL] = strsave("1440");
165 sprintf(tmp, "/tmp/%s.out", name);
166 argv[SC_TARGET] = strsave(tmp);
167 sprintf(tmp, "/u1/sms/bin/%s.sh", name);
168 argv[SC_SCRIPT] = strsave(tmp);
169 argv[SC_TYPE] = strsave("UNIQUE");
170 argv[SC_ENABLE] = strsave("1");
171 argv[SC_ACE_TYPE] = strsave("LIST");
172 argv[SC_ACE_NAME] = strsave("dbadmin");
173 argv[SC_END] = NULL;
cc5b487a 174}
175
176
177updateserv(argc, argv)
178int argc;
179char **argv;
180{
44d40e72 181 char *qargv[9];
cc5b487a 182 int status;
183
184 qargv[0] = (char *)argv[1];
44d40e72 185 if (status = do_sms_query("get_server_info", 1,
186 qargv, gserv, (char *)qargv)) {
cc5b487a 187 com_err(whoami, status, " while getting server info");
188 return(DM_NORMAL);
189 }
44d40e72 190 askserv(qargv);
191 if (status = do_sms_query("update_server_info", 8, qargv, Scream, NULL))
cc5b487a 192 com_err(whoami, status, " while updating server info");
193 return(DM_NORMAL);
194}
195
196
197int shhost(argc, argv)
198int argc;
199char **argv;
200{
201 char tmp[64], *ltt;
202
44d40e72 203 sprintf(buf, "%s:%s mod by %s on %s with %s", argv[SH_MACHINE],
204 argv[SH_SERVICE], argv[SH_MODBY], argv[SH_MODTIME],
205 argv[SH_MODWITH]);
cc5b487a 206 Put_message(buf);
44d40e72 207 if (atoi(argv[SH_HOSTERROR]))
208 sprintf(tmp, "Error %d: %s", atoi(argv[SH_HOSTERROR]), argv[SH_ERRMSG]);
cc5b487a 209 else
210 strcpy(tmp, "No error");
211 sprintf(buf, " %s/%s/%s/%s/%s",
44d40e72 212 atoi(argv[SH_ENABLE]) ? "Enabled" : "Disabled",
213 atoi(argv[SH_SUCCESS]) ? "Success" : "Failure",
214 atoi(argv[SH_INPROGRESS]) ? "InProgress" : "Idle",
215 atoi(argv[SH_OVERRIDE]) ? "Override" : "Normal", tmp);
cc5b487a 216 Put_message(buf);
217 Put_message(" Last Try Last Success Value1 Value2 Value3");
44d40e72 218 ltt = strsave(atot(argv[SH_LASTTRY]));
219 sprintf(buf, " %-20s %-20s %-9d %-9d %s", ltt, atot(argv[SH_LASTSUCCESS]),
220 atoi(argv[SH_VALUE1]), atoi(argv[SH_VALUE2]), argv[SH_VALUE3]);
cc5b487a 221 free(ltt);
222 Put_message(buf);
223 Put_message("");
224 return(SMS_CONT);
225}
226
227
228showhost(argc, argv)
229int argc;
230char **argv;
231{
44d40e72 232 char *qargv[2];
cc5b487a 233 int status;
234
44d40e72 235 qargv[SHI_SERVICE] = argv[1];
236 qargv[SHI_MACHINE] = canonicalize_hostname(argv[2]);
237 if (status = do_sms_query("get_server_host_info", 2, qargv, shhost, NULL))
cc5b487a 238 com_err(whoami, status, " getting server/host info");
239 return(DM_NORMAL);
240}
241
242
243resetsrverr(argc, argv)
244int argc;
245char **argv;
246{
247 int status;
44d40e72 248 if (status = do_sms_query("reset_server_error", 1, &argv[1], Scream, NULL))
cc5b487a 249 com_err(whoami, status, " while resetting server error");
250 return(DM_NORMAL);
251}
252
253
254resetsrvc(argc, argv)
255int argc;
256char **argv;
257{
258 int status;
259 char *qargv[5];
260
261 qargv[0] = argv[1];
262 qargv[1] = "0";
263 qargv[2] = "0";
264 qargv[3] = "0";
265 qargv[4] = "0";
266 qargv[5] = "";
44d40e72 267 if (status = do_sms_query("set_server_internal_flags", 6, qargv,
268 Scream, NULL))
cc5b487a 269 com_err(whoami, status, " while resetting server error");
270 return(DM_NORMAL);
271}
272
273
274resethosterr(argc, argv)
275int argc;
276char **argv;
277{
278 int status;
279
280 argv[2] = canonicalize_hostname(argv[2]);
44d40e72 281 if (status = do_sms_query("reset_server_host_error", 2, &argv[1],
282 Scream, NULL))
cc5b487a 283 com_err(whoami, status, " while resetting server/host error");
284 return(DM_NORMAL);
285}
286
287
288resethost(argc, argv)
289int argc;
290char **argv;
291{
292 int status;
293 char *qargv[9];
294
295 qargv[0] = argv[1];
296 qargv[1] = canonicalize_hostname(argv[2]);
297 qargv[2] = "0";
298 qargv[3] = "0";
299 qargv[4] = "0";
300 qargv[5] = "0";
301 qargv[6] = "";
302 qargv[7] = "0";
303 qargv[8] = "0";
44d40e72 304 if (status = do_sms_query("set_server_host_internal", 9, qargv,
305 Scream, NULL))
cc5b487a 306 com_err(whoami, status, " while resetting server/host error");
307 return(DM_NORMAL);
308}
309
310
311sethostor(argc, argv)
312int argc;
313char **argv;
314{
315 int status;
316
317 argv[2] = canonicalize_hostname(argv[2]);
44d40e72 318 if (status = do_sms_query("set_server_host_override", 2, &argv[1],
319 Scream, NULL))
cc5b487a 320 com_err(whoami, status, " while setting server/host override");
321 return(DM_NORMAL);
322}
323
324
325ghost(argc, argv, cargv)
326int argc;
327char **argv;
328char **cargv;
329{
44d40e72 330 cargv[SHI_SERVICE] = strsave(argv[SH_SERVICE]);
331 cargv[SHI_MACHINE] = strsave(argv[SH_MACHINE]);
332 cargv[SHI_ENABLE] = strsave(argv[SH_ENABLE]);
333 cargv[SHI_VALUE1] = strsave(argv[SH_VALUE1]);
334 cargv[SHI_VALUE2] = strsave(argv[SH_VALUE2]);
335 cargv[SHI_VALUE3] = strsave(argv[SH_VALUE3]);
336 cargv[SHI_END] = NULL;
cc5b487a 337 return(SMS_CONT);
338}
339
340
44d40e72 341inithost(info)
342char **info;
343{
344 info[SHI_MACHINE] = strsave(canonicalize_hostname(info[SH_MACHINE]));
345 info[SHI_ENABLE] = strsave("1");
346 info[SHI_VALUE1] = strsave("0");
347 info[SHI_VALUE2] = strsave("0");
348 info[SHI_VALUE3] = strsave("");
349 info[SHI_END] = NULL;
350}
351
352
353askhost(info)
354char **info;
355{
356 GetValueFromUser("Enable", &info[SHI_ENABLE]);
357 GetValueFromUser("Value 1", &info[SHI_VALUE1]);
358 GetValueFromUser("Value 2", &info[SHI_VALUE2]);
359 GetValueFromUser("Value 3", &info[SHI_VALUE3]);
360}
361
362
cc5b487a 363updatehost(argc, argv)
364int argc;
365char **argv;
366{
44d40e72 367 char *info[SHI_END+1];
cc5b487a 368 int status;
369
44d40e72 370 info[SHI_SERVICE] = strsave(argv[1]);
371 info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
372 if (status = do_sms_query("get_server_host_info", 2, info, ghost,
373 (char *)info)) {
cc5b487a 374 com_err(whoami, status, " while getting server/host info");
375 return(DM_NORMAL);
376 }
44d40e72 377 askhost(info);
378 if (status = do_sms_query("update_server_host_info", SHI_END, info,
379 Scream, NULL))
cc5b487a 380 com_err(whoami, status, " while updating server/host info");
44d40e72 381 FreeInfo(info);
cc5b487a 382 return(DM_NORMAL);
383}
384
385
386addhost(argc, argv)
387int argc;
388char **argv;
389{
44d40e72 390 char *info[SHI_END+1];
cc5b487a 391 int status;
392
44d40e72 393 info[SHI_SERVICE] = strsave(argv[1]);
394 info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
395 inithost(info);
396 askhost(info);
397 if (status = do_sms_query("add_server_host_info", 6, info, Scream, NULL))
cc5b487a 398 com_err(whoami, status, " while adding server/host info");
44d40e72 399 FreeInfo(info);
cc5b487a 400 return(DM_NORMAL);
401}
402
403
404delserv(argc, argv)
405int argc;
406char **argv;
407{
408 int status;
409
44d40e72 410 if (status = do_sms_query("delete_server_info", 1, &argv[1], Scream, NULL))
cc5b487a 411 com_err(whoami, status, " while deleting server info");
412 return(DM_NORMAL);
413}
414
415
416delhost(argc, argv)
417int argc;
418char **argv;
419{
420 int status;
421
422 argv[2] = canonicalize_hostname(argv[2]);
44d40e72 423 if (status = do_sms_query("delete_server_host_info", 2, &argv[1],
424 Scream, NULL))
cc5b487a 425 com_err(whoami, status, " while deleting server/host info");
426 return(DM_NORMAL);
427}
428
429
430pserv(argc, argv, count)
431int argc;
432char **argv;
433int *count;
434{
435 sprintf(buf, "Service %s", argv[0]);
436 Put_message(buf);
437 (*count)++;
438 return(SMS_CONT);
439}
440
441phost(argc, argv, count)
442int argc;
443char **argv;
444int *count;
445{
446 sprintf(buf, "Host %s:%s", argv[0], argv[1]);
447 Put_message(buf);
448 (*count)++;
449 return(SMS_CONT);
450}
451
452
3ed06d63 453InProgress()
cc5b487a 454{
455 char *argv[6];
456 int status, count = 0;
457
458 argv[0] = argv[2] = "DONTCARE";
459 argv[1] = "TRUE";
44d40e72 460 if ((status = do_sms_query("qualified_get_server", 3, argv, pserv,
461 (char *)&count)) &&
cc5b487a 462 status != SMS_NO_MATCH)
463 com_err(whoami, status, " while getting servers");
464 argv[0] = "*";
465 argv[1] = argv[2] = argv[3] = argv[5] = "DONTCARE";
466 argv[4] = "TRUE";
44d40e72 467 if ((status = do_sms_query("qualified_get_server_host",6,argv,phost,
468 (char *)&count)) &&
cc5b487a 469 status != SMS_NO_MATCH)
470 com_err(whoami, status, " while getting server/hosts");
471 if (!count)
472 strcpy(buf, "Nothing is in progress at this time");
473 else
474 sprintf(buf, "%d update%s in progress at this time", count,
475 count == 1 ? "" : "s");
476 Put_message(buf);
477 return(DM_NORMAL);
478}
479
3ed06d63 480DcmFailed()
cc5b487a 481{
482 char *argv[6];
483 int status, count = 0;
484
485 argv[0] = argv[1] = "DONTCARE";
486 argv[2] = "TRUE";
44d40e72 487 if ((status = do_sms_query("qualified_get_server", 3, argv, pserv,
488 (char *)&count)) &&
cc5b487a 489 status != SMS_NO_MATCH)
490 com_err(whoami, status, " while getting servers");
491 argv[0] = "*";
492 argv[1] = argv[2] = argv[3] = argv[4] = "DONTCARE";
493 argv[5] = "TRUE";
44d40e72 494 if ((status = do_sms_query("qualified_get_server_host",6,argv,phost,
495 (char *)&count)) &&
cc5b487a 496 status != SMS_NO_MATCH)
497 com_err(whoami, status, " while getting server/hosts");
498 if (!count)
499 strcpy(buf, "Nothing has failed at this time");
500 else
501 sprintf(buf, "%d thing%s ha%s failed at this time", count,
502 count == 1 ? "" : "s", count == 1 ? "s" : "ve");
503 Put_message(buf);
504 return(DM_NORMAL);
505}
506
507
3ed06d63 508Dcm()
cc5b487a 509{
510 int status;
511 if (status = sms_do_update())
512 com_err(whoami, status, " while triggering update");
513 return(DM_NORMAL);
514}
515
516
517char *atot(itime)
518char *itime;
519{
520 int time;
521 char *ct, *ctime();
522
523 time = atoi(itime);
524 ct = ctime(&time);
525 ct[24] = 0;
526 return(&ct[4]);
527}
This page took 4.981751 seconds and 5 git commands to generate.