Added new table to the database: log_adv_daemon_email.
[gnucomo.git] / src / gcm_daemon / classes / gnucomo_db_version.php
1 <?PHP
2
3 /* This 'function' updates the gnucomo database to the correct version it will make changes to the 
4  * database. It is called within an if-statement when needed.
5  * INPUT      : NONE (everything is available within the class)
6  * OUTPUT     : Success TRUE/FALSE 
7  * VALUES SET : NONE 
8  */
9
10  //Do while statement since all updateshave to be executed starting at the 
11  //latest version. It's a walk through.
12
13    switch ($active_version)
14    {
15      case 1:
16        //DROP the rule that prohibits updates (change of spec).
17        $local_sql = "DROP RULE log_update";
18 //       $dbms->query($local_sql); DISABLED FOR NEW ROLE LOG-tABLE
19
20      case 2:
21        //In the log table processed should be false by default
22        $local_sql = "UPDATE log SET processed = false";
23        $dbms->query($local_sql); 
24
25      case 3:
26        //In the log_adv a column is added that indicates where the detailed
27        //data has been written to
28        $local_sql = "ALTER TABLE log_adv ADD COLUMN detailed_table VARCHAR(75)";
29        $dbms->query($local_sql);
30
31      case 4:
32        //Create a log_adv_kernel_network table that recognizes the log-records
33        //that have come from the kernel-network interface (typically iptables).
34        $local_sql  = "CREATE TABLE log_adv_kernel_network (";
35        $local_sql .= "device_in VARCHAR(15), device_out VARCHAR(15), hw_address  MACADDR, ";
36        $local_sql .= "source_ip INET, destination_ip INET, packet_length BIGINT, ";
37        $local_sql .= "tos_bit VARCHAR(5), ";
38        $local_sql .= "prec_bit VARCHAR(5), ttl INT, header_id BIGINT, source_port INT, ";
39        $local_sql .= "destination_port INT, body_length INT, protocol VARCHAR(5), ";
40        $local_sql .= "body_len INT";
41        $local_sql .= ") INHERITS (log_adv)"; 
42        $dbms->query($local_sql);
43
44      case 5:
45        //Add the operating system to the object-table
46        //COLUMN os (VARCHAR - 25)
47        //COLUMN os_version (VARCHAR - 15)
48        $local_sql = "ALTER TABLE object ADD COLUMN os TEXT";
49        $dbms->query($local_sql);
50
51        $local_sql = "ALTER TABLE object ADD COLUMN os_version TEXT";
52        $dbms->query($local_sql);
53
54        $local_sql = "CREATE INDEX os ON object (os)";
55        $dbms->query($local_sql);
56
57        $local_sql = "CREATE INDEX os_version ON object (os, os_version)";
58        $dbms->query($local_sql);
59
60      case 6:
61        //Create a table with supported operating systems. Only after a implementation of a
62        //log-processing application a new OS will be added. This ensures the correctness of
63        //the entire system.
64        $local_sql = "CREATE TABLE supported_os (os_name TEXT, remarks TEXT)";
65        $dbms->query($local_sql);
66
67        $local_sql = "CREATE UNIQUE INDEX spp_os ON supported_os (os_name)";
68        $dbms->query($local_sql);
69
70      case 7:
71        //Create a column in the log table that indicates if the daemon did recognize the 
72        //log-record. This makes it easier to trace which log-records still have to be added
73        //to the daemon.
74        $local_sql = "ALTER TABLE log ADD COLUMN recognized BOOLEAN";
75        $dbms->query($local_sql);
76
77        $local_sql = "ALTER TABLE log ALTER COLUMN recognized SET DEFAULT FALSE";
78        $dbms->query($local_sql);
79   
80     case 8: 
81        //Set the default value of processed to FALSE
82        $local_sql = "ALTER TABLE log ALTER COLUMN processed SET DEFAULT FALSE";
83        $dbms->query($local_sql);
84       
85     case 9:
86        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN window TEXT";
87        $dbms->query($local_sql);
88  
89        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN urgp INT";
90        $dbms->query($local_sql);
91
92        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN syn BOOLEAN";
93        $dbms->query($local_sql);
94
95        $local_sql = "ALTER TABLE log_adv_kernel_network ALTER COLUMN syn SET DEFAULT FALSE";
96        $dbms->query($local_sql);
97
98     case 10:
99
100        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN type INT";
101        $dbms->query($local_sql);
102
103        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN code INT";
104        $dbms->query($local_sql);
105
106        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN sequence_number INT";
107        $dbms->query($local_sql);
108
109     case 11:
110        //Recognize some more kernel_network fields
111        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN res varchar(5)";
112        $dbms->query($local_sql);
113
114        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN rst BOOLEAN";
115        $dbms->query($local_sql);
116
117        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN df BOOLEAN";
118        $dbms->query($local_sql);
119
120    case 12:
121       //Add the gcm_daemon_version to the system
122       $local_sql = "INSERT INTO db_value VALUES ('gcm_daemon_version', '1')";
123       $dbms->query($local_sql); 
124
125    case 13:
126       //Create the table object_system_user
127       $local_sql = "CREATE TABLE object_system_user (objectid BIGINT, system_username TEXT, can_login BOOLEAN, can_be_root BOOLEAN)";
128       $dbms->query($local_sql);
129
130       $local_sql = "CREATE UNIQUE INDEX obsyus_id_name ON object_system_user (objectid, system_username)";
131       $dbms->query($local_sql);
132
133      
134       $local_sql = "CREATE INDEX obsyus_id ON object_system_user (objectid)";
135       $dbms->query($local_sql);
136
137
138       $local_sql = "CREATE INDEX obsyus_name ON object_system_user (system_username)";
139       $dbms->query($local_sql);
140
141    case 14:
142       //Make type_of_issue ready for automatic detection
143       $local_sql = "ALTER TABLE type_of_issue ADD COLUMN automated_check BOOLEAN";
144       $dbms->query($local_sql);
145
146       $local_sql = "ALTER TABLE type_of_issue ADD COLUMN alert_level INT";
147       $dbms->query($local_sql);
148
149       $local_sql = "ALTER TABLE type_of_issue ADD COLUMN last_run TIMESTAMP";
150       $dbms->query($local_sql);
151
152       $local_sql = "ALTER TABLE type_of_issue ADD COLUMN recheck_interval TIMESTAMP";
153       $dbms->query($local_sql);
154
155     case 15:
156       $local_sql = "INSERT INTO db_value (setting, setting_value) VALUES ('log_processing', '0')";
157       $dbms->query($local_sql);
158
159    case 16:
160       $local_sql = "ALTER TABLE log_adv_kernel_network DROP COLUMN hw_address";
161       $dbms->query($local_sql);
162       
163
164       $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN hw_address TEXT";
165       $dbms->query($local_sql);
166    case 17:
167       $local_sql = "DROP TABLE object_system_user";
168       $dbms->query($local_sql);
169
170    case 18:
171       $local_sql = "UPDATE action SET actionname = 'Investigation completed', statuscode = 'PEN', description = 'Investigation has been done.' ";
172       $local_sql .= "WHERE actionid = '9'";
173       $dbms->query($local_sql);
174
175    case 19:
176       $local_sql = "insert into type_of_issue (name, suggested_priority, description)";
177       $local_sql .= " values ('parameter created',3,'A new parameter was created')";
178       $dbms->query($local_sql);
179
180       $local_sql = "insert into type_of_issue (name, suggested_priority, description)";
181       $local_sql .= " values ('property modified',3,'The STATIC property of a parameter was modified')";
182       $dbms->query($local_sql);
183
184       $local_sql = "insert into type_of_issue (name, suggested_priority, description)";
185       $local_sql .= " values ('parameter removed',3,'A parameter was removed') ";
186       $dbms->query($local_sql);
187
188   case 20:
189       $local_sql = "CREATE TABLE parameter_notification (notificationid bigint, paramid bigint,  primary key (notificationid, paramid))";
190       $dbms->query($local_sql);
191   
192       $local_sql = "CREATE TABLE parameter_class (name text, property_name text, description text, property_type text, ";
193       $local_sql .= "min float, max float, notify boolean, primary key (name, property_name));";
194       $dbms->query($local_sql);
195
196       $local_sql = "INSERT INTO parameter_class (name, property_name, description, property_type, notify)";
197       $local_sql .= "VALUES ('package', 'version', 'The installed version of the package', 'STATIC', 't')";
198       $dbms->query($local_sql);
199
200
201   case 21:
202       $local_sql = "UPDATE action SET statuscode = LOWER(statuscode)";
203       $dbms->query($local_sql);
204
205  case 22:
206        //Create a log_adv_kernel_network table that recognizes the log-records
207        //that have come from the kernel-network interface (typically iptables).
208        $local_sql  = "CREATE TABLE log_adv_daemon (";
209        $local_sql .= "service TEXT, event TEXT";
210        $local_sql .= ") INHERITS (log_adv)";
211        $dbms->query($local_sql);
212
213  case 23:
214       $local_sql = "CREATE INDEX log_adv_daemon_service ON log_adv_daemon (service)";
215       $dbms->query($local_sql);
216  
217  case 24: 
218        $local_sql = "ALTER TABLE object ADD COLUMN log_count BIGINT";
219        $dbms->query($local_sql);
220
221        $local_sql = "ALTER TABLE object ADD COLUMN notification_count BIGINT";
222        $dbms->query($local_sql);
223
224        $local_sql = "ALTER TABLE object ADD COLUMN parameter_count BIGINT";
225        $dbms->query($local_sql);
226 case 25:
227        $local_sql = "UPDATE object SET log_count = '0', "
228         . "notification_count = '0', " 
229         . "parameter_count = '0' ";
230        $dbms->query($local_sql);
231
232 case 26:
233        $local_sql = "UPDATE type_of_issue SET name = TRIM(name)";
234        $dbms->query($local_sql);
235
236 case 27: 
237        $local_sql = "INSERT INTO db_value VALUES ('last_notification', '0')";
238        $dbms->query($local_sql);
239
240 case 28:
241        $dbms->query("CREATE GROUP view");
242        $dbms->query("CREATE GROUP ops");
243        $dbms->query("CREATE GROUP admin");
244
245        $dbms->query("GRANT SELECT ON action TO GROUP view, GROUP ops, GROUP admin");
246         $dbms->query("GRANT SELECT ON action_user TO GROUP view, GROUP ops, GROUP admin");
247         $dbms->query("GRANT SELECT ON db_value TO GROUP view, GROUP ops, GROUP admin");
248         $dbms->query("GRANT SELECT ON history TO GROUP view, GROUP ops, GROUP admin");
249         $dbms->query("GRANT SELECT ON log TO GROUP view, GROUP ops, GROUP admin");
250         $dbms->query("GRANT SELECT ON log_adv TO GROUP view, GROUP ops, GROUP admin");
251         $dbms->query("GRANT SELECT ON log_adv_daemon TO GROUP view, GROUP ops, GROUP admin");
252         $dbms->query("GRANT SELECT ON log_adv_kernel_network TO GROUP view, GROUP ops, GROUP admin");
253         $dbms->query("GRANT SELECT ON log_notification TO GROUP view, GROUP ops, GROUP admin");
254         $dbms->query("GRANT SELECT ON notification TO GROUP view, GROUP ops, GROUP admin");
255         $dbms->query("GRANT SELECT ON object TO GROUP view, GROUP ops, GROUP admin");
256         $dbms->query("GRANT SELECT ON object_issue TO GROUP view, GROUP ops, GROUP admin");
257         $dbms->query("GRANT SELECT ON object_priority TO GROUP view, GROUP ops, GROUP admin");
258         $dbms->query("GRANT SELECT ON object_service TO GROUP view, GROUP ops, GROUP admin");
259         $dbms->query("GRANT SELECT ON object_user TO GROUP view, GROUP ops, GROUP admin");
260         $dbms->query("GRANT SELECT ON parameter TO GROUP view, GROUP ops, GROUP admin");
261         $dbms->query("GRANT SELECT ON parameter_class TO GROUP view, GROUP ops, GROUP admin");
262         $dbms->query("GRANT SELECT ON parameter_notification TO GROUP view, GROUP ops, GROUP admin");
263         $dbms->query("GRANT SELECT ON priority TO GROUP view, GROUP ops, GROUP admin");
264         $dbms->query("GRANT SELECT ON property TO GROUP view, GROUP ops, GROUP admin");
265         $dbms->query("GRANT SELECT ON service TO GROUP view, GROUP ops, GROUP admin");
266         $dbms->query("GRANT SELECT ON status TO GROUP view, GROUP ops, GROUP admin");
267         $dbms->query("GRANT SELECT ON supported_os TO GROUP view, GROUP ops, GROUP admin");
268         $dbms->query("GRANT SELECT ON type_of_issue TO GROUP view, GROUP ops, GROUP admin");
269         $dbms->query("GRANT SELECT ON usr TO GROUP view, GROUP ops, GROUP admin");
270         
271         $dbms->query("GRANT INSERT ON action_user TO GROUP ops, GROUP admin");
272         $dbms->query("GRANT UPDATE ON notification TO GROUP ops, GROUP admin");
273         $dbms->query("GRANT INSERT ON object TO GROUP admin");
274         $dbms->query("GRANT UPDATE ON object TO GROUP ops, GROUP admin");
275         $dbms->query("GRANT DELETE ON object TO GROUP admin");
276         $dbms->query("GRANT UPDATE ON usr TO GROUP view, GROUP ops, GROUP admin");
277         $dbms->query("GRANT INSERT ON usr TO GROUP admin");
278         $dbms->query("GRANT DELETE ON usr TO GROUP admin");
279
280 case 29:
281      $local_sql = "INSERT INTO action (actionname, description) VALUES ('Redisplayed to user', "
282       . "'The notification has been presented to a user. This is not the first time')";
283      $dbms->query ($local_sql);
284
285 case 30:
286     $local_sql = "INSERT INTO action (actionname, description) VALUES ('Displayed in list', "
287      . "'The notification has been presented in a list with other notifications.')";
288     $dbms->query ($local_sql);
289
290 case 31:
291      $local_sql  = "CREATE TABLE log_adv_daemon_email (";
292      $local_sql .= "source_ip INET, destination_ip INET, internal_messageid TEXT, ";
293      $local_sql .= "external_messageid TEXT, to_email TEXT, from_email TEXT, delay TIME, xdelay TIME, ";
294      $local_sql .= "mailer TEXT, status TEXT, pid INT";
295      $local_sql .= ") INHERITS (log_adv_daemon)";
296      $dbms->query($local_sql);
297
298 //These columns have to be removed when a new version of PGSQL has become mainstream that supportsa DROP COLUMN
299 /*
300                           
301      $local_sql = "ALTER TABLE log DROP COLUMN recognized";
302      $dbms->query($local_sql);
303
304      $local_sql = "ALTER TABLE logng DROP COLUMN recognized";
305      $dbms->query($local_sql);
306 */
307
308    }
309
310    $local_sql = "UPDATE db_value SET setting_value = ".$db_version." WHERE setting = 'db_version'";
311
312    $dbms->query($local_sql);
313
314
315 ?>