[04cc6bf] | 1 | ### Fichero de actualización de la base de datos. |
---|
| 2 | # OpenGnsys 1.1.0pre - 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 | # 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). |
---|
| 205 | UPDATE usuarios |
---|
| 206 | SET apikey = 'APIKEY' |
---|
| 207 | WHERE idusuario = 1 AND apikey = ''; |
---|
| 208 | UPDATE repositorios |
---|
| 209 | SET apikey = 'REPOKEY' |
---|
| 210 | WHERE idrepositorio = 1 AND apikey = ''; |
---|
| 211 | |
---|
| 212 | # Nuevos componentes hardware (ticket #713) |
---|
| 213 | INSERT INTO tipohardwares (idtipohardware, descripcion, urlimg, nemonico) VALUES |
---|
| 214 | (17, 'Chasis del Sistema', '', 'cha'), |
---|
| 215 | (18, 'Controladores de almacenamiento', '../images/iconos/almacenamiento.png', 'sto'), |
---|
| 216 | (19, 'Tipo de proceso de arranque', '../images/iconos/arranque.png', 'boo') |
---|
| 217 | ON DUPLICATE KEY UPDATE |
---|
| 218 | descripcion=VALUES(descripcion), urlimg=VALUES(urlimg), nemonico=VALUES(nemonico); |
---|
| 219 | |
---|
| 220 | # Número de puestos del aula permite valores hasta 32768 (ticket #747) |
---|
| 221 | ALTER TABLE aulas |
---|
| 222 | MODIFY puestos SMALLINT DEFAULT NULL; |
---|
| 223 | |
---|
| 224 | # Nuevas tablas para datos del proyecto Remote PC y operaciones de OGAgent (ticket #708). |
---|
| 225 | DROP TABLE IF EXISTS remotepc; |
---|
| 226 | CREATE TABLE remotepc ( |
---|
| 227 | id INT(11) NOT NULL, |
---|
| 228 | reserved DATETIME DEFAULT NULL, |
---|
| 229 | urllogin VARCHAR(100), |
---|
| 230 | urllogout VARCHAR(100), |
---|
| 231 | language VARCHAR(5), |
---|
| 232 | PRIMARY KEY (id) |
---|
| 233 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
---|
| 234 | DROP TABLE IF EXISTS ogagent_queue; |
---|
| 235 | CREATE TABLE ogagent_queue ( |
---|
| 236 | id INT(11) NOT NULL AUTO_INCREMENT, |
---|
| 237 | clientid INT(11) NOT NULL, |
---|
| 238 | exectime DATETIME DEFAULT NULL, |
---|
| 239 | operation VARCHAR(25), |
---|
| 240 | PRIMARY KEY (id) |
---|
| 241 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
---|
| 242 | |
---|
| 243 | # Nuevo comando "Enviar mensaje" (ticket #779) |
---|
| 244 | INSERT INTO comandos (idcomando, descripcion, pagina, gestor, funcion, urlimg, |
---|
| 245 | aplicambito, visuparametros, parametros, comentarios, activo, submenu) VALUES |
---|
| 246 | (16, 'Enviar mensaje', '../comandos/EnviarMensaje.php', '../comandos/gestores/gestor_Comandos.php', 'EnviarMensaje', '', 31, '', '', '', 1, '' ) |
---|
| 247 | ON DUPLICATE KEY UPDATE |
---|
| 248 | descripcion=VALUES(descripcion), pagina=VALUES(pagina), |
---|
| 249 | gestor=VALUES(gestor), funcion=VALUES(funcion), |
---|
| 250 | aplicambito=VALUES(aplicambito), activo=VALUES(activo); |
---|
| 251 | INSERT INTO parametros (idparametro, nemonico, descripcion, nomidentificador, nomtabla, nomliteral, tipopa, visual) VALUES |
---|
| 252 | (39, 'tit', 'Título', '', '', '', 0, 1), |
---|
| 253 | (40, 'msj', 'Contenido', '', '', '', 0, 1) |
---|
| 254 | ON DUPLICATE KEY UPDATE |
---|
| 255 | nemonico=VALUES(nemonico), descripcion=VALUES(descripcion), |
---|
| 256 | tipopa=VALUES(tipopa), visual=VALUES(visual); |
---|
| 257 | |
---|
| 258 | # Evitar error de MySQL con modo NO_ZERO_DATE (ticket #730). |
---|
| 259 | ALTER TABLE acciones |
---|
| 260 | MODIFY fechahorareg DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00', |
---|
| 261 | MODIFY fechahorafin DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00'; |
---|
| 262 | |
---|
| 263 | # Ampliar programación de tareas hasta 2025 (ticket #732). |
---|
| 264 | ALTER TABLE programaciones |
---|
| 265 | MODIFY annos SMALLINT DEFAULT NULL; |
---|
| 266 | |
---|
| 267 | # Eliminar tabla sin uso (ticket #730). |
---|
| 268 | DROP TABLE IF EXISTS campus; |
---|
| 269 | |
---|