1;0;1@1;1;7@1;2;131 y * para el disco 2 -> 2;0;1@2;1;7 */ function splitConfigurationsByDisk($configuraciones){ // Recorremos las configuraciones para separalas segun el disco al que pertenezcan $diskConfigs = array(); $configs = explode("@",$configuraciones); foreach($configs as $config){ $parts = explode(";",$config); if(!isset($diskConfigs[$parts[0]])){ $diskConfigs[$parts[0]] = "@"; } else if($diskConfigs[$parts[0]] != ""){ $diskConfigs[$parts[0]] .= "@"; } // Concatenamos la configuracion en el disco que corresponda $diskConfigs[$parts[0]] .= $config; } return $diskConfigs; } // ************************************************************************************************************************************************* // UHU - 2013/15/14 - Se pintan los discos ademas de las particiones // Descripción: // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula // Parámetros: // $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato // sería una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 //________________________________________________________________________________________________________ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) { global $tbKeys; // Tabla contenedora de claves de configuración global $conKeys; // Contador de claves de configuración global $TbMsg; $disktable = array(); // Separamos las configuraciones segun el disco al que pertenezcan $diskConfigs = splitConfigurationsByDisk($configuraciones); $columns=9; echo ''; echo ' '.$TbMsg["DISK"].' '; // Número de disco echo ' '.$TbMsg["PARTITION"].' '; // Número de partición echo ' '.$TbMsg["PARTITION_TYPE"].' '; // Tipo de partición echo ' '.$TbMsg["FILESYSTEM_SHORT"].' '; // Sistema de ficheros echo ' '.$TbMsg["INST_SO"].' '; // Sistema Operativo Instalado echo ' '.$TbMsg["SIZE_KB"].' '; // Tamaño echo ' '.$TbMsg["IMAGE"].' '; // Imagen instalada echo ' '.$TbMsg["SOFT_PROFILE"].' '; // Perfil software echo ' '.$TbMsg["CACHE_CONTENT"].' '; echo ''; // Recorremos todas las configuraciones encontradas para cada disco $aviso=""; foreach($diskConfigs as $disk => $diskConfig){ $disk = (int)$disk; echo''.chr(13); echo ' '.$TbMsg["DISK"].' '.$disk.''.chr(13); $auxCfg=explode("@",$diskConfig); // Crea lista de particiones for($i=0;$i'; } 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"]] = ""; } } else { // Información de partición (numpart>0) echo''.chr(13); echo' '.chr(13); echo''.$tbKeys[$k]["numpar"].''.chr(13); if ($disktable[$tbKeys[$k]["numdisk"]] == "LVM" or $disktable[$tbKeys[$k]["numdisk"]] == "ZPOOL") { echo ''.chr(13); } else { if (is_numeric ($tbKeys[$k]["tipopar"])) { echo ''.sprintf("%02X",$tbKeys[$k]["tipopar"]).''.chr(13); } else { echo ''.$tbKeys[$k]["tipopar"].''.chr(13); } } $filesys=tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,false,$tbKeys[$k]["numdisk"]); echo' '.$filesys.' '.chr(13); echo ' '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); // Mostrar uso solo en clientes individuales. $uso=tomaUso($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]); if ($uso > 0 and strpos($idordenadores, ',') === false) { echo ' '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); } else { echo ' '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); } // Si es CACHE incluyo campo oculto con el tamaño if ($tbKeys[$k]["tipopar"]== "CACHE"){ echo "".chr(13); } echo' '.tomaImagenes($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); echo' '.tomaPerfiles($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); if ($filesys == "CACHE") { echo ' '; $campocache = preg_replace("/[\n|\r|\n\r]/i", '', tomaCache($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"])); $ima=explode(",",$campocache); $numero=1; for ($x=0;$x'.$TbMsg["CACHE_COMPLETE"].': '.$ima[$x].''; }else{ echo ''.$TbMsg["CACHE_FREESPACE"].': '.$ima[$x].''; } }elseif (! empty($ima[1])){ // Esto para la informacion de la imagen if (substr($ima[$x],-5)==".diff"){$info="F";}elseif(substr($ima[$x],-4)==".img"){$info="F";}else{$info="D";} // Esto para numerarla if(substr($ima[$x],-4)==".img" || substr($ima[$x],-5)==".diff" || substr($ima[$x],-4)=="") { echo '
('.$info.')  '.$numero++.'.-'.$ima[$x]; } elseif(preg_match("/.sum/",$ima[$x]) or preg_match("/.torrent/",$ima[$x]) or preg_match("/.full.sum/",$ima[$x])) { echo '
           '.$ima[$x]; }else{ echo '
('.$info.') '.$numero++.'.-'.$ima[$x].""; } } } echo ' '.chr(13); } else { if ($tbKeys[$k]["difimagen"] > 0 ) { echo' '.$tbKeys[$k]["fechadespliegue"].' (* '.$tbKeys[$k]["difimagen"].') '.chr(13); $aviso=$TbMsg["WARN_DIFFIMAGE"]; } else { echo' '.$tbKeys[$k]["fechadespliegue"].' '.chr(13); } } echo''.chr(13); } break; } } } // Mostrar información del disco, si se ha obtenido. if (!empty ($disksize)) { echo''.chr(13); echo' '.chr(13); echo' '.$disktable[$disk].' '.chr(13); echo''.chr(13); echo''.chr(13); echo''.chr(13); echo' '.(isset($disksize[$disk])?$disksize[$disk]:(''.$TbMsg["VARIABLE"].'')).' '.chr(13); // Creamos un campo oculto para guardar información sobre el disco y su tamaño separados por ; echo "\n"; echo''.chr(13); echo''.chr(13); echo''.chr(13); echo''.chr(13); } } if (!empty($aviso)) { echo ' * '.$aviso.' '."\n"; } echo ' '; } //________________________________________________________________________________________________________ // // Descripción: // (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula // Parámetros: // $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato // sería una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 // Devuelve: // El código html de la tabla // version 1.1: cliente con varios repositorios - HTMLSELECT_imagenes: cambia parametros idordenadores por idambito // autor: Irina Gomez, Universidad de Sevilla // fecha 2015-06-17 // version 1.2 - Permite crear imágenes de disco. // autor: Irina Gomez, Universidad de Sevilla // fecha 2020/06/22 //________________________________________________________________________________________________________ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito) { global $tbKeys; // Tabla contenedora de claves de configuración global $conKeys; // Contador de claves de configuración global $TbMsg; global $_SESSION; // Separamos las configuraciones segun el disco al que pertenezcan $diskConfigs = splitConfigurationsByDisk($configuraciones); // Clonación $metodos="UNICAST=UNICAST-CACHE".chr(13); $metodos.="UNICAST-DIRECT=UNICAST-DIRECT".chr(13); $metodos.="MULTICAST " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-CACHE".chr(13); $metodos.="MULTICAST-DIRECT " . mcast_syntax($cmd,$ambito,$idambito) . "=MULTICAST-DIRECT".chr(13); $metodos.="TORRENT " . torrent_syntax($cmd,$ambito,$idambito) . "=TORRENT-CACHE"; $TBmetodos["UNICAST-CACHE"]=1; $TBmetodos["UNICAST-DIRECT"]=2; $TBmetodos["MULTICAST-CACHE"]=3; $TBmetodos["MULTICAST-DIRECT"]=4; $TBmetodos["TORRENT-CACHE"]=5; $idxc=$_SESSION["protclonacion"]; if ($idxc == "UNICAST") { $idxc = "UNICAST-DIRECT"; } // Lista de selección de métodos $select_metodos= HTMLCTESELECT($metodos,"protoclonacion_","estilodesple","",$TBmetodos[$idxc],100); // Lista de selección de imágenes (igual para todos los discos) $select_imagenes=HTMLSELECT_imagenes_disco($cmd,$idambito,$ambito); // Tipos de tabla de particiones (índice codpar) $disktable[1]="MSDOS"; $disktable[2]="GPT"; $disktable[3]="LVM"; $disktable[4]="ZPOOL"; $columns=8; echo ''; echo ' '.$TbMsg["DISK"].' '; // Número de disco echo ' '.$TbMsg["PARTITION"].' '; echo ' '.$TbMsg["PARTITION_TYPE"].' '; // Tipo de partición echo ' '.$TbMsg["INST_SO"].' '; // Sistema Operativo Instalado echo ' '.$TbMsg["FILESYSTEM_SHORT"].' '; // Sistema de ficheros echo ' '.$TbMsg["SIZE_KB"].' '; // Tamaño echo ' '.$TbMsg["SAMESYSTEM_IMAGE"].' '; echo ' '.$TbMsg["DIFFERENTSYSTEM_IMAGE"].' '; echo ' '.$TbMsg["RESTORE_METHOD"].' '; echo ''; // Recorremos todas las configuraciones encontradas para cada disco foreach($diskConfigs as $disk => $diskConfig){ $disk = (int)$disk; $auxCfg=explode("@",$diskConfig); // Crea lista de particiones for($i=0;$i'.chr(13); echo ' '; $icp=$cc."_".$tbKeys[$k]["numdisk"]."_0"; // Identificador de la configuración-partición echo ''.chr(13); echo $TbMsg["DISK"].' '.$disk.chr(13); echo '
'.$TbMsg["IMAGE_REPOSITORY"]." ".str_replace("despleimagen_","despleimagen_".$icp."_1",$select_imagenes).'
'.chr(13); echo ''.chr(13); echo ''.str_replace("protoclonacion_","protoclonacion_".$icp,$select_metodos).''.chr(13); // Tipo de tabla de particiones y tamaño. $diskcodpar=isset($disktable[$tbKeys[$k]["codpar"]])? $disktable[$tbKeys[$k]["codpar"]] : ""; $disksize=tomaTamano('0',$idordenadores,$tbKeys[$k]["numdisk"]); } else { $swcc=$tbKeys[$k]["clonable"]; if($swcc){ if ($tbKeys[$k]["tipopar"] == 'EFI') $disabled='disabled'; echo ''.chr(13); $icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuración-partición echo ''.chr(13); echo ' '.$tbKeys[$k]["numpar"].' '.chr(13); echo ' '.$tbKeys[$k]["tipopar"].' '.chr(13); echo ' '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); echo' '.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,false,$tbKeys[$k]["numdisk"]).' '.chr(13); echo' '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); if ($tbKeys[$k]["tipopar"] == 'EFI') { echo "".chr(13); } else { echo ''.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idambito,$ambito).''.chr(13); echo ''.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,false,$idambito,$ambito).''.chr(13); echo ''.HTMLCTESELECT($metodos,"protoclonacion_".$icp,"estilodesple","",$TBmetodos[$idxc],100).''.chr(13); } echo ''.chr(13); } } } } } echo ''; echo ''; echo ' '.$diskcodpar.' '; echo ''; echo ' '.$disksize.' '; echo ''; echo ''.chr(13); } echo ' '.chr(13); } /*________________________________________________________________________________________________________ Descripción: (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, grupo de ordenadores o aula Parámetros: $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato sería una secuencia de cadenas del tipo "clave de configuración" separados por "@" Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 $idordenadores: cadena con los identificadores de los ordenadores que forman parte del bloque $cc: Identificador de la configuración Devuelve: El código html de la tabla ________________________________________________________________________________________________________*/ function pintaParticionesConfigurar($cmd,$configuraciones,$idordenadores,$cc) { global $tbKeys; // Tabla contenedora de claves de configuración global $conKeys; // Contador de claves de configuración global $TbMsg; $colums=7; echo ''; echo ' '.$TbMsg['REMOVE'].' '; echo ' '.$TbMsg['PARTITION'].' '; echo ' '.$TbMsg['PARTITION_TYPE'].' '; echo ' '.$TbMsg['FILESYSTEM'].' '; echo ' '.$TbMsg['SIZE_KB'].' '; echo ' '.$TbMsg['INSTALLED_OS'].' '; echo ' '.$TbMsg['REFORMAT'].' '; echo ''; $aviso=false; $auxCfg=explode("@",$configuraciones); // Crea lista de particiones for($i=0;$i0){ // Solo particiones (número>0) $icp=$cc."_".$k; // Identificador de la configuración-partición echo ''; echo ''; echo ''.HTMLSELECT_particiones($tbKeys[$k]["numpar"]).''; echo ''.HTMLSELECT_tipospar($cmd,$tbKeys[$k]["tipopar"]).''; $sf=tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,true); echo ''.HTMLSELECT_sistemasficheros($cmd,$sf).''; $tm=tomaTamano($tbKeys[$k]["numpar"],$idordenadores); echo ''; echo ''.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores).''; echo ''.opeFormatear().''; echo ''; } else { if ($tbKeys[$k]["codpar"]!=1) { // Aviso tabla no MSDOS. $aviso=true; } } } else { // Aviso: más de un disco. $aviso=true; } } } } // Marcar fin de zona de datos de la tabla. // Datos del disco $tm=tomaTamano(0,$idordenadores); echo ''. "\n\n\n".$TbMsg["DISK"]."". "\n\n '.(isset($tm)?$tm:("".$TbMsg["VARIABLE"].""))." ". "\n\n\n"; echo ' '.$TbMsg["WARN_DISKSIZE"].''; // Mostrar aviso: solo disco 1 con tabla MSDOS. if ($aviso) { echo ''.$TbMsg["CONFIG_NODISK1MSDOS"].''; } // Botones de añadir y confirmar. if (isset($tm)) { echo ''; echo '          '; } else { echo ''.$TbMsg["WARN_DIFFDISKSIZE"].''."\n"; } } /* // // Descripcián: // (Esta función es llamada por pintaConfiguraciones que está incluida en ConfiguracionesParticiones.php) // Crea una taba html con las especificaciones de particiones de un ambito ya sea ordenador, // grupo de ordenadores o aula // Parámetros: // $configuraciones: Cadena con las configuraciones de particioners del ámbito. El formato // sería una secuencia de cadenas del tipo "clave de configuración" separados por "@" // Ejemplo:1;7;30000000;3;3;0;@2;130;20000000;5;4;0;@3;131;1000000;0;0;0;0 // Devuelve: // El código html de la tabla //________________________________________________________________________________________________________ // // */ function pintaParticionesRestaurarImagenSincronizacion1($cmd,$configuraciones,$idordenadores,$cc,$ambito,$idambito) { global $tbKeys; // Tabla contenedora de claves de configuración global $conKeys; // Contador de claves de configuración global $TbMsg; global $_SESSION; // Separamos las configuraciones segun el disco al que pertenezcan $diskConfigs = splitConfigurationsByDisk($configuraciones); $columns=14; echo ''; echo '  '; echo ' '.$TbMsg["DISK"].' '; // Número de disco echo ' '.$TbMsg["PARTITION"].' '; echo ' '.$TbMsg["PARTITION_TYPE"].' '; // Tipo de partición echo ' '.$TbMsg["INST_SO"].' '; // Sistema Operativo Instalado echo ' '.$TbMsg["FILESYSTEM_SHORT"].' '; // Sistema de ficheros echo ' '.$TbMsg["SIZE_KB"].' '; // Tamaño echo ' '.$TbMsg[10].' '; echo ' '.$TbMsg[16].' '; echo ' '.$TbMsg["SYNC_METHOD"].' '; echo ' '.$TbMsg["SEND"].' '; echo '  W  '; echo '  E  '; echo '  C  '; echo ''; // Recorremos todas las configuraciones encontradas para cada disco foreach($diskConfigs as $disk => $diskConfig){ $disk = (int)$disk; echo''.chr(13); echo ' '.$TbMsg["DISK"].' '.$disk.''.chr(13); $auxCfg=explode("@",$diskConfig); // Crea lista de particiones for($i=0;$i'.chr(13); echo '  '; if($swcc){ $icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuración-partición echo ''.chr(13); echo ' '.$tbKeys[$k]["numpar"].' '.chr(13); echo ' '.$tbKeys[$k]["tipopar"].' '.chr(13); echo ' '.tomaNombresSO($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); echo' '.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,false,$tbKeys[$k]["numdisk"]).' '.chr(13); echo' '.tomaTamano($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).' '.chr(13); echo ''.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idordenadores,$ambito).''; $metodos="CACHE=".$TbMsg[13].chr(13); $metodos.="REPO=".$TbMsg[9]; echo ''.HTMLCTESELECT($metodos,"desplemet_".$icp,"estilodesple","",1,100).''; $metodos="SYNC0="." ".chr(13); $metodos.="SYNC1=".$TbMsg["SYNC1_DIR"].chr(13); $metodos.="SYNC2=".$TbMsg["SYNC2_FILE"]; echo ''.HTMLCTESELECT($metodos,"desplesync_".$icp,"estilodesple","",1,100).''; $metodos="UNICAST="."Unicast".chr(13); $metodos.="MULTICAST_". mcast_syntax($cmd,$ambito,$idambito) ."="."Multicast".chr(13); $metodos.="TORRENT_". torrent_syntax($cmd,$ambito,$idambito) ."="."Torrent".chr(13); $metodos.="RSYNC=Rsync"; echo ''.HTMLCTESELECT($metodos,"despletpt_".$icp,"estilodesple","",1,100).''; echo ''; echo ''; echo ''; } echo ''.chr(13); } } } } echo ' '; echo ''.$TbMsg["WARN_PROTOCOL"].''; }