summaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
authorRamón M. Gómez <ramongomez@us.es>2018-05-17 09:41:27 +0200
committerRamón M. Gómez <ramongomez@us.es>2019-12-12 14:05:00 +0100
commit2be29864f8d77fa83288c83e7aa0542210834968 (patch)
tree9ecf0730355a3a7e32a9661f7fc69ac3dc979295 /admin
parent0fe16f0ab321778236cf8883015b9517a9442577 (diff)
#812: integrar r5653 de SVN en rama {{{configfile}}} de Git.
Diffstat (limited to 'admin')
-rw-r--r--admin/Database/ogAdmBD.sql93
-rwxr-xr-xadmin/Interface/getConfiguration15
-rw-r--r--admin/WebConsole/includes/ConfiguracionesParticiones.php77
-rw-r--r--admin/WebConsole/includes/pintaParticiones.php12
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);