1 | ### Fichero de actualización de la base de datos. |
---|
2 | # OpenGnsys 1.1.0 |
---|
3 | #use ogAdmBD |
---|
4 | |
---|
5 | ### NOTA: la configuración de MySQL solo puede modificarla el usuario "root". |
---|
6 | # Soportar cláusuloas GROUP BY especiales para configuración de equipos. |
---|
7 | #SET GLOBAL sql_mode = TRIM(BOTH ',' FROM REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', '')); |
---|
8 | # Activar calendario de eventos de MySQL. |
---|
9 | #SET GLOBAL event_scheduler = ON; |
---|
10 | |
---|
11 | # Eliminar procedimiento y disparador para evitar errores de ejecución. |
---|
12 | DROP PROCEDURE IF EXISTS addcols; |
---|
13 | DROP TRIGGER IF EXISTS registrar_acciones; |
---|
14 | # Procedimiento para actualización condicional de tablas. |
---|
15 | DELIMITER '//' |
---|
16 | CREATE PROCEDURE addcols() BEGIN |
---|
17 | # Añadir campo para incluir aulas en proyecto Remote PC (ticket #708). |
---|
18 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
19 | WHERE COLUMN_NAME='inremotepc' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE()) |
---|
20 | THEN |
---|
21 | ALTER TABLE aulas |
---|
22 | ADD inremotepc TINYINT DEFAULT 0; |
---|
23 | END IF; |
---|
24 | # Añadir campo para incluir imágenes en proyecto Remote PC (ticket #708). |
---|
25 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
26 | WHERE COLUMN_NAME='inremotepc' AND TABLE_NAME='imagenes' AND TABLE_SCHEMA=DATABASE()) |
---|
27 | THEN |
---|
28 | ALTER TABLE imagenes |
---|
29 | ADD inremotepc TINYINT DEFAULT 0; |
---|
30 | END IF; |
---|
31 | # Añadir campo para clave de acceso a la API REST (ticket #708). |
---|
32 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
33 | WHERE COLUMN_NAME='apikey' AND TABLE_NAME='usuarios' AND TABLE_SCHEMA=DATABASE()) |
---|
34 | THEN |
---|
35 | ALTER TABLE usuarios |
---|
36 | ADD apikey VARCHAR(32) NOT NULL DEFAULT ''; |
---|
37 | END IF; |
---|
38 | # Añadir porcentaje de uso de sistema de ficheros (ticket #711) |
---|
39 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
40 | WHERE COLUMN_NAME='uso' AND TABLE_NAME='ordenadores_particiones' AND TABLE_SCHEMA=DATABASE()) |
---|
41 | THEN |
---|
42 | ALTER TABLE ordenadores_particiones |
---|
43 | ADD uso TINYINT NOT NULL DEFAULT 0; |
---|
44 | END IF; |
---|
45 | # Añadir nº de serie (ticket #713) |
---|
46 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
47 | WHERE COLUMN_NAME='numserie' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE()) |
---|
48 | THEN |
---|
49 | ALTER TABLE ordenadores |
---|
50 | ADD numserie varchar(25) DEFAULT NULL AFTER nombreordenador; |
---|
51 | END IF; |
---|
52 | # Añadir campo para clave de acceso a la API REST de OGAgent (ticket #718). |
---|
53 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
54 | WHERE COLUMN_NAME='agentkey' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE()) |
---|
55 | THEN |
---|
56 | ALTER TABLE ordenadores |
---|
57 | ADD agentkey VARCHAR(32) DEFAULT NULL; |
---|
58 | END IF; |
---|
59 | # Añadir índice para mostrar correctamente el formulario de estado. |
---|
60 | IF NOT EXISTS (SELECT * FROM information_schema.STATISTICS |
---|
61 | WHERE INDEX_NAME='idaulaip' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE()) |
---|
62 | THEN |
---|
63 | ALTER TABLE ordenadores |
---|
64 | ADD KEY idaulaip (idaula ASC, ip ASC); |
---|
65 | END IF; |
---|
66 | # Añadir campo para directorio de ogLive asociado al cliente (ticket #768). |
---|
67 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
68 | WHERE COLUMN_NAME='oglivedir' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE()) |
---|
69 | THEN |
---|
70 | ALTER TABLE ordenadores |
---|
71 | ADD oglivedir VARCHAR(50) NOT NULL DEFAULT 'ogLive'; |
---|
72 | END IF; |
---|
73 | # Añadir campo para directorio de ogLive asociado al cliente (ticket #768). |
---|
74 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
75 | WHERE COLUMN_NAME='oglivedir' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE()) |
---|
76 | THEN |
---|
77 | ALTER TABLE aulas |
---|
78 | ADD oglivedir VARCHAR(50) NOT NULL DEFAULT 'ogLive'; |
---|
79 | END IF; |
---|
80 | # Eliminar campos sin uso en aulas (ticket #730). |
---|
81 | IF EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
82 | WHERE COLUMN_NAME='cuadro_x' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE()) |
---|
83 | THEN |
---|
84 | ALTER TABLE aulas |
---|
85 | DROP cuadro_x, |
---|
86 | DROP cuadro_y; |
---|
87 | END IF; |
---|
88 | # Eliminar campos no usado en inventario de hardware (ticket #713). |
---|
89 | IF EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
90 | WHERE COLUMN_NAME='pci' AND TABLE_NAME='tipohardwares' AND TABLE_SCHEMA=DATABASE()) |
---|
91 | THEN |
---|
92 | ALTER TABLE tipohardwares |
---|
93 | DROP pci; |
---|
94 | END IF; |
---|
95 | # Añadir servidor de sincronización horaria NTP (ticket #725). |
---|
96 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
97 | WHERE COLUMN_NAME='ntp' AND TABLE_NAME='aulas' AND TABLE_SCHEMA=DATABASE()) |
---|
98 | THEN |
---|
99 | ALTER TABLE aulas |
---|
100 | ADD ntp VARCHAR(30) AFTER proxy; |
---|
101 | END IF; |
---|
102 | # Directorios en repo para distintas UO (ticket #678). |
---|
103 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
104 | WHERE COLUMN_NAME='ogunit' AND TABLE_NAME='entidades' AND TABLE_SCHEMA=DATABASE()) |
---|
105 | THEN |
---|
106 | ALTER TABLE entidades |
---|
107 | ADD ogunit TINYINT(1) NOT NULL DEFAULT 0; |
---|
108 | END IF; |
---|
109 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
110 | WHERE COLUMN_NAME='directorio' AND TABLE_NAME='centros' AND TABLE_SCHEMA=DATABASE()) |
---|
111 | THEN |
---|
112 | ALTER TABLE centros |
---|
113 | ADD directorio VARCHAR(50) DEFAULT ''; |
---|
114 | END IF; |
---|
115 | # Nº de revisión de imagen (ticket #737). |
---|
116 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
117 | WHERE COLUMN_NAME='revision' AND TABLE_NAME='imagenes' AND TABLE_SCHEMA=DATABASE()) |
---|
118 | THEN |
---|
119 | ALTER TABLE imagenes |
---|
120 | ADD revision SMALLINT UNSIGNED NOT NULL DEFAULT 0 AFTER nombreca; |
---|
121 | END IF; |
---|
122 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
123 | WHERE COLUMN_NAME='revision' AND TABLE_NAME='ordenadores_particiones' AND TABLE_SCHEMA=DATABASE()) |
---|
124 | THEN |
---|
125 | ALTER TABLE ordenadores_particiones |
---|
126 | ADD revision SMALLINT UNSIGNED NOT NULL DEFAULT 0 AFTER idimagen; |
---|
127 | END IF; |
---|
128 | # Incluir campo sistema operativo en el perfil de software (tickets #738 #713) |
---|
129 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
130 | WHERE COLUMN_NAME='idnombreso' AND TABLE_NAME='perfilessoft' AND TABLE_SCHEMA=DATABASE()) |
---|
131 | THEN |
---|
132 | ALTER TABLE perfilessoft |
---|
133 | ADD idnombreso SMALLINT UNSIGNED AFTER idperfilsoft; |
---|
134 | END IF; |
---|
135 | # Añadir campo para clave de acceso a la API REST del repositorio (ticket #743). |
---|
136 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
137 | WHERE COLUMN_NAME='apikey' AND TABLE_NAME='repositorios' AND TABLE_SCHEMA=DATABASE()) |
---|
138 | THEN |
---|
139 | ALTER TABLE repositorios |
---|
140 | ADD apikey VARCHAR(32) NOT NULL DEFAULT ''; |
---|
141 | END IF; |
---|
142 | # Codificar claves de los usuarios, si fuese necesario (ticket #778) |
---|
143 | IF ((SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS |
---|
144 | WHERE COLUMN_NAME='pasguor' AND TABLE_NAME='usuarios' AND TABLE_SCHEMA=DATABASE()) != 56) |
---|
145 | THEN |
---|
146 | ALTER TABLE usuarios |
---|
147 | MODIFY pasguor VARCHAR(56) NOT NULL DEFAULT ''; |
---|
148 | INSERT INTO usuarios (idusuario, pasguor) |
---|
149 | SELECT idusuario, pasguor FROM usuarios |
---|
150 | ON DUPLICATE KEY UPDATE |
---|
151 | pasguor=SHA2(VALUES(pasguor),224); |
---|
152 | END IF; |
---|
153 | # Crear tabla de log para la cola de acciones (ticket #782) |
---|
154 | IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS |
---|
155 | WHERE TABLE_NAME='acciones_log' AND TABLE_SCHEMA=DATABASE()) |
---|
156 | THEN |
---|
157 | CREATE TABLE acciones_log LIKE acciones; |
---|
158 | ALTER TABLE acciones_log ADD fecha_borrado DATETIME; |
---|
159 | END IF; |
---|
160 | END// |
---|
161 | # Disparador para mover acciones borradas a la tabla de registro de acciones. |
---|
162 | CREATE TRIGGER registrar_acciones BEFORE DELETE ON acciones FOR EACH ROW |
---|
163 | BEGIN |
---|
164 | INSERT INTO acciones_log VALUES |
---|
165 | (OLD.idaccion, OLD.tipoaccion, OLD.idtipoaccion, OLD.descriaccion, |
---|
166 | OLD.idordenador, OLD.ip, OLD.sesion, OLD.idcomando, OLD.parametros, |
---|
167 | OLD.fechahorareg, OLD.fechahorafin, OLD.estado, OLD.resultado, |
---|
168 | OLD.descrinotificacion, OLD.ambito, OLD.idambito, OLD.restrambito, |
---|
169 | OLD.idprocedimiento, OLD.idtarea, OLD.idcentro, OLD.idprogramacion, |
---|
170 | NOW()); |
---|
171 | END// |
---|
172 | # Ejecutar actualización condicional. |
---|
173 | DELIMITER ';' |
---|
174 | CALL addcols(); |
---|
175 | DROP PROCEDURE addcols; |
---|
176 | |
---|
177 | # Nuevos tipos de particiones y de sistemas de ficheros. |
---|
178 | INSERT INTO tipospar (codpar, tipopar, clonable) VALUES |
---|
179 | (CONV('A9',16,10), 'NETBSD', 1), |
---|
180 | (CONV('2700',16,10), 'WIN-RECOV', 1), |
---|
181 | (CONV('8302',16,10), 'LINUX', 1), |
---|
182 | (CONV('A504',16,10), 'FREEBSD', 1), |
---|
183 | (CONV('A901',16,10), 'NETBSD-SWAP', 0), |
---|
184 | (CONV('A902',16,10), 'NETBSD', 1), |
---|
185 | (CONV('A903',16,10), 'NETBSD', 1), |
---|
186 | (CONV('A904',16,10), 'NETBSD', 1), |
---|
187 | (CONV('A905',16,10), 'NETBSD', 1), |
---|
188 | (CONV('A906',16,10), 'NETBSD-RAID', 1), |
---|
189 | (CONV('AF02',16,10), 'HFS-RAID', 1), |
---|
190 | (CONV('FB00',16,10), 'VMFS', 1), |
---|
191 | (CONV('FB01',16,10), 'VMFS-RESERV', 1), |
---|
192 | (CONV('FB02',16,10), 'VMFS-KRN', 1), |
---|
193 | (CONV('10000',16,10), 'LVM-LV', 1), |
---|
194 | (CONV('10010',16,10), 'ZFS-VOL', 1) |
---|
195 | ON DUPLICATE KEY UPDATE |
---|
196 | codpar=VALUES(codpar), tipopar=VALUES(tipopar), clonable=VALUES(clonable); |
---|
197 | INSERT INTO sistemasficheros (idsistemafichero, nemonico, descripcion) VALUES |
---|
198 | (19, 'LINUX-SWAP', 'LINUX-SWAP'), |
---|
199 | (20, 'F2FS', 'F2FS'), |
---|
200 | (21, 'NILFS2', 'NILFS2') |
---|
201 | ON DUPLICATE KEY UPDATE |
---|
202 | idsistemafichero=VALUES(idsistemafichero), nemonico=VALUES(nemonico), descripcion=VALUES(descripcion); |
---|
203 | |
---|
204 | |
---|
205 | # Preparar generación de claves de acceso a la API REST para el usuario principal y a la del repositorio principal (tickets #708 y #743). |
---|
206 | UPDATE usuarios |
---|
207 | SET apikey = 'APIKEY' |
---|
208 | WHERE idusuario = 1 AND apikey = ''; |
---|
209 | UPDATE repositorios |
---|
210 | SET apikey = 'REPOKEY' |
---|
211 | WHERE idrepositorio = 1 AND apikey = ''; |
---|
212 | |
---|
213 | # Nuevos componentes hardware (ticket #713) |
---|
214 | INSERT INTO tipohardwares (idtipohardware, descripcion, urlimg, nemonico) VALUES |
---|
215 | (17, 'Chasis del Sistema', '', 'cha'), |
---|
216 | (18, 'Controladores de almacenamiento', '../images/iconos/almacenamiento.png', 'sto'), |
---|
217 | (19, 'Tipo de proceso de arranque', '../images/iconos/arranque.png', 'boo') |
---|
218 | ON DUPLICATE KEY UPDATE |
---|
219 | descripcion=VALUES(descripcion), urlimg=VALUES(urlimg), nemonico=VALUES(nemonico); |
---|
220 | |
---|
221 | # Número de puestos del aula permite valores hasta 32768 (ticket #747) |
---|
222 | ALTER TABLE aulas |
---|
223 | MODIFY puestos SMALLINT DEFAULT NULL; |
---|
224 | |
---|
225 | # Nueva tabla para datos del proyecto Remote PC (ticket #708). |
---|
226 | CREATE TABLE IF NOT EXISTS remotepc ( |
---|
227 | id INT(11) NOT NULL, |
---|
228 | reserved DATETIME DEFAULT NULL, |
---|
229 | urllogin VARCHAR(100), |
---|
230 | urllogout VARCHAR(100), |
---|
231 | PRIMARY KEY (id) |
---|
232 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
---|
233 | ALTER TABLE remotepc |
---|
234 | MODIFY reserved DATETIME DEFAULT NULL; |
---|
235 | |
---|
236 | # Nuevo comando "Enviar mensaje" (ticket #779) |
---|
237 | INSERT INTO comandos (idcomando, descripcion, pagina, gestor, funcion, urlimg, |
---|
238 | aplicambito, visuparametros, parametros, comentarios, activo, submenu) VALUES |
---|
239 | (16, 'Enviar mensaje', '../comandos/EnviarMensaje.php', '../comandos/gestores/gestor_Comandos.php', 'EnviarMensaje', '', 31, '', '', '', 1, '' ) |
---|
240 | ON DUPLICATE KEY UPDATE |
---|
241 | descripcion=VALUES(descripcion), pagina=VALUES(pagina), |
---|
242 | gestor=VALUES(gestor), funcion=VALUES(funcion), |
---|
243 | aplicambito=VALUES(aplicambito), activo=VALUES(activo); |
---|
244 | INSERT INTO parametros (idparametro, nemonico, descripcion, nomidentificador, nomtabla, nomliteral, tipopa, visual) VALUES |
---|
245 | (39, 'tit', 'Título', '', '', '', 0, 1), |
---|
246 | (40, 'msj', 'Contenido', '', '', '', 0, 1) |
---|
247 | ON DUPLICATE KEY UPDATE |
---|
248 | nemonico=VALUES(nemonico), descripcion=VALUES(descripcion), |
---|
249 | tipopa=VALUES(tipopa), visual=VALUES(visual); |
---|
250 | |
---|
251 | # Evitar error de MySQL con modo NO_ZERO_DATE (ticket #730). |
---|
252 | ALTER TABLE acciones |
---|
253 | MODIFY fechahorareg DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00', |
---|
254 | MODIFY fechahorafin DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00'; |
---|
255 | |
---|
256 | # Ampliar programación de tareas hasta 2025 (ticket #732). |
---|
257 | ALTER TABLE programaciones |
---|
258 | MODIFY annos SMALLINT DEFAULT NULL; |
---|
259 | |
---|
260 | # Eliminar tabla sin uso (ticket #730). |
---|
261 | DROP TABLE IF EXISTS campus; |
---|
262 | |
---|