diff options
-rwxr-xr-x | admin/Interface/CrearImagen | 14 | ||||
-rw-r--r-- | admin/WebConsole/comandos/CrearImagen.php | 45 | ||||
-rw-r--r-- | admin/WebConsole/comandos/jscripts/CrearImagen.js | 6 | ||||
-rw-r--r-- | admin/WebConsole/includes/pintaTablaConfiguraciones.php | 13 | ||||
-rwxr-xr-x | client/shared/scripts/createImage | 35 |
5 files changed, 50 insertions, 63 deletions
diff --git a/admin/Interface/CrearImagen b/admin/Interface/CrearImagen index c3fa9b45..d7d1edc3 100755 --- a/admin/Interface/CrearImagen +++ b/admin/Interface/CrearImagen @@ -53,9 +53,14 @@ fi # Valor por defecto para el repositorio. REPO=${4:-"REPO"} -[ "$REPO" == "$(ogGetRepoIp)" ] && REPO="REPO" [ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE" -[ "$REPO" == "CACHE" ] && REPO="CACHE" +# Si es una ip y es distinta a la del recurso samba cambiamos de REPO. +ogCheckIpAddress $REPO +if [ $? == 0 -o $REPO == "REPO" ] ; then + # Si falla el cambio -> salimos con error repositorio no valido + ogChangeRepo $REPO || exit $(ogRaiseError $OG_ERR_NOTFOUND '$REPO'; echo $?) + REPO="REPO" +fi # Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura, if [ "$REPO" == "REPO" -a "$boot" != "admin" ] @@ -65,11 +70,12 @@ then [ $RETVAL -gt 0 ] && exit $RETVAL fi +ogEcho createImage "$1" "$2" "$4" /"$3" # Si existe, ejecuta script personalizado "createImageCustom"; si no, llama al genérico "createImage". if which createImageCustom &>/dev/null; then - createImageCustom "$1" "$2" "$REPO" /"$3" &>> $OGLOGCOMMAND + createImageCustom "$1" "$2" "$4" /"$3" &>> $OGLOGCOMMAND else - createImage "$1" "$2" "$REPO" /"$3" &>> $OGLOGCOMMAND + createImage "$1" "$2" "$4" /"$3" &>> $OGLOGCOMMAND fi RETVAL=$? diff --git a/admin/WebConsole/comandos/CrearImagen.php b/admin/WebConsole/comandos/CrearImagen.php index 8e741bac..a4c5568a 100644 --- a/admin/WebConsole/comandos/CrearImagen.php +++ b/admin/WebConsole/comandos/CrearImagen.php @@ -33,8 +33,8 @@ if (!$resul){ //________________________________________________________________________________________________________ ?> <HTML> -<TITLE>Administración web de aulas</TITLE> <HEAD> +<TITLE>Administración web de aulas</TITLE> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="../estilos.css"> <SCRIPT language="javascript" src="./jscripts/CrearImagen.js"></SCRIPT> @@ -108,11 +108,15 @@ function HTMLSELECT_imagenes($cmd,$idrepositorio,$idperfilsoft,$disk,$particion, { global $IMAGENES_MONOLITICAS; $SelectHtml=""; - $cmd->texto="SELECT imagenes.idimagen,imagenes.descripcion,imagenes.nombreca, - imagenes.idperfilsoft, repositorios.nombrerepositorio - FROM imagenes INNER JOIN repositorios on imagenes.idrepositorio = repositorios.idrepositorio - WHERE imagenes.tipo=".$IMAGENES_MONOLITICAS." - AND imagenes.idrepositorio=".$idrepositorio ." OR repositorios.ip='" .$masterip ."'"; + $cmd->texto="SELECT DISTINCT imagenes.idimagen,imagenes.descripcion,imagenes.nombreca, + imagenes.idperfilsoft, repositorios.nombrerepositorio, repositorios.ip + FROM imagenes INNER JOIN repositorios ON imagenes.idrepositorio = repositorios.idrepositorio + INNER JOIN aulas ON aulas.idcentro = repositorios.idcentro + INNER JOIN ordenadores ON ordenadores.idaula = aulas.idaula + WHERE imagenes.tipo=".$IMAGENES_MONOLITICAS." + AND ordenadores.ip='".$masterip."' OR repositorios.ip='" .$masterip ."' + ORDER BY imagenes.descripcion"; + $rs=new Recordset; $rs->Comando=&$cmd; $SelectHtml.= '<SELECT class="formulariodatos" id="despleimagen_'.$disk."_".$particion.'" style="WIDTH: 300">'; @@ -120,7 +124,7 @@ function HTMLSELECT_imagenes($cmd,$idrepositorio,$idperfilsoft,$disk,$particion, if ($rs->Abrir()){ $rs->Primero(); while (!$rs->EOF){ - $SelectHtml.='<OPTION value="'.$rs->campos["idimagen"]."_".$rs->campos["nombreca"]."_".$rs->campos["nombreca"].'"'; + $SelectHtml.='<OPTION value="'.$rs->campos["idimagen"]."_".$rs->campos["nombreca"]."_".$rs->campos["ip"].'"'; if($idperfilsoft==$rs->campos["idperfilsoft"]) $SelectHtml.=" selected "; $SelectHtml.='>'; $SelectHtml.= $rs->campos["descripcion"]. ' -- '. $rs->campos['nombrerepositorio'] . '</OPTION>'; @@ -131,31 +135,4 @@ function HTMLSELECT_imagenes($cmd,$idrepositorio,$idperfilsoft,$disk,$particion, $SelectHtml.= '</SELECT>'; return($SelectHtml); } - -/*________________________________________________________________________________________________________ - Crea la etiqueta html <SELECT> de los repositorios - UHU - 2013/05/17 - Ahora las imagenes pueden ser en cualquier disco -________________________________________________________________________________________________________*/ -function HTMLSELECT_repositorios($cmd,$idcentro,$idrepositorio,$disk,$particion,$masterip){ - $SelectHtml=""; - $rs=new Recordset; - $cmd->texto='SELECT idrepositorio, nombrerepositorio, ip FROM repositorios WHERE idrepositorio="'.$idrepositorio .'" OR ip="'.$masterip.'"'; - $rs->Comando=&$cmd; - - if (!$rs->Abrir()) return($SelectHtml); // Error al abrir recordset - $SelectHtml.= '<SELECT class="formulariodatos" id="desplerepositorios_'.$disk."_".$particion.'" style="WIDTH: 250">'; - $rs->Primero(); - while (!$rs->EOF){ - $SelectHtml.='<OPTION value="'.$rs->campos["ip"].'"'; - if($rs->campos["idrepositorio"]==$idrepositorio) $SelectHtml.=" selected "; - $SelectHtml.='>'; - $SelectHtml.= $rs->campos["nombrerepositorio"]; - $SelectHtml.='</OPTION>'; - $rs->Siguiente(); - } - $SelectHtml.= '</SELECT>'; - $rs->Cerrar(); - return($SelectHtml); -} - ?> diff --git a/admin/WebConsole/comandos/jscripts/CrearImagen.js b/admin/WebConsole/comandos/jscripts/CrearImagen.js index 00283885..1e9f4ef0 100644 --- a/admin/WebConsole/comandos/jscripts/CrearImagen.js +++ b/admin/WebConsole/comandos/jscripts/CrearImagen.js @@ -28,11 +28,9 @@ var despleimagen=document.getElementById("despleimagen_"+parcod[0]+"_"+parcod[1]); var imgcan=despleimagen.value.split("_"); atributos+="idi="+imgcan[0]+RC; // Identificador de la imagen - atributos+="nci="+imgcan[1]+RC; // Nonbre canónico + atributos+="nci="+imgcan[1]+RC; // Nombre canónico + atributos+="ipr="+imgcan[2]+RC; // Ip repositorio - var desplerepositorios=document.getElementById("desplerepositorios_"+parcod[0]+"_"+parcod[1]); - var idx=desplerepositorios.selectedIndex; - atributos+="ipr="+desplerepositorios.options[idx].value+RC; break; } } diff --git a/admin/WebConsole/includes/pintaTablaConfiguraciones.php b/admin/WebConsole/includes/pintaTablaConfiguraciones.php index 21c9c69b..27e6fac4 100644 --- a/admin/WebConsole/includes/pintaTablaConfiguraciones.php +++ b/admin/WebConsole/includes/pintaTablaConfiguraciones.php @@ -195,7 +195,6 @@ function tablaConfiguracionesCrearImagen($cmd,$idordenador,$idrepositorio) global $idcentro; global $TbMsg; $tablaHtml=""; - $rs=new Recordset; $cmd->texto="SELECT ordenadores.ip AS masterip,ordenadores_particiones.numdisk, ordenadores_particiones.numpar,ordenadores_particiones.codpar,ordenadores_particiones.tamano, ordenadores_particiones.idnombreso,nombresos.nombreso,tipospar.tipopar,tipospar.clonable, imagenes.nombreca,imagenes.descripcion as imagen,perfilessoft.idperfilsoft, @@ -208,20 +207,18 @@ function tablaConfiguracionesCrearImagen($cmd,$idordenador,$idrepositorio) LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero WHERE ordenadores.idordenador=".$idordenador." ORDER BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar"; - //echo $cmd->texto; - $rs->Comando=&$cmd; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml."</table>"); // Error al abrir recordset $rs->Primero(); $actualDisk = 0; - $columns = 6; + $columns = 5; while (!$rs->EOF){ if($actualDisk != $rs->campos["numdisk"]){ $actualDisk = $rs->campos["numdisk"]; - $tablaHtml.='<td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;"> <strong>'.$TbMsg["DISK"].' '.$actualDisk.'</strong></td>'.chr(13); + $tablaHtml.='<TR><td colspan="'.$columns.'" style="BORDER-TOP: #999999 1px solid;BACKGROUND-COLOR: #D4D0C8;"> <strong>'.$TbMsg["DISK"].' '.$actualDisk.'</strong></td></TR>'.chr(13); } $swcc=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]); @@ -236,9 +233,8 @@ function tablaConfiguracionesCrearImagen($cmd,$idordenador,$idrepositorio) $tablaHtml.='<TD align=center> '.'<span style="FONT-SIZE:10px; COLOR: red;" >'.$TbMsg[12].'</span></TD>'.chr(13); else $tablaHtml.='<TD> '.$rs->campos["nombreso"].' </TD>'.chr(13); + $tablaHtml.='<TD>'.HTMLSELECT_imagenes($cmd,$idrepositorio,$rs->campos["idperfilsoft"],$rs->campos["numdisk"],$rs->campos["numpar"],$rs->campos["masterip"]).'</TD>'; - $tablaHtml.='<TD>'.HTMLSELECT_repositorios($cmd,$idcentro,$idrepositorio,$rs->campos["numdisk"],$rs->campos["numpar"],$rs->campos["masterip"]).'</TD>'; - //$tablaHtml.='<TD> </TD>'; } $tablaHtml.='</TR>'.chr(13); $rs->Siguiente(); @@ -259,8 +255,7 @@ function tablaConfiguracionesCrearImagen($cmd,$idordenador,$idrepositorio) $inicioTabla.=' <TH align=center> '. $TbMsg["PARTITION"] .' </TH>'.chr(13); $inicioTabla.=' <TH align=center> '. $TbMsg["PARTITION_TYPE"] .' </TH>'.chr(13); $inicioTabla.=' <TH align=center> '. $TbMsg["SO_NAME"] .' </TH>'.chr(13); - $inicioTabla.=' <TH align=center> '. $TbMsg["IMAGE_TO_CREATE"] .' </TH>'.chr(13); - $inicioTabla.=' <TH align=center> '. $TbMsg["DESTINATION_REPOSITORY"] .' </TH>'.chr(13); + $inicioTabla.=' <TH align=center> '. $TbMsg["IMAGE_TO_CREATE"].' -- '.$TbMsg["DESTINATION_REPOSITORY"] .' </TH>'.chr(13); $inicioTabla.=' </TR>'.chr(13); $tablaHtml=$inicioTabla.$tablaHtml; diff --git a/client/shared/scripts/createImage b/client/shared/scripts/createImage index 7c6ed5bb..eabe5f11 100755 --- a/client/shared/scripts/createImage +++ b/client/shared/scripts/createImage @@ -55,6 +55,7 @@ TIME1=$SECONDS #IMGCOMP="lzop" IMGEXT=${IMGEXT:-"img"} #IMGREDUCE="TRUE" +REPO="${3^^}" # Clear temporary file used as log track by httpdlog # Limpia los ficheros temporales usados como log de seguimiento para httpdlog @@ -62,8 +63,18 @@ echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.t ogEcho log session "[1] $MSG_SCRIPTS_START $0 $*" +# Si es una ip y es igual a la del equipo restaura desde cache +[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE" +# Si es una ip y es distinta a la del recurso samba cambiamos de REPO. +ogCheckIpAddress $REPO +if [ $? == 0 -o $REPO == "REPO" ] ; then + # Si falla el cambio -> salimos con error repositorio no valido + ogChangeRepo $REPO || exit $(ogRaiseError $OG_ERR_NOTFOUND '$REPO'; echo $?) + REPO="REPO" +fi + # Si el repositorio es CACHE comprobamos que exista -if [ "${3^^}" == "CACHE" ]; then +if [ "$REPO" == "CACHE" ]; then ! ogFindCache >/dev/null && exit $(ogRaiseError $OG_ERR_NOTCACHE "CACHE "; echo $?) fi @@ -72,14 +83,14 @@ PART=$(ogDiskToDev "$1" "$2" 2>/dev/null) || exit $(ogRaiseError $OG_ERR_PARTITI #Comprobamos acceso de escritura. DIRTEMP=$(date +%Y%m%d-%H%M%S) -ogMakeDir $3 /$4$DIRTEMP 2>/dev/null || exit $(ogRaiseError $OG_ERR_NOTWRITE "$3"; echo $?) && ogDeleteTree $3 /$4$DIRTEMP +ogMakeDir $REPO /$4$DIRTEMP 2>/dev/null || exit $(ogRaiseError $OG_ERR_NOTWRITE "$REPO"; echo $?) && ogDeleteTree $REPO /$4$DIRTEMP -IMGDIR=$(ogGetParentPath "$3" "/$4") +IMGDIR=$(ogGetParentPath "$REPO" "/$4") # Si no existe, crear subdirectorio de la imagen. if [ $? != 0 ]; then - ogEcho log session "[5] $MSG_HELP_ogMakeDir \"$3 $(dirname "$4")." - ogMakeDir "$3" $(dirname "/$4") || exit $(ogRaiseError $OG_ERR_NOTWRITE "$3 /$4"; echo $?) - IMGDIR=$(ogGetParentPath "$3" "/$4") || exit $(ogRaiseError $OG_ERR_NOTWRITE "$3 /$4"; echo $?) + ogEcho log session "[5] $MSG_HELP_ogMakeDir \"$REPO $(dirname "$4")." + ogMakeDir "$REPO" $(dirname "/$4") || exit $(ogRaiseError $OG_ERR_NOTWRITE "$REPO /$4"; echo $?) + IMGDIR=$(ogGetParentPath "$REPO" "/$4") || exit $(ogRaiseError $OG_ERR_NOTWRITE "$REPO /$4"; echo $?) fi IMGFILE=$IMGDIR/$(basename "/$4").$IMGEXT @@ -97,10 +108,10 @@ echo " " > $OGLOGCOMMAND ogCleanOs $1 $2 #Comprobar espacio que requerira la imagen para ser almacenada -read SIZEDATA SIZEREQUIRED ISENOUGHSPACE <<< $(ogGetSizeParameters $1 $2 "$3") +read SIZEDATA SIZEREQUIRED ISENOUGHSPACE <<< $(ogGetSizeParameters $1 $2 "$REPO") ogEcho log session "[16] $PROG: $MSG_SCRIPTS_CREATE_SIZE $SIZEREQUIRED" -[ "$ISENOUGHSPACE" == "TRUE" ] || exit $(ogRaiseError session $OG_ERR_CACHESIZE "$3"; echo $?) +[ "$ISENOUGHSPACE" == "TRUE" ] || exit $(ogRaiseError session $OG_ERR_CACHESIZE "$REPO"; echo $?) # Comprobar consistencia del sistema de archivos. echo " " > $OGLOGCOMMAND @@ -122,8 +133,8 @@ fi # Crear la imagen. echo " " > $OGLOGCOMMAND TIME2=$SECONDS -ogEcho log session "[40] $MSG_HELP_ogCreateImage : ogCreateImage $1 $2 $3 $4 $IMGPROG $IMGCOMP" -ogCreateImage "$1" "$2" "$3" "/$4" "$IMGPROG" "$IMGCOMP" &>> $OGLOGCOMMAND || exit $(ogRaiseError $OG_ERR_IMAGE "ogCreteImage"; echo $?) +ogEcho log session "[40] $MSG_HELP_ogCreateImage : ogCreateImage $1 $2 $REPO $4 $IMGPROG $IMGCOMP" +ogCreateImage "$1" "$2" "$REPO" "/$4" "$IMGPROG" "$IMGCOMP" &>> $OGLOGCOMMAND || exit $(ogRaiseError $OG_ERR_IMAGE "ogCreteImage"; echo $?) RESUMECREATEIMAGE=$(grep "Total Time:" $OGLOGCOMMAND) TIMEAUX2=$[SECONDS-TIME2] ogEcho log session " $RESUMECREATEIMAGE " @@ -140,8 +151,8 @@ ogEcho log session " $MSG_HELP_ogExtendFs $NEWSIZEFS -> $SIZEFS = $SIZEFS #TODO que hacer si error al extender sistemade archivos #resumen de la operacion -IMGSIZE=$(ls -s `ogGetPath $3 /$4.$IMGEXT`| cut -f1 -d" ") -IMGOS=$(ogGetImageInfo `ogGetPath $3 /$4.$IMGEXT`) +IMGSIZE=$(ls -s `ogGetPath $REPO /$4.$IMGEXT`| cut -f1 -d" ") +IMGOS=$(ogGetImageInfo `ogGetPath $REPO /$4.$IMGEXT`) TIME=$[SECONDS-TIME1] ogEcho log session "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s" |