summaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
authorIrina Gómez <irinagomez@us.es>2020-06-22 14:26:24 +0200
committerIrina Gómez <irinagomez@us.es>2020-06-22 14:26:24 +0200
commiteabb7bdb6699201db39fee3049e0bb7dcce94ab4 (patch)
tree21418b1b929f66c45a730c93170d01471791a017 /admin
parent31d6bf3bc536bf7a66f9824c020e189797f83177 (diff)
#894 Console 'Restore Image' Command: Supports disk image.disk-image
The form allows you to select the disk image to restore. The interface script checks image type, disk or partition, and uses the appropriate script.
Diffstat (limited to 'admin')
-rwxr-xr-xadmin/Interface/RestaurarImagen9
-rw-r--r--admin/WebConsole/comandos/RestaurarImagen.php54
-rw-r--r--admin/WebConsole/comandos/jscripts/RestaurarImagen.js6
-rw-r--r--admin/WebConsole/includes/pintaParticiones.php93
4 files changed, 127 insertions, 35 deletions
diff --git a/admin/Interface/RestaurarImagen b/admin/Interface/RestaurarImagen
index 6f9ae244..58b418ed 100755
--- a/admin/Interface/RestaurarImagen
+++ b/admin/Interface/RestaurarImagen
@@ -8,8 +8,15 @@
# $4 Dirección IP del repositorio
# $5 Protocolo UNICAST MULTICAST TORRENT
# $6 Opciones del protocolo
+#@version 1.2 - Soporta imágenes de disco.
+#@author Irina Gomez, ETSII Universidad de Sevilla.
+#@date 2020/06/22
#_______________________________________________________________________________________________________________________________
# Llamar al script de despliegue "deployImage".
-deployImage "$4" "$3" "$1" "$2" "$5" "$6" "$7" "$8" || exit $?
+if [ $2 -eq 0 ]; then
+ deployDiskImage "$4" "$3" "$1" "$5" "$6" "$7" "$8" || exit $?
+else
+ deployImage "$4" "$3" "$1" "$2" "$5" "$6" "$7" "$8" || exit $?
+fi
diff --git a/admin/WebConsole/comandos/RestaurarImagen.php b/admin/WebConsole/comandos/RestaurarImagen.php
index 21fdda46..21c5bf77 100644
--- a/admin/WebConsole/comandos/RestaurarImagen.php
+++ b/admin/WebConsole/comandos/RestaurarImagen.php
@@ -11,6 +11,9 @@
// HTMLSELECT_imagenes: Imagenes de todos los repositorios de la UO - Cambia parametro idordenadores por idambito
// autor: Irina Gomez, Universidad de Sevilla
// fecha 2015-06-17
+// Version 1.2: Soporta imágenes de disco. Nueva función HTMLSELECT_imagenes_disco
+// Autora: Irina Gomez, ETSII Universidad de Sevilla
+// Fecha: 2020-06-22
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../clases/AdoPhp.php");
@@ -201,6 +204,57 @@ function HTMLSELECT_imagenes($cmd,$idimagen,$numpar,$codpar,$icp,$sw,$idambito,$
return($SelectHtml);
}
/*________________________________________________________________________________________________________
+ Crea la etiqueta html <SELECT> de las imágenes de disco
+________________________________________________________________________________________________________*/
+function HTMLSELECT_imagenes_disco($cmd,$idambito,$ambito)
+{
+ global $IMAGENES_DISCO;
+
+ $SelectHtml="";
+ $cmd->texto="SELECT *,repositorios.ip as iprepositorio, repositorios.nombrerepositorio as nombrerepo FROM imagenes
+ INNER JOIN repositorios ON repositorios.idrepositorio=imagenes.idrepositorio";
+
+ $cmd->texto.=" AND imagenes.idrepositorio>0"; // La imagene debe existir en el repositorio.
+ $cmd->texto.=" AND imagenes.tipo=".$IMAGENES_DISCO;
+
+ // 1.1 Imágenes de todos los repositorios de la UO.
+ switch ($ambito) {
+ case 16:
+ // ambito ordenador
+ $selectrepo='select repositorios.idrepositorio from repositorios INNER JOIN aulas INNER JOIN ordenadores where repositorios.idcentro=aulas.idcentro AND aulas.idaula=ordenadores.idaula AND idordenador='.$idambito;
+ break;
+ case 8:
+ // ambito grupo ordenadores
+ $selectrepo='select idrepositorio from repositorios INNER JOIN aulas INNER JOIN gruposordenadores where repositorios.idcentro=aulas.idcentro AND aulas.idaula=gruposordenadores.idaula AND idgrupo='.$idambito;
+ break;
+ case 4:
+ // ambito aulas
+ $selectrepo='select idrepositorio from repositorios INNER JOIN aulas where repositorios.idcentro=aulas.idcentro AND idaula='.$idambito;
+ break;
+ }
+ $cmd->texto.=" AND repositorios.idrepositorio IN (".$selectrepo.") ORDER BY imagenes.descripcion";
+
+ $rs=new Recordset;
+ $rs->Comando=&$cmd;
+ $SelectHtml.= '<SELECT class="formulariodatos" id="despleimagen_" style="WIDTH:220">';
+ $SelectHtml.= ' <OPTION value="0"></OPTION>';
+
+ if ($rs->Abrir()){
+ $rs->Primero();
+ while (!$rs->EOF){
+ $SelectHtml.='<OPTION value="'.$rs->campos["idimagen"]."_".$rs->campos["nombreca"]."_".$rs->campos["iprepositorio"]."_".$rs->campos["idperfilsoft"].'"';
+ $SelectHtml.='>';
+ $SelectHtml.= $rs->campos["descripcion"].' ('.$rs->campos["nombrerepo"].') </OPTION>';
+
+ $rs->Siguiente();
+ }
+ $rs->Cerrar();
+ }
+ $SelectHtml.= '</SELECT>';
+ return($SelectHtml);
+}
+
+/*________________________________________________________________________________________________________
Crea la etiqueta html <SELECT> de los repositorios
________________________________________________________________________________________________________*/
function HTMLSELECT_repositorios($cmd,$idcentro,$idrepositorio,$particion){
diff --git a/admin/WebConsole/comandos/jscripts/RestaurarImagen.js b/admin/WebConsole/comandos/jscripts/RestaurarImagen.js
index 36705236..fb5785d8 100644
--- a/admin/WebConsole/comandos/jscripts/RestaurarImagen.js
+++ b/admin/WebConsole/comandos/jscripts/RestaurarImagen.js
@@ -31,7 +31,7 @@
var protoclonacion=document.getElementById("protoclonacion_"+idradio);
if(despleimagenizda.selectedIndex>0) despleimagen=despleimagenizda;
- if(despleimagendrcha.selectedIndex>0) despleimagen=despleimagendrcha;
+ if (!!despleimagendrcha && despleimagendrcha.selectedIndex>0) despleimagen=despleimagendrcha;
var imgcanrepo=despleimagen.value.split("_");
atributos+="idi="+imgcanrepo[0]+RC; // Identificador de la imagen
atributos+="nci="+imgcanrepo[1]+RC; // Nombre canónico
@@ -94,9 +94,9 @@
var idradio=ochecks[i].id; // Toma idemtificador del desplegable de imagenes
var despleimagenizda=document.getElementById("despleimagen_"+idradio+"_1"); // Desplegable izda.
var despleimagendcha=document.getElementById("despleimagen_"+idradio+"_0"); // Desplegable derecha.
-
+
var p1=despleimagenizda.selectedIndex; // Toma índice seleccionado
- var p2=despleimagendcha.selectedIndex; // Toma índice seleccionado
+ var p2=(!!despleimagendcha) ? despleimagendcha.selectedIndex : 0; // Toma índice seleccionado
if (p1===0 && p2===0){
alert(TbMsg[0]);
diff --git a/admin/WebConsole/includes/pintaParticiones.php b/admin/WebConsole/includes/pintaParticiones.php
index 3db46818..f49d3679 100644
--- a/admin/WebConsole/includes/pintaParticiones.php
+++ b/admin/WebConsole/includes/pintaParticiones.php
@@ -210,6 +210,9 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc)
// 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)
{
@@ -221,9 +224,37 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c
// Separamos las configuraciones segun el disco al que pertenezcan
$diskConfigs = splitConfigurationsByDisk($configuraciones);
- $columns=10;
+ // 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 '<TR>';
- echo '<TH align=center>&nbsp;&nbsp;</TH>';
echo '<th align="center">&nbsp;'.$TbMsg["DISK"].'&nbsp;</th>'; // Número de disco
echo '<TH align=center>&nbsp;'.$TbMsg["PARTITION"].'&nbsp;</TH>';
echo '<th align="center">&nbsp;'.$TbMsg["PARTITION_TYPE"].'&nbsp;</th>'; // Tipo de partición
@@ -235,27 +266,37 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c
echo '<TH align=center>&nbsp;'.$TbMsg["RESTORE_METHOD"].'&nbsp;</TH>';
echo '</TR>';
-
// Recorremos todas las configuraciones encontradas para cada disco
-
foreach($diskConfigs as $disk => $diskConfig){
$disk = (int)$disk;
- echo'<tr height="16">'.chr(13);
- echo '<td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;">&nbsp;'.$TbMsg["DISK"].'&nbsp;'.$disk.'</td>'.chr(13);
-
$auxCfg=explode("@",$diskConfig); // Crea lista de particiones
for($i=0;$i<sizeof($auxCfg);$i++){
$auxKey=explode(";",$auxCfg[$i]); // Toma clave de configuracion
// Para particiones EFI desabilitamos el selector
$disabled='';
+
for($k=0;$k<$conKeys;$k++){ // Busca los literales para las claves de esa partición
if($tbKeys[$k]["cfg"]==$auxCfg[$i]){ // Claves encontradas
- if($tbKeys[$k]["numpar"]!=0){ // No es info. del disco (part. 0)
+ if($tbKeys[$k]["numpar"]==0){ // Info. del disco (part. 0)
+
+ echo'<tr height="16">'.chr(13);
+ echo '<td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;">&nbsp;';
+ $icp=$cc."_".$tbKeys[$k]["numdisk"]."_0"; // Identificador de la configuración-partición
+ echo '<input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numdisk"].";".$tbKeys[$k]["numpar"].' '.$disabled.'>'.chr(13);
+ echo $TbMsg["DISK"].'&nbsp;'.$disk.chr(13);
+ echo '<DIV style="float:right;">'.$TbMsg["IMAGE_REPOSITORY"]." ".str_replace("despleimagen_","despleimagen_".$icp."_1",$select_imagenes).' </DIV> '.chr(13);
+ echo '</td>'.chr(13);
+ echo '<TD style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;">'.str_replace("protoclonacion_","protoclonacion_".$icp,$select_metodos).'</TD>'.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 '<TR>'.chr(13);
- echo '<TD align=center>&nbsp;&nbsp;</TD>';
$icp=$cc."_".$tbKeys[$k]["numdisk"]."_".$tbKeys[$k]["numpar"]; // Identificador de la configuración-partición
echo '<TD ><input type=radio idcfg="'.$cc.'" id="'.$icp.'" name="particion" value='.$tbKeys[$k]["numdisk"].";".$tbKeys[$k]["numpar"].' '.$disabled.'></TD>'.chr(13);
echo '<TD align=center>&nbsp;'.$tbKeys[$k]["numpar"].'&nbsp;</TD>'.chr(13);
@@ -264,28 +305,11 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c
echo'<TD align=center>&nbsp;'.tomaSistemasFicheros($tbKeys[$k]["numpar"],$idordenadores,false,$tbKeys[$k]["numdisk"]).'&nbsp;</TD>'.chr(13);
echo'<TD align=center>&nbsp;'.tomaTamano($tbKeys[$k]["numpar"],$idordenadores,$tbKeys[$k]["numdisk"]).'&nbsp;</TD>'.chr(13);
if ($tbKeys[$k]["tipopar"] == 'EFI') {
- echo "<TD></TD>\n<TD></TD>\n<TD></TD>\n";
+ echo "<TD></TD><TD></TD><TD></TD>".chr(13);
} else {
- echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idambito,$ambito).'</TD>';
- echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,false,$idambito,$ambito).'</TD>';
-
- //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";
- }
- echo '<TD>'.HTMLCTESELECT($metodos,"protoclonacion_".$icp,"estilodesple","",$TBmetodos[$idxc],100).'</TD>';
+ echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,true,$idambito,$ambito).'</TD>'.chr(13);
+ echo '<TD>'.HTMLSELECT_imagenes($cmd,$tbKeys[$k]["idimagen"],$tbKeys[$k]["numpar"],$tbKeys[$k]["codpar"],$icp,false,$idambito,$ambito).'</TD>'.chr(13);
+ echo '<TD>'.HTMLCTESELECT($metodos,"protoclonacion_".$icp,"estilodesple","",$TBmetodos[$idxc],100).'</TD>'.chr(13);
}
echo '</TR>'.chr(13);
}
@@ -293,8 +317,15 @@ function pintaParticionesRestaurarImagen($cmd,$configuraciones,$idordenadores,$c
}
}
}
+ echo '<TR>';
+ echo '<TD></TD>';
+ echo '<TD align=center>&nbsp;'.$diskcodpar.'&nbsp;</TD>';
+ echo '<TD></TD><TD></TD><TD></TD>';
+ echo '<TD align=center><strong>&nbsp;'.$disksize.'&nbsp;</strong></TD>';
+ echo '<TD></TD><TD></TD><TD></TD>';
+ echo '</TR>'.chr(13);
}
- echo '<TR><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF; height:5px;">&nbsp;</TD></TR>';
+ echo '<TR><TD colspan='.$columns.' style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #FFFFFF; height:5px;">&nbsp;</TD></TR>'.chr(13);
}
/*________________________________________________________________________________________________________