diff options
author | Ramón M. Gómez <ramongomez@us.es> | 2018-05-17 09:41:27 +0200 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2019-12-12 14:05:00 +0100 |
commit | 2be29864f8d77fa83288c83e7aa0542210834968 (patch) | |
tree | 9ecf0730355a3a7e32a9661f7fc69ac3dc979295 /admin | |
parent | 0fe16f0ab321778236cf8883015b9517a9442577 (diff) |
#812: integrar r5653 de SVN en rama {{{configfile}}} de Git.
Diffstat (limited to 'admin')
-rw-r--r-- | admin/Database/ogAdmBD.sql | 93 | ||||
-rwxr-xr-x | admin/Interface/getConfiguration | 15 | ||||
-rw-r--r-- | admin/WebConsole/includes/ConfiguracionesParticiones.php | 77 | ||||
-rw-r--r-- | admin/WebConsole/includes/pintaParticiones.php | 12 |
4 files changed, 71 insertions, 126 deletions
diff --git a/admin/Database/ogAdmBD.sql b/admin/Database/ogAdmBD.sql index 607382a9..8c742e48 100644 --- a/admin/Database/ogAdmBD.sql +++ b/admin/Database/ogAdmBD.sql @@ -608,7 +608,7 @@ INSERT INTO `parametros` (`idparametro`, `nemonico`, `descripcion`, `nomidentifi (16, 'exe', 'Identificador del procedimiento que será el que ejecute el cliente al arrancar (Autoexec)', '', '', '', 0, 0), (17, 'res', 'Respuesta del comando: Puede tomar los valores 1 o 2 en el caso de que la respuesta sea correcta o que haya un error al ejecutarse.', '', '', '', 0, 0), (19, 'ipr', 'Repositorio', 'ip', 'repositorios', 'nombrerepositorio', 1, 1), -(20, 'cpt', 'Tipo partición', 'codpar', 'tipospar', 'tipopar', 1, 1), +(20, 'cpt', 'Tipo partición', '', '', '', 1, 1), (21, 'sfi', 'Sistema de fichero', 'nemonico', 'sistemasficheros', 'nemonico', 1, 0), (22, 'tam', 'Tamaño', '', '', '', 0, 1), (23, 'ope', 'Operación', ';', '', 'Sin operación;Formatear;Ocultar;Mostrar', 3, 1), @@ -1005,97 +1005,6 @@ INSERT INTO `tiposos` (`idtiposo`, `tiposo`, `idplataforma`) VALUES -- -------------------------------------------------------- -- --- Estructura de tabla para la tabla `tipospar` --- - -DROP TABLE IF EXISTS `tipospar`; -CREATE TABLE `tipospar` ( - `codpar` int(8) NOT NULL, - `tipopar` varchar(250) NOT NULL DEFAULT '', - `clonable` tinyint(4) NOT NULL DEFAULT '0', - UNIQUE KEY `codpar` (`codpar`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- --- Volcar la base de datos para la tabla `tipospar` --- - -INSERT INTO `tipospar` (`codpar`, `tipopar`, `clonable`) VALUES -(0, 'EMPTY', 0), -(1, 'FAT12', 1), -(5, 'EXTENDED', 0), -(6, 'FAT16', 1), -(7, 'NTFS', 1), -(CONV('0B',16,10), 'FAT32', 1), -(CONV('11',16,10), 'HFAT12', 1), -(CONV('16',16,10), 'HFAT16', 1), -(CONV('17',16,10), 'HNTFS', 1), -(CONV('1B',16,10), 'HFAT32', 1), -(CONV('27',16,10), 'HNTFS-WINRE', 1), -(CONV('82',16,10), 'LINUX-SWAP', 0), -(CONV('83',16,10), 'LINUX', 1), -(CONV('8E',16,10), 'LINUX-LVM', 1), -(CONV('A5',16,10), 'FREEBSD', 1), -(CONV('A6',16,10), 'OPENBSD', 1), -(CONV('A9',16,10), 'NETBSD', 1), -(CONV('AF',16,10), 'HFS', 1), -(CONV('BE',16,10), 'SOLARIS-BOOT', 1), -(CONV('BF',16,10), 'SOLARIS', 1), -(CONV('CA',16,10), 'CACHE', 0), -(CONV('DA',16,10), 'DATA', 1), -(CONV('EE',16,10), 'GPT', 0), -(CONV('EF',16,10), 'EFI', 1), -(CONV('FB',16,10), 'VMFS', 1), -(CONV('FD',16,10), 'LINUX-RAID', 1), -(CONV('0700',16,10), 'WINDOWS', 1), -(CONV('0C01',16,10), 'WIN-RESERV', 1), -(CONV('2700',16,10), 'WIN-RECOV', 1), -(CONV('7F00',16,10), 'CHROMEOS-KRN', 1), -(CONV('7F01',16,10), 'CHROMEOS', 1), -(CONV('7F02',16,10), 'CHROMEOS-RESERV', 1), -(CONV('8200',16,10), 'LINUX-SWAP', 0), -(CONV('8300',16,10), 'LINUX', 1), -(CONV('8301',16,10), 'LINUX-RESERV', 1), -(CONV('8302',16,10), 'LINUX', 1), -(CONV('8E00',16,10), 'LINUX-LVM', 1), -(CONV('A500',16,10), 'FREEBSD-DISK', 0), -(CONV('A501',16,10), 'FREEBSD-BOOT', 1), -(CONV('A502',16,10), 'FREEBSD-SWAP', 0), -(CONV('A503',16,10), 'FREEBSD', 1), -(CONV('A504',16,10), 'FREEBSD', 1), -(CONV('A901',16,10), 'NETBSD-SWAP', 0), -(CONV('A902',16,10), 'NETBSD', 1), -(CONV('A903',16,10), 'NETBSD', 1), -(CONV('A904',16,10), 'NETBSD', 1), -(CONV('A905',16,10), 'NETBSD', 1), -(CONV('A906',16,10), 'NETBSD-RAID', 1), -(CONV('AB00',16,10), 'HFS-BOOT', 1), -(CONV('AF00',16,10), 'HFS', 1), -(CONV('AF01',16,10), 'HFS-RAID', 1), -(CONV('AF02',16,10), 'HFS-RAID', 1), -(CONV('BE00',16,10), 'SOLARIS-BOOT', 1), -(CONV('BF00',16,10), 'SOLARIS', 1), -(CONV('BF01',16,10), 'SOLARIS', 1), -(CONV('BF02',16,10), 'SOLARIS-SWAP', 0), -(CONV('BF03',16,10), 'SOLARIS-DISK', 1), -(CONV('BF04',16,10), 'SOLARIS', 1), -(CONV('BF05',16,10), 'SOLARIS', 1), -(CONV('CA00',16,10), 'CACHE', 0), -(CONV('EF00',16,10), 'EFI', 1), -(CONV('EF01',16,10), 'MBR', 0), -(CONV('EF02',16,10), 'BIOS-BOOT', 0), -(CONV('FB00',16,10), 'VMFS', 1), -(CONV('FB01',16,10), 'VMFS-RESERV', 1), -(CONV('FB02',16,10), 'VMFS-KRN', 1), -(CONV('FD00',16,10), 'LINUX-RAID', 1), -(CONV('FFFF',16,10), 'UNKNOWN', 1), -(CONV('10000',16,10), 'LVM-LV', 1), -(CONV('10010',16,10), 'ZFS-VOL', 1); - - --- -------------------------------------------------------- - --- -- Estructura de tabla para la tabla `universidades` -- diff --git a/admin/Interface/getConfiguration b/admin/Interface/getConfiguration index ddfc3821..c5046d19 100755 --- a/admin/Interface/getConfiguration +++ b/admin/Interface/getConfiguration @@ -16,17 +16,14 @@ disks=$(ogDiskToDev | wc -w) for ((dsk=1; dsk<=$disks; dsk++)); do particiones=$(ogGetPartitionsNumber $dsk) particiones=${particiones:-0} - # Tipo de tabla de particiones: 1=MSDOS, 2=GPT + # Tipo de tabla de particiones ptt=$(ogGetPartitionTableType $dsk) - case "$ptt" in - MSDOS) ptt=1 ;; - GPT) ptt=2 ;; - LVM) ptt=3 ;; - ZPOOL) ptt=4 ;; - *) ptt=0 ;; - esac + ptt=$(jq -r ".partitiontables[] | select(.type==\"$ptt\").id" $ENGINECFG 2>/dev/null) + ptt=${ptt:-"0"} + # Tipo de disco + dst=$(ogGetDiskType $(ogDiskToDev $dsk) 2>/dev/null) # Información de disco (partición 0) - cfg="$cfg$dsk:0:$ptt:::$(ogGetDiskSize $dsk):0;" + cfg="$cfg$dsk:0:$ptt:$dst::$(ogGetDiskSize $dsk):0;" for ((par=1;par<=$particiones;par++)); do # Código del identificador de tipo de partición cod=$(ogGetPartitionId $dsk $par 2>/dev/null) diff --git a/admin/WebConsole/includes/ConfiguracionesParticiones.php b/admin/WebConsole/includes/ConfiguracionesParticiones.php index 9cbd6fcf..963e1d08 100644 --- a/admin/WebConsole/includes/ConfiguracionesParticiones.php +++ b/admin/WebConsole/includes/ConfiguracionesParticiones.php @@ -1,8 +1,48 @@ <?php +define("ENGINEJSON", __DIR__ . "/../../client/etc/engine.json"); include_once("pintaParticiones.php"); +/** + * Busca en la configuración JSON los datos de partición para el código hexadecimal correspondiente. + * @param object $json datos JSON de configuración + * @param string $code código hexadecimal de partición + * @return array tipo de partición (string) e indicador de clonable (bool) + */ +function getPartitionData($json, $code) { + if (isset($json->partitiontables)) { + foreach ($json->partitiontables as $tab) { + if (isset($tab->partitions)) { + foreach ($tab->partitions as $par) { + if (hexdec($par->id) == $code) { + return [$par->type, $par->clonable]; + } + } + } + } + } + return [$partcode, true]; +} + +/** + * Busca en la configuración JSON los datos de tabla de particiones para el código correspondiente. + * @param object $json datos JSON de configuración + * @param string $code código de tabla de particiones + * @return string tipo de tabla de particiones + */ +function getParttableData($json, $code) { + if (isset($json->partitiontables)) { + foreach ($json->partitiontables as $tab) { + if (hexdec($tab->id) == $code) { + return $tab->type; + } + } + return ""; +} + /*________________________________________________________________________________________________________ - UHU - 2013/05/14 - Se añade la clave número de disco + UHU - 2013/05/14 - Se añade la clave número de disco + Ramón - 2018/03/09 - Usar fichero de configuración JSON para datos estáticos + La clave de configuración está formada por una serie de valores separados por ";" Ejemplo:1;1;7;30000000;3;3;0;11 @@ -57,7 +97,6 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) global $AMBITO_AULAS; global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; - global $msk_sysFi; global $msk_nombreSO; global $msk_tamano; @@ -65,6 +104,9 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) global $msk_perfil; global $msk_cache; + // Cargar datos JSON de configuración. + $json=json_decode(file_get_contents(ENGINEJSON)); + // Comprobar modos SQL para hacer que la consulta sea compatible. $cmd->texto="SELECT @@sql_mode AS mode"; $cmd->ejecutar(); @@ -95,8 +137,6 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) ANY_VALUE(ordenadores_particiones.numdisk) AS numdisk, ANY_VALUE(ordenadores_particiones.numpar) AS numpar, ANY_VALUE(ordenadores_particiones.codpar) AS codpar, - IFNULL (ANY_VALUE(tipospar.tipopar), ANY_VALUE(ordenadores_particiones.codpar)) AS tipopar, - ANY_VALUE(tipospar.clonable) AS clonable, ANY_VALUE(ordenadores_particiones.tamano) AS tamano, ANY_VALUE(ordenadores_particiones.uso) AS uso, ANY_VALUE(sistemasficheros.descripcion) AS sistemafichero, @@ -113,7 +153,6 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) FROM ordenadores INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso - LEFT OUTER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero"; @@ -133,7 +172,7 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) } if($swr) // Si se trata de restauración no se tiene en cuenta las partciones no clonables - $cmd->texto.=" AND tipospar.clonable=1 AND ordenadores_particiones.numpar>0 "; + $cmd->texto.=" AND ordenadores_particiones.numpar>0 "; $cmd->texto.=" GROUP BY configuracion"; // Comprobar compatiblidad de cláusula GROUP BY. @@ -145,13 +184,26 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) if (!$rs->Abrir()) return(false); // Error al abrir recordset $rs->Primero(); $idx=0; - while (!$rs->EOF){ + while (!$rs->EOF) { + $numpar=$rs->campos["numpar"]; + $codpar=$rs->campos["codpar"]; + if ($numpar == 0) { + // Tipo de tabla de particiones. + $tipopar = getParttableData($json, $codpar); + } else { + // Saltar si no es clonable en restauración. + list($tipopar, $clonable) = getPartitionData($json, $codpar); + if ($swr and $clonable == false) { + continue; + } + } + // Leer datos. $tbKeys[$idx]["cfg"]=$rs->campos["configuracion"]; $tbKeys[$idx]["numdisk"]=$rs->campos["numdisk"]; $tbKeys[$idx]["numpar"]=$rs->campos["numpar"]; - $tbKeys[$idx]["codpar"]=$rs->campos["codpar"]; - $tbKeys[$idx]["tipopar"]=$rs->campos["tipopar"]; - $tbKeys[$idx]["clonable"]=$rs->campos["clonable"]; + $tbKeys[$idx]["codpar"]=$codpar; + $tbKeys[$idx]["tipopar"]=$tipopar; + $tbKeys[$idx]["clonable"]=$clonable; $tbKeys[$idx]["tamano"]=$rs->campos["tamano"]; $tbKeys[$idx]["uso"]=$rs->campos["uso"]; $tbKeys[$idx]["sistemafichero"]=$rs->campos["sistemafichero"]; @@ -243,7 +295,6 @@ function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr,$pintaPar FROM ordenadores INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso - LEFT JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero"; @@ -261,7 +312,7 @@ function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr,$pintaPar } if ($swr) // Si se trata de restauración no se tiene en cuenta las particiones no clonables - $cmd->texto.=" AND tipospar.clonable=1 AND ordenadores_particiones.numpar>0"; + $cmd->texto.=" AND ordenadores_particiones.numpar>0"; $cmd->texto.=" ORDER BY ordenadores_particiones.idordenador, ordenadores_particiones.numdisk, ordenadores_particiones.numpar) AS temp1 GROUP BY temp1.idordenador) AS temp2 @@ -833,5 +884,3 @@ function tomaCache($numpar,$ordenadores,$numdisk = 1) } } } - - diff --git a/admin/WebConsole/includes/pintaParticiones.php b/admin/WebConsole/includes/pintaParticiones.php index 3db46818..5b43a54c 100644 --- a/admin/WebConsole/includes/pintaParticiones.php +++ b/admin/WebConsole/includes/pintaParticiones.php @@ -81,17 +81,7 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) if (empty ($disksize)) { $disksize = '<em>'.$TbMsg["VARIABLE"].'</em>'; } - switch ($tbKeys[$k]["codpar"]) { - case 1: $disktable[$tbKeys[$k]["numdisk"]] = "MSDOS"; - break; - case 2: $disktable[$tbKeys[$k]["numdisk"]] = "GPT"; - break; - case 3: $disktable[$tbKeys[$k]["numdisk"]] = "LVM"; - break; - case 4: $disktable[$tbKeys[$k]["numdisk"]] = "ZPOOL"; - break; - default: $disktable[$tbKeys[$k]["numdisk"]] = ""; - } + $disktable[$tbKeys[$k]["numdisk"]] = $tbKeys[$k]["tipopar"]; } else { // Información de partición (numpart>0) echo'<tr height="16">'.chr(13); |