Added new tables to the database: parameter_class and parameter_notification
[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      case 1:
15        //DROP the rule that prohibits updates (change of spec).
16        $local_sql = "DROP RULE log_update";
17 //       $dbms->query($local_sql); DISABLED FOR NEW ROLE LOG-tABLE
18
19      case 2:
20        //In the log table processed should be false by default
21        $local_sql = "UPDATE log SET processed = false";
22        $dbms->query($local_sql); 
23
24      case 3:
25        //In the log_adv a column is added that indicates where the detailed
26        //data has been written to
27        $local_sql = "ALTER TABLE log_adv ADD COLUMN detailed_table VARCHAR(75)";
28        $dbms->query($local_sql);
29
30      case 4:
31        //Create a log_adv_kernel_network table that recognizes the log-records
32        //that have come from the kernel-network interface (typically iptables).
33        $local_sql  = "CREATE TABLE log_adv_kernel_network (";
34        $local_sql .= "device_in VARCHAR(15), device_out VARCHAR(15), hw_address  MACADDR, ";
35        $local_sql .= "source_ip INET, destination_ip INET, packet_length BIGINT, ";
36        $local_sql .= "tos_bit VARCHAR(5), ";
37        $local_sql .= "prec_bit VARCHAR(5), ttl INT, header_id BIGINT, source_port INT, ";
38        $local_sql .= "destination_port INT, body_length INT, protocol VARCHAR(5), ";
39        $local_sql .= "body_len INT";
40        $local_sql .= ") INHERITS (log_adv)"; 
41        $dbms->query($local_sql);
42
43      case 5:
44        //Add the operating system to the object-table
45        //COLUMN os (VARCHAR - 25)
46        //COLUMN os_version (VARCHAR - 15)
47        $local_sql = "ALTER TABLE object ADD COLUMN os TEXT";
48        $dbms->query($local_sql);
49
50        $local_sql = "ALTER TABLE object ADD COLUMN os_version TEXT";
51        $dbms->query($local_sql);
52
53        $local_sql = "CREATE INDEX os ON object (os)";
54        $dbms->query($local_sql);
55
56        $local_sql = "CREATE INDEX os_version ON object (os, os_version)";
57        $dbms->query($local_sql);
58
59      case 6:
60        //Create a table with supported operating systems. Only after a implementation of a
61        //log-processing application a new OS will be added. This ensures the correctness of
62        //the entire system.
63        $local_sql = "CREATE TABLE supported_os (os_name TEXT, remarks TEXT)";
64        $dbms->query($local_sql);
65
66        $local_sql = "CREATE UNIQUE INDEX spp_os ON supported_os (os_name)";
67        $dbms->query($local_sql);
68
69      case 7:
70        //Create a column in the log table that indicates if the daemon did recognize the 
71        //log-record. This makes it easier to trace which log-records still have to be added
72        //to the daemon.
73        $local_sql = "ALTER TABLE log ADD COLUMN recognized BOOLEAN";
74        $dbms->query($local_sql);
75
76        $local_sql = "ALTER TABLE log ALTER COLUMN recognized SET DEFAULT FALSE";
77        $dbms->query($local_sql);
78   
79     case 8: 
80        //Set the default value of processed to FALSE
81        $local_sql = "ALTER TABLE log ALTER COLUMN processed SET DEFAULT FALSE";
82        $dbms->query($local_sql);
83       
84     case 9:
85        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN window TEXT";
86        $dbms->query($local_sql);
87  
88        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN urgp INT";
89        $dbms->query($local_sql);
90
91        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN syn BOOLEAN";
92        $dbms->query($local_sql);
93
94        $local_sql = "ALTER TABLE log_adv_kernel_network ALTER COLUMN syn SET DEFAULT FALSE";
95        $dbms->query($local_sql);
96
97     case 10:
98
99        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN type INT";
100        $dbms->query($local_sql);
101
102        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN code INT";
103        $dbms->query($local_sql);
104
105        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN sequence_number INT";
106        $dbms->query($local_sql);
107
108     case 11:
109        //Recognize some more kernel_network fields
110        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN res varchar(5)";
111        $dbms->query($local_sql);
112
113        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN rst BOOLEAN";
114        $dbms->query($local_sql);
115
116        $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN df BOOLEAN";
117        $dbms->query($local_sql);
118
119    case 12:
120       //Add the gcm_daemon_version to the system
121       $local_sql = "INSERT INTO db_value VALUES ('gcm_daemon_version', '1')";
122       $dbms->query($local_sql); 
123
124    case 13:
125       //Create the table object_system_user
126       $local_sql = "CREATE TABLE object_system_user (objectid BIGINT, system_username TEXT, can_login BOOLEAN, can_be_root BOOLEAN)";
127       $dbms->query($local_sql);
128
129       $local_sql = "CREATE UNIQUE INDEX obsyus_id_name ON object_system_user (objectid, system_username)";
130       $dbms->query($local_sql);
131
132      
133       $local_sql = "CREATE INDEX obsyus_id ON object_system_user (objectid)";
134       $dbms->query($local_sql);
135
136
137       $local_sql = "CREATE INDEX obsyus_name ON object_system_user (system_username)";
138       $dbms->query($local_sql);
139
140    case 14:
141       //Make type_of_issue ready for automatic detection
142       $local_sql = "ALTER TABLE type_of_issue ADD COLUMN automated_check BOOLEAN";
143       $dbms->query($local_sql);
144
145       $local_sql = "ALTER TABLE type_of_issue ADD COLUMN alert_level INT";
146       $dbms->query($local_sql);
147
148       $local_sql = "ALTER TABLE type_of_issue ADD COLUMN last_run TIMESTAMP";
149       $dbms->query($local_sql);
150
151       $local_sql = "ALTER TABLE type_of_issue ADD COLUMN recheck_interval TIMESTAMP";
152       $dbms->query($local_sql);
153
154     case 15:
155       $local_sql = "INSERT INTO db_value (setting, setting_value) VALUES ('log_processing', '0')";
156       $dbms->query($local_sql);
157
158    case 16:
159       $local_sql = "ALTER TABLE log_adv_kernel_network DROP COLUMN hw_address";
160       $dbms->query($local_sql);
161       
162
163       $local_sql = "ALTER TABLE log_adv_kernel_network ADD COLUMN hw_address TEXT";
164       $dbms->query($local_sql);
165    case 17:
166       $local_sql = "DROP TABLE object_system_user";
167       $dbms->query($local_sql);
168
169    case 18:
170       $local_sql = "UPDATE action SET actionname = 'Investigation completed', statuscode = 'PEN', description = 'Investigation has been done.' ";
171       $local_sql .= "WHERE actionid = '9'";
172       $dbms->query($local_sql);
173
174    case 19:
175       $local_sql = "insert into type_of_issue (name, suggested_priority, description)";
176       $local_sql .= " values ('parameter created',3,'A new parameter was created')";
177       $dbms->query($local_sql);
178
179       $local_sql = "insert into type_of_issue (name, suggested_priority, description)";
180       $local_sql .= " values ('property modified',3,'The STATIC property of a parameter was modified')";
181       $dbms->query($local_sql);
182
183       $local_sql = "insert into type_of_issue (name, suggested_priority, description)";
184       $local_sql .= " values ('parameter removed',3,'A parameter was removed') ";
185       $dbms->query($local_sql);
186
187   case 20:
188       $local_sql = "CREATE TABLE 'parameter_notification' ('notificationid' bigint, 'paramid' bigint,  primary key (notificationid, paramid))";
189       $dbms->query($local_sql);
190   
191       $local_sql = "CREATE TABLE 'parameter_class' ('name' text, 'property_name' text, 'description' text, 'property_type' text, ";
192       $local_sql .= "'min' float, 'max' float, 'notify' boolean, primary key (name, property_name));";
193       $dbms->query($local_sql);
194
195       $local_sql = "INSERT INTO parameter_class (name, property_name, description, property_type, notify)";
196       $local_sql .= "VALUES ('package', 'version', 'The installed version of the package', 'STATIC', 't')";
197       $dbms->query($local_sql);
198
199
200 /*    
201      //These columns have to be removed when a new version of PGSQL has become mainstream that supportsa DROP COLUMN
202      $local_sql = "ALTER TABLE log DROP COLUMN recognized";
203      $dbms->query($local_sql);
204
205      $local_sql = "ALTER TABLE logng DROP COLUMN recognized";
206      $dbms->query($local_sql);
207 */
208    }
209
210    $local_sql = "UPDATE db_value SET setting_value = ".$db_version." WHERE setting = 'db_version'";
211
212    $dbms->query($local_sql);
213    
214
215 ?>