]> andersk Git - moira.git/blob - db/newmoira.dc
added hosttable stuff
[moira.git] / db / newmoira.dc
1 /* $Header$
2  *
3  * Creates a new sms database
4  *
5  * Copyright 1988 by the Massachusetts Institute of Technology.
6  * For copying and distribution information, please see the file
7  * <mit-copyright.h>.
8  */
9
10 #include <mit-copyright.h>
11 #include <stdio.h>
12 #include "../server/query.h"
13 EXEC SQL INCLUDE sqlca;
14
15 extern char *tables[];
16 extern struct query Queries2[];
17 extern int QueryCount2;
18
19 char *values[] = { "users_id", "mach_id", "clu_id", "list_id",
20                    "nfsphys_id", "filsys_id", "strings_id", "dcm_enable",
21                    0 };
22
23 struct alias { char *name;
24                char *type;
25                char *trans;
26            } aliases[] = {
27                    {"ace_type", "TYPE", "KERBEROS"},
28                    {"ace_type", "TYPE", "LIST"},
29                    {"ace_type", "TYPE", "NONE"},
30                    {"ace_type", "TYPE", "USER"},
31                    {"alias", "TYPE", "FILESYS"},
32                    {"alias", "TYPE", "PALLADIUM"},
33                    {"alias", "TYPE", "TYPE"},
34                    {"alias", "TYPE", "SERVICE"},
35                    {"alias", "TYPE", "TYPEDATA"},
36                    {"alias", "TYPE", "VALUE"},
37                    {"boolean", "TYPE", "FALSE"},
38                    {"boolean", "TYPE", "DONTCARE"},
39                    {"boolean", "TYPE", "TRUE"},
40                    {"class", "TYPE", "STAFF"},
41                    {"class", "TYPE", "1990"},
42                    {"class", "TYPE", "1991"},
43                    {"class", "TYPE", "1992"},
44                    {"class", "TYPE", "1993"},
45                    {"class", "TYPE", "FACULTY"},
46                    {"class", "TYPE", "G"},
47                    {"class", "TYPE", "GUEST"},
48                    {"class", "TYPE", "TEST"},
49                    {"class", "TYPE", "SYSTEM"},
50                    {"filesys", "TYPE", "ERR"},
51                    {"filesys", "TYPE", "FSGROUP"},
52                    {"filesys", "TYPE", "NFS"},
53                    {"filesys", "TYPE", "RVD"},
54                    {"filesys", "TYPE", "AFS"},
55                    {"fs_access_AFS", "TYPE", "w"},
56                    {"fs_access_AFS", "TYPE", "n"},
57                    {"fs_access_NFS", "TYPE", "r"},
58                    {"fs_access_NFS", "TYPE", "n"},
59                    {"fs_access_NFS", "TYPE", "w"},
60                    {"fs_access_RVD", "TYPE", "r"},
61                    {"fs_access_RVD", "TYPE", "x"},
62                    {"gaus", "TYPE", "LIST"},
63                    {"gaus", "TYPE", "USER"},
64                    {"gaus", "TYPE", "RLIST"},
65                    {"gaus", "TYPE", "RUSER"},
66                    {"lockertype", "TYPE", "COURSE"},
67                    {"lockertype", "TYPE", "HOMEDIR"},
68                    {"lockertype", "TYPE", "OTHER"},
69                    {"lockertype", "TYPE", "PROJECT"},
70                    {"lockertype", "TYPE", "SYSTEM"},
71                    {"mac_type", "TYPE", "MAC"},
72                    {"mac_type", "TYPE", "NEXT"},
73                    {"mac_type", "TYPE", "PMAX"},
74                    {"mac_type", "TYPE", "RT"},
75                    {"mac_type", "TYPE", "VAX"},
76                    {"member", "TYPE", "KERBEROS"},
77                    {"member", "TYPE", "LIST"},
78                    {"member", "TYPE", "STRING"},
79                    {"member", "TYPE", "USER"},
80                    {"pobox", "TYPE", "SMTP"},
81                    {"pobox", "TYPE", "NONE"},
82                    {"pobox", "TYPE", "POP"},
83                    {"quota_type", "TYPE", "USER"},
84                    {"quota_type", "TYPE", "GROUP"},
85                    {"quota_type", "TYPE", "ANY"},
86                    {"rmember", "TYPE", "LIST"},
87                    {"rmember", "TYPE", "STRING"},
88                    {"rmember", "TYPE", "USER"},
89                    {"rmember", "TYPE", "KERBEROS"},
90                    {"rmember", "TYPE", "RLIST"},
91                    {"rmember", "TYPE", "RSTRING"},
92                    {"rmember", "TYPE", "RUSER"},
93                    {"rmember", "TYPE", "RKERBEROS"},
94                    {"service", "TYPE", "REPLICAT"},
95                    {"service", "TYPE", "REPLICATED"},
96                    {"service", "TYPE", "UNIQUE"},
97                    {"slabel", "TYPE", "LPR"},
98                    {"slabel", "TYPE", "KERBEROS"},
99                    {"slabel", "TYPE", "USRLIB"},
100                    {"slabel", "TYPE", "SYSLIB"},
101                    {"slabel", "TYPE", "ZEPHYR"},
102                    {"ANY", "TYPEDATA", "none"},
103                    {"KERBEROS", "TYPEDATA", "string"},
104                    {"GROUP", "TYPEDATA", "list"},
105                    {"LIST", "TYPEDATA", "list"},
106                    {"NONE", "TYPEDATA", "none"},
107                    {"POP", "TYPEDATA", "machine"},
108                    {"RLIST", "TYPEDATA", "list"},
109                    {"RSTRING", "TYPEDATA", "string"},
110                    {"RUSER", "TYPEDATA", "user"},
111                    {"SMTP", "TYPEDATA", "string"},
112                    {"STRING", "TYPEDATA", "string"},
113                    {"USER", "TYPEDATA", "user"},        
114                    0 };
115
116
117 int ingres_errno = 0;
118
119 main(argc, argv)
120 int argc;
121 char **argv;
122 {
123     EXEC SQL BEGIN DECLARE SECTION;
124     char buffer[256];
125     char *db, *tbl, *value, *user, *query, *trans, *type;
126     int i, list;
127     char stmt_buf[256];
128     EXEC SQL END DECLARE SECTION;
129
130     if (argc == 2)
131       db = argv[1];
132     else
133       db = "sms";
134 #ifsql INGRES
135     EXEC SQL CONNECT :db;
136 #endsql
137 #ifsql INFORMIX
138     EXEC SQL DATABASE db;
139 #endsql
140     EXEC SQL WHENEVER SQLERROR CALL ingerr;
141
142     strcpy(buffer, "root");
143     user = buffer;
144     while (buffer[0]) {
145         for (i = 0; tbl = tables[i]; i++) {
146 #ifsql INGRES
147             sprintf(stmt_buf,"GRANT ALL PRIVILEGES ON TABLE %s TO %s",tbl,user);
148             EXEC SQL EXECUTE IMMEDIATE :stmt_buf;
149 #endsql
150             if (ingres_errno) {
151                 printf("Unable to give %s permission to access table %s\n",
152                        user, tbl);
153                 exit(1);
154             }
155         }
156         printf("Enter the name of another user to be given direct access to\n");
157         printf("the database, or [RETURN] if none: ");
158         fflush(stdout);
159         gets(user);
160     }
161
162     for (i = 0; tbl = tables[i]; i++) {
163         EXEC SQL INSERT INTO tblstats
164           (table_name, modtime, appends, updates, deletes)
165           VALUES (:tbl, 'now', 0, 0, 0);
166         if (ingres_errno) {
167             printf("Unable to initialize tblstats for %s\n", tbl);
168             EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
169             printf("SQL error: %s\n",buffer);
170             exit(1);
171         }
172     }
173
174     for (i = 0; value = values[i]; i++) {
175         EXEC SQL INSERT INTO numvalues (name, value)
176           VALUES (:value, 1);
177         if (ingres_errno) {
178             printf("Unable to install initial value of %s\n", value);
179             EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
180             printf("SQL error: %s\n",buffer);
181             exit(1);
182         }
183     }
184
185     printf("What is the starting UID to assign: ");
186     fflush(stdout);
187     gets(buffer);
188     i = atoi(buffer);
189     EXEC SQL INSERT INTO numvalues (name, value)
190       VALUES ('uid', :i);
191     if (ingres_errno) {
192         printf("Unable to install value for uid\n");
193         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
194         printf("SQL error: %s\n",buffer);
195         exit(1);
196     }
197
198     printf("What is the starting GID to assign: ");
199     fflush(stdout);
200     gets(buffer);
201     i = atoi(buffer);
202     EXEC SQL INSERT INTO numvalues (name, value)
203       VALUES ('gid', :i);
204     if (ingres_errno) {
205         printf("Unable to install value for gid\n");
206         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
207         printf("SQL error: %s\n",buffer);
208         exit(1);
209     }
210
211     printf("What is the default NFS quota to assign: ");
212     fflush(stdout);
213     gets(buffer);
214     i = atoi(buffer);
215     EXEC SQL INSERT INTO numvalues (name, value)
216       VALUES ('def_quota', :i);
217     if (ingres_errno) {
218         printf("Unable to install value for def_quota\n");
219         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
220         printf("SQL error: %s\n",buffer);       
221         exit(1);
222     }
223
224     /* place holder records */
225     EXEC SQL INSERT INTO users (login, potype, users_id)
226       VALUES ('[nobody]', 'NONE', 0);
227     if (ingres_errno) {
228         printf("Unable to install 0 user\n");
229         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
230         printf("SQL error: %s\n",buffer);
231         exit(1);
232     }
233     EXEC SQL INSERT INTO machine (name, type)
234       VALUES ('[NONE]', 'NONE');
235     if (ingres_errno) {
236         printf("Unable to install 0 machine\n");
237         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
238         printf("SQL error: %s\n",buffer);
239         exit(1);
240     }
241     EXEC SQL INSERT INTO cluster (name)
242       VALUES ('[unassigned]');
243     if (ingres_errno) {
244         printf("Unable to install 0 cluster\n");
245         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
246         printf("SQL error: %s\n",buffer);
247         exit(1);
248     }
249     EXEC SQL INSERT INTO list (name, acl_type)
250       VALUES ('[none]', 'NONE');
251     if (ingres_errno) {
252         printf("Unable to install 0 list\n");
253         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
254         printf("SQL error: %s\n",buffer);
255         exit(1);
256     }
257     EXEC SQL INSERT INTO filesys (label, type)
258       VALUES ('[none]', 'NONE');
259     if (ingres_errno) {
260         printf("Unable to install 0 filesys\n");
261         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
262         printf("SQL error: %s\n",buffer);
263         exit(1);
264     }
265     EXEC SQL INSERT INTO nfsphys (device)
266       VALUES ('/dev/null');
267     if (ingres_errno) {
268         printf("Unable to install 0 nfsphys\n");
269         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
270         printf("SQL error: %s\n",buffer);
271         exit(1);
272     }
273
274     /* magic for ALL_USERS */
275     EXEC SQL INSERT INTO users (login, users_id, potype)
276       VALUES ('default', 1, 'NONE');
277     if (ingres_errno) {
278         printf("Unable to install default user\n");
279         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
280         printf("SQL error: %s\n",buffer);
281         exit(1);
282     }
283     EXEC SQL INSERT INTO list (name, list_id, acl_type)
284       VALUES ('default', 1, 'NONE');
285     if (ingres_errno) {
286         printf("Unable to install default list\n");
287         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
288         printf("SQL error: %s\n",buffer);
289         exit(1);
290     }
291     EXEC SQL INSERT INTO imembers
292       (list_id, member_type, member_id, ref_count, direct)
293       VALUES (1, 'USER', 1, 1, 1);
294     if (ingres_errno) {
295         printf("Unable to install default user on default list\n");
296         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
297         printf("SQL error: %s\n",buffer);
298         exit(1);
299     }
300
301     /* Privileged users */
302     EXEC SQL INSERT INTO users (login, users_id, potype)
303       VALUES ('root', 2, 'NONE');
304     if (ingres_errno) {
305         printf("Unable to install root user\n");
306         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
307         printf("SQL error: %s\n",buffer);
308         exit(1);
309     }
310     EXEC SQL INSERT INTO list (name, list_id, acl_type, acl_id)
311       VALUES ('dbadmin', 2, 'LIST', 2);
312     if (ingres_errno) {
313         printf("Unable to install default dbadmin list\n");
314         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
315         printf("SQL error: %s\n",buffer);
316         exit(1);
317     }
318
319     printf("What is the name of a privileged user: ");
320     fflush(stdout);
321     gets(buffer);
322     user = buffer;
323     EXEC SQL INSERT INTO users (login, users_id, potype)
324       VALUES (:user, 3, 'NONE');
325     if (ingres_errno) {
326         printf("Unable to install user %s\n", buffer);
327         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
328         printf("SQL error: %s\n",buffer);
329         exit(1);
330     }
331     EXEC SQL INSERT INTO imembers
332       (list_id, member_type, member_id, ref_count, direct)
333       VALUES (2, 'USER', 2, 1, 1);
334     if (ingres_errno) {
335         printf("Unable to put user root on list dbadmin\n");
336         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
337         printf("SQL error: %s\n",buffer);
338         exit(1);
339     }
340     EXEC SQL INSERT INTO imembers
341       (list_id, member_type, member_id, ref_count, direct)
342       VALUES (2, 'USER', 3, 1, 1);
343     if (ingres_errno) {
344         printf("Unable to put user %s on list dbadmin\n", buffer);
345         EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
346         printf("SQL error: %s\n",buffer);
347         exit(1);
348     }
349
350     /* And the capacls */
351     for (i = 0; i < QueryCount2; i++) {
352         query = Queries2[i].name;
353         value = Queries2[i].shortname;
354         list = 2;
355         if (!strcmp(value, "gali") || !strcmp(value, "glig") ||
356             !strcmp(value, "glim") || !strcmp(value, "gval"))
357           list = 1;
358         EXEC SQL INSERT INTO capacls (capability, tag, list_id)
359           VALUES (:query, :value, :list);
360         if (ingres_errno) {
361             printf("Unable to install query ACL for %s (%s)\n", query, value);
362             EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
363             printf("SQL error: %s\n",buffer);
364             exit(1);
365         }
366     }
367     EXEC SQL INSERT INTO capacls (capability, tag, list_id)
368       VALUES ('trigger_dcm', 'tdcm', 2);
369
370     /* and the aliases */
371     for (i = 0; aliases[i].name ; i++) {
372         value = aliases[i].name;
373         type = aliases[i].type;
374         trans = aliases[i].trans;
375         EXEC SQL INSERT INTO alias (name, type, trans)
376           VALUES (:value, :type, :trans);
377     }
378
379     printf("\nNow committing work... ");
380 #ifsql INGRES
381     EXEC SQL COMMIT WORK;
382 #endsql
383
384     printf("done.\n");
385     exit(0);
386 }
387
388
389 /*
390  * ingerr: (supposedly) called when Ingres indicates an error.
391  * I have not yet been able to get this to work to intercept a
392  * database open error.
393  */
394
395 int ingerr()
396 {
397     ingres_errno = -sqlca.sqlcode;
398     return ingres_errno;
399 }
400
401
402 /* dummy routines */
403 int access_user() {}
404 int access_login() {}
405 int access_list() {}
406 int access_visible_list() {}
407 int access_vis_list_by_name() {}
408 int access_member() {}
409 int access_qgli() {}
410 int access_service() {}
411 int access_filesys() {}
412 int setup_ausr() {}
413 int setup_dusr() {}
414 int setup_spop() {}
415 int setup_dpob() {}
416 int setup_dmac() {}
417 int setup_dclu() {}
418 int setup_alis() {}
419 int setup_dlis() {}
420 int setup_dsin() {}
421 int setup_dshi() {}
422 int setup_afil() {}
423 int setup_ufil() {}
424 int setup_dfil() {}
425 int setup_dnfp() {}
426 int setup_dqot() {}
427 int setup_sshi() {}
428 int setup_akum() {}
429 int followup_fix_modby() {}
430 int followup_ausr() {}
431 int followup_gpob() {}
432 int followup_glin() {}
433 int followup_aqot() {}
434 int followup_gzcl() {}
435 int followup_gsha() {}
436 int followup_gqot() {}
437 int set_modtime() {}
438 int set_modtime_by_id() {}
439 int set_finger_modtime() {}
440 int set_pobox_modtime() {}
441 int set_uppercase_modtime() {}
442 int set_mach_modtime_by_id() {}
443 int set_cluster_modtime_by_id() {}
444 int set_serverhost_modtime() {}
445 int set_nfsphys_modtime() {}
446 int set_filesys_modtime() {}
447 int set_zephyr_modtime() {}
448 int set_pobox() {}
449 int get_list_info() {}
450 int add_member_to_list() {}
451 int delete_member_from_list() {}
452 int get_ace_use() {}
453 int qualified_get_lists() {}
454 int get_members_of_list() {}
455 int qualified_get_server() {}
456 int qualified_get_serverhost() {}
457 int trigger_dcm() {}
458 int count_members_of_list() {}
459 int get_lists_of_member() {}
460 int register_user() {}
461 int followup_gpce() {}
462 int prefetch_value() {}
463 int prefetch_filesys() {}
464 int followup_dqot() {}
465 int followup_guax() {}
466 int followup_uuac() {}
467 int get_end_members_of_list() {}
468 int _sdl_followup() {}
This page took 0.077995 seconds and 5 git commands to generate.