]> andersk Git - moira.git/blame - db/newmoira.dc
minor fix to sync with queries2.c
[moira.git] / db / newmoira.dc
CommitLineData
21e8ec7e 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"
13EXEC SQL INCLUDE sqlca;
14
15extern char *tables[];
16extern struct query Queries2[];
17extern int QueryCount2;
18
19char *values[] = { "users_id", "mach_id", "clu_id", "list_id",
20 "nfsphys_id", "filsys_id", "strings_id", "dcm_enable",
21 0 };
22
23struct 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
117int ingres_errno = 0;
118
119main(argc, argv)
120int argc;
121char **argv;
122{
21e8ec7e 123 EXEC SQL BEGIN DECLARE SECTION;
bbc27b1e 124 char buffer[256];
21e8ec7e 125 char *db, *tbl, *value, *user, *query, *trans, *type;
126 int i, list;
bce54968 127 char stmt_buf[256];
21e8ec7e 128 EXEC SQL END DECLARE SECTION;
129
130 if (argc == 2)
131 db = argv[1];
132 else
133 db = "sms";
134#ifsql INGRES
bce54968 135 EXEC SQL CONNECT :db;
21e8ec7e 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
bce54968 147 sprintf(stmt_buf,"GRANT ALL PRIVILEGES ON TABLE %s TO %s",tbl,user);
148 EXEC SQL EXECUTE IMMEDIATE :stmt_buf;
21e8ec7e 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)
529ecfa9 165 VALUES (:tbl, 'now', 0, 0, 0);
21e8ec7e 166 if (ingres_errno) {
167 printf("Unable to initialize tblstats for %s\n", tbl);
bbc27b1e 168 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
169 printf("SQL error: %s\n",buffer);
21e8ec7e 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);
bce54968 179 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
180 printf("SQL error: %s\n",buffer);
21e8ec7e 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)
529ecfa9 190 VALUES ('uid', :i);
21e8ec7e 191 if (ingres_errno) {
192 printf("Unable to install value for uid\n");
bce54968 193 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
194 printf("SQL error: %s\n",buffer);
21e8ec7e 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)
529ecfa9 203 VALUES ('gid', :i);
21e8ec7e 204 if (ingres_errno) {
205 printf("Unable to install value for gid\n");
bce54968 206 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
207 printf("SQL error: %s\n",buffer);
21e8ec7e 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)
529ecfa9 216 VALUES ('def_quota', :i);
21e8ec7e 217 if (ingres_errno) {
218 printf("Unable to install value for def_quota\n");
bce54968 219 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
220 printf("SQL error: %s\n",buffer);
21e8ec7e 221 exit(1);
222 }
223
224 /* place holder records */
225 EXEC SQL INSERT INTO users (login, potype, users_id)
529ecfa9 226 VALUES ('[nobody]', 'NONE', 0);
21e8ec7e 227 if (ingres_errno) {
228 printf("Unable to install 0 user\n");
bce54968 229 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
230 printf("SQL error: %s\n",buffer);
21e8ec7e 231 exit(1);
232 }
233 EXEC SQL INSERT INTO machine (name, type)
529ecfa9 234 VALUES ('[NONE]', 'NONE');
21e8ec7e 235 if (ingres_errno) {
236 printf("Unable to install 0 machine\n");
bce54968 237 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
238 printf("SQL error: %s\n",buffer);
21e8ec7e 239 exit(1);
240 }
21313710 241 EXEC SQL INSERT INTO subnet (name)
242 VALUES ('NONE');
243 if (ingres_errno) {
244 printf("Unable to install 0 subnet\n");
245 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
246 printf("SQL error: %s\n",buffer);
247 exit(1);
248 }
21e8ec7e 249 EXEC SQL INSERT INTO cluster (name)
529ecfa9 250 VALUES ('[unassigned]');
21e8ec7e 251 if (ingres_errno) {
252 printf("Unable to install 0 cluster\n");
bce54968 253 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
254 printf("SQL error: %s\n",buffer);
21e8ec7e 255 exit(1);
256 }
257 EXEC SQL INSERT INTO list (name, acl_type)
529ecfa9 258 VALUES ('[none]', 'NONE');
21e8ec7e 259 if (ingres_errno) {
260 printf("Unable to install 0 list\n");
bce54968 261 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
262 printf("SQL error: %s\n",buffer);
21e8ec7e 263 exit(1);
264 }
265 EXEC SQL INSERT INTO filesys (label, type)
529ecfa9 266 VALUES ('[none]', 'NONE');
21e8ec7e 267 if (ingres_errno) {
268 printf("Unable to install 0 filesys\n");
bce54968 269 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
270 printf("SQL error: %s\n",buffer);
21e8ec7e 271 exit(1);
272 }
273 EXEC SQL INSERT INTO nfsphys (device)
529ecfa9 274 VALUES ('/dev/null');
21e8ec7e 275 if (ingres_errno) {
276 printf("Unable to install 0 nfsphys\n");
bce54968 277 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
278 printf("SQL error: %s\n",buffer);
21e8ec7e 279 exit(1);
280 }
281
282 /* magic for ALL_USERS */
283 EXEC SQL INSERT INTO users (login, users_id, potype)
529ecfa9 284 VALUES ('default', 1, 'NONE');
21e8ec7e 285 if (ingres_errno) {
286 printf("Unable to install default user\n");
bce54968 287 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
288 printf("SQL error: %s\n",buffer);
21e8ec7e 289 exit(1);
290 }
291 EXEC SQL INSERT INTO list (name, list_id, acl_type)
529ecfa9 292 VALUES ('default', 1, 'NONE');
21e8ec7e 293 if (ingres_errno) {
294 printf("Unable to install default list\n");
bce54968 295 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
296 printf("SQL error: %s\n",buffer);
21e8ec7e 297 exit(1);
298 }
299 EXEC SQL INSERT INTO imembers
300 (list_id, member_type, member_id, ref_count, direct)
529ecfa9 301 VALUES (1, 'USER', 1, 1, 1);
21e8ec7e 302 if (ingres_errno) {
303 printf("Unable to install default user on default list\n");
bce54968 304 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
305 printf("SQL error: %s\n",buffer);
21e8ec7e 306 exit(1);
307 }
308
309 /* Privileged users */
310 EXEC SQL INSERT INTO users (login, users_id, potype)
529ecfa9 311 VALUES ('root', 2, 'NONE');
21e8ec7e 312 if (ingres_errno) {
313 printf("Unable to install root user\n");
bce54968 314 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
315 printf("SQL error: %s\n",buffer);
21e8ec7e 316 exit(1);
317 }
318 EXEC SQL INSERT INTO list (name, list_id, acl_type, acl_id)
529ecfa9 319 VALUES ('dbadmin', 2, 'LIST', 2);
21e8ec7e 320 if (ingres_errno) {
321 printf("Unable to install default dbadmin list\n");
bce54968 322 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
323 printf("SQL error: %s\n",buffer);
21e8ec7e 324 exit(1);
325 }
326
327 printf("What is the name of a privileged user: ");
328 fflush(stdout);
329 gets(buffer);
330 user = buffer;
331 EXEC SQL INSERT INTO users (login, users_id, potype)
529ecfa9 332 VALUES (:user, 3, 'NONE');
21e8ec7e 333 if (ingres_errno) {
334 printf("Unable to install user %s\n", buffer);
bce54968 335 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
336 printf("SQL error: %s\n",buffer);
21e8ec7e 337 exit(1);
338 }
339 EXEC SQL INSERT INTO imembers
340 (list_id, member_type, member_id, ref_count, direct)
529ecfa9 341 VALUES (2, 'USER', 2, 1, 1);
21e8ec7e 342 if (ingres_errno) {
343 printf("Unable to put user root on list dbadmin\n");
bce54968 344 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
345 printf("SQL error: %s\n",buffer);
21e8ec7e 346 exit(1);
347 }
348 EXEC SQL INSERT INTO imembers
349 (list_id, member_type, member_id, ref_count, direct)
529ecfa9 350 VALUES (2, 'USER', 3, 1, 1);
21e8ec7e 351 if (ingres_errno) {
352 printf("Unable to put user %s on list dbadmin\n", buffer);
bce54968 353 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
354 printf("SQL error: %s\n",buffer);
21e8ec7e 355 exit(1);
356 }
357
358 /* And the capacls */
359 for (i = 0; i < QueryCount2; i++) {
360 query = Queries2[i].name;
361 value = Queries2[i].shortname;
362 list = 2;
363 if (!strcmp(value, "gali") || !strcmp(value, "glig") ||
364 !strcmp(value, "glim") || !strcmp(value, "gval"))
365 list = 1;
366 EXEC SQL INSERT INTO capacls (capability, tag, list_id)
367 VALUES (:query, :value, :list);
368 if (ingres_errno) {
369 printf("Unable to install query ACL for %s (%s)\n", query, value);
bce54968 370 EXEC SQL INQUIRE_SQL (:buffer = ERRORTEXT);
371 printf("SQL error: %s\n",buffer);
21e8ec7e 372 exit(1);
373 }
374 }
375 EXEC SQL INSERT INTO capacls (capability, tag, list_id)
529ecfa9 376 VALUES ('trigger_dcm', 'tdcm', 2);
21e8ec7e 377
378 /* and the aliases */
379 for (i = 0; aliases[i].name ; i++) {
380 value = aliases[i].name;
381 type = aliases[i].type;
382 trans = aliases[i].trans;
383 EXEC SQL INSERT INTO alias (name, type, trans)
384 VALUES (:value, :type, :trans);
385 }
386
bce54968 387 printf("\nNow committing work... ");
388#ifsql INGRES
389 EXEC SQL COMMIT WORK;
390#endsql
391
21e8ec7e 392 printf("done.\n");
393 exit(0);
394}
395
396
397/*
398 * ingerr: (supposedly) called when Ingres indicates an error.
399 * I have not yet been able to get this to work to intercept a
400 * database open error.
401 */
402
529ecfa9 403int ingerr()
21e8ec7e 404{
529ecfa9 405 ingres_errno = -sqlca.sqlcode;
406 return ingres_errno;
21e8ec7e 407}
408
409
410/* dummy routines */
411int access_user() {}
412int access_login() {}
413int access_list() {}
414int access_visible_list() {}
415int access_vis_list_by_name() {}
416int access_member() {}
417int access_qgli() {}
418int access_service() {}
419int access_filesys() {}
420int setup_ausr() {}
421int setup_dusr() {}
422int setup_spop() {}
423int setup_dpob() {}
424int setup_dmac() {}
425int setup_dclu() {}
426int setup_alis() {}
427int setup_dlis() {}
428int setup_dsin() {}
429int setup_dshi() {}
430int setup_afil() {}
431int setup_ufil() {}
432int setup_dfil() {}
433int setup_dnfp() {}
434int setup_dqot() {}
435int setup_sshi() {}
436int setup_akum() {}
437int followup_fix_modby() {}
438int followup_ausr() {}
439int followup_gpob() {}
440int followup_glin() {}
441int followup_aqot() {}
442int followup_gzcl() {}
443int followup_gsha() {}
444int followup_gqot() {}
445int set_modtime() {}
446int set_modtime_by_id() {}
447int set_finger_modtime() {}
448int set_pobox_modtime() {}
449int set_uppercase_modtime() {}
450int set_mach_modtime_by_id() {}
451int set_cluster_modtime_by_id() {}
452int set_serverhost_modtime() {}
453int set_nfsphys_modtime() {}
454int set_filesys_modtime() {}
455int set_zephyr_modtime() {}
456int set_pobox() {}
457int get_list_info() {}
458int add_member_to_list() {}
459int delete_member_from_list() {}
460int get_ace_use() {}
461int qualified_get_lists() {}
462int get_members_of_list() {}
463int qualified_get_server() {}
464int qualified_get_serverhost() {}
465int trigger_dcm() {}
466int count_members_of_list() {}
467int get_lists_of_member() {}
468int register_user() {}
469int followup_gpce() {}
bce54968 470int prefetch_value() {}
471int prefetch_filesys() {}
472int followup_dqot() {}
473int followup_guax() {}
474int followup_uuac() {}
475int get_end_members_of_list() {}
6f4a799e 476int _sdl_followup() {}
6846079d 477int access_host() {}
478int access_ahal() {}
479int setup_dsnt() {}
480int setup_ahst() {}
481int setup_ahal() {}
482int followup_gsnt() {}
483int followup_ghst() {}
0e63ee79 484int access_snt() {}
572a1ae7 485int get_hostalias() {}
This page took 0.139007 seconds and 5 git commands to generate.