diff options
99 files changed, 994 insertions, 538 deletions
diff --git a/admin/Database/ogAdmBD-1.0-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0-1.0.6pre.sql deleted file mode 120000 index 935874bd..00000000 --- a/admin/Database/ogAdmBD-1.0-1.0.6pre.sql +++ /dev/null @@ -1 +0,0 @@ -ogAdmBD-1.0.1-1.0.6pre.sql
\ No newline at end of file diff --git a/admin/Database/ogAdmBD-1.0-1.1.0pre.sql b/admin/Database/ogAdmBD-1.0-1.1.0pre.sql new file mode 120000 index 00000000..f4795620 --- /dev/null +++ b/admin/Database/ogAdmBD-1.0-1.1.0pre.sql @@ -0,0 +1 @@ +ogAdmBD-1.0.1-1.1.0pre.sql
\ No newline at end of file diff --git a/admin/Database/ogAdmBD-1.0.1-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0.1-1.1.0pre.sql index 9b3d9677..eac82176 100644 --- a/admin/Database/ogAdmBD-1.0.1-1.0.6pre.sql +++ b/admin/Database/ogAdmBD-1.0.1-1.1.0pre.sql @@ -1,5 +1,5 @@ ### Fichero de actualización de la base de datos. -# OpenGnSys 1.0 y 1.0.1 - 1.0.6 +# OpenGnSys 1.0 y 1.0.1 - 1.1.0 #use ogAdmBD # Mostrar protocolo de clonación en la cola de acciones (ticket #672) @@ -221,3 +221,14 @@ UPDATE comandos SET visuparametros = 'dsk;par', parametros = 'nfn;iph;dsk;par' WHERE idcomando = 9; +# Eliminar campos que ya no se usan (ticket #705). +ALTER TABLE repositorios + DROP pathrepoconf, + DROP pathrepod, + DROP pathpxe; +ALTER TABLE menus + DROP coorx, + DROP coory, + DROP scoorx, + DROP scoory; + diff --git a/admin/Database/ogAdmBD-1.0.2-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0.2-1.1.0pre.sql index 1fb7066d..049a08a3 100644 --- a/admin/Database/ogAdmBD-1.0.2-1.0.6pre.sql +++ b/admin/Database/ogAdmBD-1.0.2-1.1.0pre.sql @@ -1,5 +1,5 @@ ### Fichero de actualización de la base de datos. -# OpenGnSys 1.0.2 - 1.0.6 +# OpenGnSys 1.0.2 - 1.1.0 #use ogAdmBD UPDATE entornos SET ipserveradm = 'SERVERIP' WHERE ipserveradm = '' LIMIT 1; @@ -221,3 +221,14 @@ UPDATE comandos SET visuparametros = 'dsk;par', parametros = 'nfn;iph;dsk;par' WHERE idcomando = 9; +# Eliminar campos que ya no se usan (ticket #705). +ALTER TABLE repositorios + DROP pathrepoconf, + DROP pathrepod, + DROP pathpxe; +ALTER TABLE menus + DROP coorx, + DROP coory, + DROP scoorx, + DROP scoory; + diff --git a/admin/Database/ogAdmBD-1.0.2a-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0.2a-1.1.0pre.sql index 1e73cdd8..b162f9f1 100644 --- a/admin/Database/ogAdmBD-1.0.2a-1.0.6pre.sql +++ b/admin/Database/ogAdmBD-1.0.2a-1.1.0pre.sql @@ -1,5 +1,5 @@ ### Fichero de actualización de la base de datos. -# OpenGnSys 1.0.2a - 1.0.6 +# OpenGnSys 1.0.2a - 1.1.0 #use ogAdmBD UPDATE idiomas SET descripcion = 'English' WHERE ididioma = 2; @@ -219,3 +219,14 @@ UPDATE comandos SET visuparametros = 'dsk;par', parametros = 'nfn;iph;dsk;par' WHERE idcomando = 9; +# Eliminar campos que ya no se usan (ticket #705). +ALTER TABLE repositorios + DROP pathrepoconf, + DROP pathrepod, + DROP pathpxe; +ALTER TABLE menus + DROP coorx, + DROP coory, + DROP scoorx, + DROP scoory; + diff --git a/admin/Database/ogAdmBD-1.0.3-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0.3-1.1.0pre.sql index dc6de007..c48f5cbf 100644 --- a/admin/Database/ogAdmBD-1.0.3-1.0.6pre.sql +++ b/admin/Database/ogAdmBD-1.0.3-1.1.0pre.sql @@ -1,5 +1,5 @@ ### Fichero de actualización de la base de datos. -# OpenGnSys 1.0.3 - 1.0.6 +# OpenGnSys 1.0.3 - 1.1.0 #use ogAdmBD # Añadir tipo de arranque Windows al perfil hardware. @@ -230,3 +230,14 @@ UPDATE comandos SET visuparametros = 'dsk;par', parametros = 'nfn;iph;dsk;par' WHERE idcomando = 9; +# Eliminar campos que ya no se usan (ticket #705). +ALTER TABLE repositorios + DROP pathrepoconf, + DROP pathrepod, + DROP pathpxe; +ALTER TABLE menus + DROP coorx, + DROP coory, + DROP scoorx, + DROP scoory; + diff --git a/admin/Database/ogAdmBD-1.0.4-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0.4-1.1.0pre.sql index 0151d4dd..adb426f7 100644 --- a/admin/Database/ogAdmBD-1.0.4-1.0.6pre.sql +++ b/admin/Database/ogAdmBD-1.0.4-1.1.0pre.sql @@ -1,5 +1,5 @@ ### Fichero de actualización de la base de datos. -# OpenGnSys 1.0.4 - 1.0.6 +# OpenGnSys 1.0.4 - 1.1.0 #use ogAdmBD # Mejorar el rendimiento en acceso a la cola de acciones. @@ -166,3 +166,14 @@ UPDATE comandos SET visuparametros = 'dsk;par', parametros = 'nfn;iph;dsk;par' WHERE idcomando = 9; +# Eliminar campos que ya no se usan (ticket #705). +ALTER TABLE repositorios + DROP pathrepoconf, + DROP pathrepod, + DROP pathpxe; +ALTER TABLE menus + DROP coorx, + DROP coory, + DROP scoorx, + DROP scoory; + diff --git a/admin/Database/ogAdmBD-1.0.4a-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0.4a-1.1.0pre.sql index a12d5eb8..a882e5de 100644 --- a/admin/Database/ogAdmBD-1.0.4a-1.0.6pre.sql +++ b/admin/Database/ogAdmBD-1.0.4a-1.1.0pre.sql @@ -1,5 +1,5 @@ ### Fichero de actualización de la base de datos. -# OpenGnSys 1.0.4a - 1.0.6 +# OpenGnSys 1.0.4a - 1.1.0 #use ogAdmBD # Añadir validación del cliente. @@ -158,3 +158,14 @@ UPDATE comandos SET visuparametros = 'dsk;par', parametros = 'nfn;iph;dsk;par' WHERE idcomando = 9; +# Eliminar campos que ya no se usan (ticket #705). +ALTER TABLE repositorios + DROP pathrepoconf, + DROP pathrepod, + DROP pathpxe; +ALTER TABLE menus + DROP coorx, + DROP coory, + DROP scoorx, + DROP scoory; + diff --git a/admin/Database/ogAdmBD-1.0.5-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0.5-1.1.0pre.sql index 383e26d8..db8c19f6 100644 --- a/admin/Database/ogAdmBD-1.0.5-1.0.6pre.sql +++ b/admin/Database/ogAdmBD-1.0.5-1.1.0pre.sql @@ -1,5 +1,5 @@ ### Fichero de actualización de la base de datos. -# OpenGnSys 1.0.5 - 1.0.6 +# OpenGnSys 1.0.5 - 1.1.0 #use ogAdmBD # Incluir ordenador modelo y fecha de creación de imagen y @@ -31,3 +31,14 @@ UPDATE comandos SET visuparametros = 'dsk;par', parametros = 'nfn;iph;dsk;par' WHERE idcomando = 9; +# Eliminar campos que ya no se usan (ticket #705). +ALTER TABLE repositorios + DROP pathrepoconf, + DROP pathrepod, + DROP pathpxe; +ALTER TABLE menus + DROP coorx, + DROP coory, + DROP scoorx, + DROP scoory; + diff --git a/admin/Database/ogAdmBD-1.0.6pre.sql b/admin/Database/ogAdmBD-1.0.6pre.sql deleted file mode 100644 index c6e58a45..00000000 --- a/admin/Database/ogAdmBD-1.0.6pre.sql +++ /dev/null @@ -1,55 +0,0 @@ -### Fichero de actualización de la base de datos. -# OpenGnSys 1.0.6 -#use ogAdmBD - -# Eliminar procedimiento para evitar errores de ejecución. -DROP PROCEDURE IF EXISTS addcols; -# Procedimiento para actualización condicional de tablas. -delimiter '//' -CREATE PROCEDURE addcols() BEGIN - # Incluir ordenador modelo y fecha de creación de imagen y - # establecer valores por defecto (ticket #677). - IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS - WHERE COLUMN_NAME='fechacreacion' AND TABLE_NAME='imagenes' AND TABLE_SCHEMA=DATABASE()) - THEN - ALTER TABLE imagenes - MODIFY idrepositorio INT(11) NOT NULL DEFAULT 0, - MODIFY numdisk SMALLINT NOT NULL DEFAULT 0, - MODIFY numpar SMALLINT NOT NULL DEFAULT 0, - MODIFY codpar INT(8) NOT NULL DEFAULT 0, - ADD idordenador INT(11) NOT NULL DEFAULT 0 AFTER idrepositorio, - ADD fechacreacion DATETIME DEFAULT NULL; - else - ALTER TABLE imagenes - MODIFY idrepositorio INT(11) NOT NULL DEFAULT 0, - MODIFY idordenador INT(11) NOT NULL DEFAULT 0, - MODIFY numdisk SMALLINT NOT NULL DEFAULT 0, - MODIFY numpar SMALLINT NOT NULL DEFAULT 0, - MODIFY codpar INT(8) NOT NULL DEFAULT 0; - END IF; - # Incluir fecha de despliegue/restauración de imagen (ticket #677). - IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS - WHERE COLUMN_NAME='fechadespliegue' AND TABLE_NAME='ordenadores_particiones' AND TABLE_SCHEMA=DATABASE()) - THEN - ALTER TABLE ordenadores_particiones - ADD fechadespliegue DATETIME NULL AFTER idperfilsoft; - END IF; -END// -# Ejecutar actualización condicional. -delimiter ';' -CALL addcols(); -DROP PROCEDURE addcols; - -# Mostrar protocolo de clonación en la cola de acciones (ticket #672). -UPDATE parametros - SET tipopa = 0 - WHERE idparametro = 30; - -# Mostrar disco en comandos Inventario de software e Iniciar sesión. -UPDATE comandos - SET visuparametros = 'dsk;par', parametros = 'nfn;iph;mac;dsk;par' - WHERE idcomando = 7; -UPDATE comandos - SET visuparametros = 'dsk;par', parametros = 'nfn;iph;dsk;par' - WHERE idcomando = 9; - diff --git a/admin/Database/ogAdmBD-1.0.6pre-postinst.sql b/admin/Database/ogAdmBD-1.1.0pre-postinst.sql index 8b2e7be6..1ce377db 100644 --- a/admin/Database/ogAdmBD-1.0.6pre-postinst.sql +++ b/admin/Database/ogAdmBD-1.1.0pre-postinst.sql @@ -1,5 +1,5 @@ ### Procedimiento para actualización de la base de datos. -# Postinstalación de OpenGnSys 1.0.5 +# Postinstalación de OpenGnSys 1.1.0 #use ogAdmBD # Nota: retocar el fichero para sustituir KERNELVERSION por la versión del diff --git a/admin/Database/ogAdmBD.sql b/admin/Database/ogAdmBD.sql index feb0bdf5..cdfcf536 100644 --- a/admin/Database/ogAdmBD.sql +++ b/admin/Database/ogAdmBD.sql @@ -1,11 +1,4 @@ --- phpMyAdmin SQL Dump --- version 3.2.2.1deb1 --- http://www.phpmyadmin.net --- --- Servidor: localhost --- Tiempo de generación: 20-09-2010 a las 22:43:50 --- Versión del servidor: 5.1.37 --- Versión de PHP: 5.2.10-2ubuntu6.4 +-- Fichero de instalación de la base de datos. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; @@ -445,11 +438,7 @@ CREATE TABLE IF NOT EXISTS `menus` ( `idcentro` int(11) NOT NULL DEFAULT '0', `idurlimg` int(11) NOT NULL DEFAULT '0', `titulo` varchar(250) DEFAULT NULL, - `coorx` int(11) DEFAULT NULL, - `coory` int(11) DEFAULT NULL, `modalidad` tinyint(4) DEFAULT NULL, - `scoorx` int(11) DEFAULT NULL, - `scoory` int(11) DEFAULT NULL, `smodalidad` tinyint(4) DEFAULT NULL, `comentarios` text, `grupoid` int(11) NOT NULL DEFAULT '0', @@ -740,9 +729,6 @@ CREATE TABLE IF NOT EXISTS `repositorios` ( `nombrerepositorio` varchar(250) NOT NULL, `ip` varchar(15) NOT NULL DEFAULT '', `passguor` varchar(50) NOT NULL DEFAULT '', - `pathrepoconf` varchar(250) NOT NULL, - `pathrepod` varchar(250) NOT NULL, - `pathpxe` varchar(250) NOT NULL, `idcentro` int(11) DEFAULT NULL, `grupoid` int(11) DEFAULT NULL, `comentarios` text, @@ -750,8 +736,8 @@ CREATE TABLE IF NOT EXISTS `repositorios` ( PRIMARY KEY (`idrepositorio`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -INSERT INTO `repositorios` (`idrepositorio`,`nombrerepositorio`,`ip`,`passguor`,`pathrepoconf`,`pathrepod`,`pathpxe`,`idcentro`,`grupoid`,`comentarios`,`puertorepo`) VALUES - (1,'Repositorio (Default)','SERVERIP','','','/opt/opengnsys/admin','/opt/opengnsys/tftpboot/pxelinux.cfg',1,0,'',2002); +INSERT INTO `repositorios` (`idrepositorio`,`nombrerepositorio`,`ip`,`passguor`,`idcentro`,`grupoid`,`comentarios`,`puertorepo`) VALUES + (1,'Repositorio (Default)','SERVERIP','',1,0,'',2002); -- -------------------------------------------------------- diff --git a/admin/Interface/Configurar b/admin/Interface/Configurar index 661f4d57..18a68ebf 100755 --- a/admin/Interface/Configurar +++ b/admin/Interface/Configurar @@ -67,83 +67,85 @@ IFS='%' read -a TBPRM <<<"$sparam" maxp=0 for ((i=0; i<${#TBPRM[@]}; i++)); do - # Leer datos de la partición, separados por "*". - unset par - IFS='*' read -a CFG <<<"${TBPRM[i]}" 2>/dev/null - [[ ${CFG} =~ = ]] && eval ${CFG[@]} # Comprobar asignación antes de exportar valores. - # Saltar si no existe definición de partición. - if [ -n "$par" -a $par != 0 ]; then - # Componer datos de particionado. - TBP[par]="$cpt:$tam" - # Si se activa operación de formatear, componer datos de formateo. - if [ "$ope" == 1 ]; then - TBF[par]="$sfi" - else - TBF[par]="EMPTY" - fi - # Obtener la partición mayor por si hay que rellenar con valores EMPTY. - [ $par -gt $maxp ] && maxp=$par - fi + # Leer datos de la partición, separados por "*". + unset par + IFS='*' read -a CFG <<<"${TBPRM[i]}" 2>/dev/null + [[ ${CFG} =~ = ]] && eval ${CFG[@]} # Comprobar asignación antes de exportar valores. + # Componer datos de particionado. + if [ "$cpt" != "CACHE" ]; then + TBP[par]="$cpt:$tam" + fi + # Si se activa operación de formatear, componer datos de formateo. + if [ "$ope" == 1 ]; then + # Comprobamos que la particion y el s.f sean validos. + ogCheckStringInGroup $cpt "EMPTY EXTENDED LINUX-SWAP LINUX-LVM" + [ $? -ne 0 ] && TBF[par]="$sfi" + fi + # Obtener la partición mayor. + [ $par -gt $maxp ] && maxp=$par done - -# Control de datos. -for ((par=1; par<=maxp; par++)); do - # Ignorar partición 4 si existe caché. - if [ $che != 1 -o $par -ne 4 ]; then - # Rellenar con "EMPTY:0" la configuración de particiones no definidas. - [ -z "${TBP[par]}" ] && TBP[par]="EMPTY:0" - fi - # Ignorar formateo en particiones que no soportan sistemas de archivos. - case "${TBP[par]%:*}" in - ""|EMPTY|EXTENDED|LINUX-SWAP|LINUX-LVM) - TBF[par]="EMPTY" ;; - esac -done - #____________________________________________________ # # Proceso #____________________________________________________ +# Tamaño actual de la cache +CACHESIZE=$(ogGetCacheSize) # Desmonta todas las particiones y la caché -ogUnmountCache + +ogEcho session log "[10] $MSG_HELP_ogUnmountAll" ogUnmountAll $dis &>/dev/null +ogUnmountCache # Elimina la tabla de particiones -ogDeletePartitionTable $dis -ogExecAndLog session log ogUpdatePartitionTable $dis +ogDeletePartitionTable $dis +ogExecAndLog COMMAND ogUpdatePartitionTable $dis # Crea tabla de particiones MSDOS (NOTA: adaptar para tablas GPT). -ogCreatePartitionTable $dis MSDOS +ogCreatePartitionTable $dis MSDOS -# Cuestión caché -if [ "$che" == "1" ]; then - ogExecAndLog session log initCache $tch +# Inicia la cache. +if echo "$sparam" |grep "CACHE" >/dev/null; then + ogEcho session log "[30] $MSG_HELP_ogCreateCache" + ogEcho session log " initCache $tch" + ogExecAndLog COMMAND initCache $tch fi # Definir particionado. -ogExecAndLog session log ogCreatePartitions $dis ${TBP[@]} -ogExecAndLog session log ogUpdatePartitionTable $dis +ogEcho session log "[50] $MSG_HELP_ogCreatePartitions" +ogEcho session log " ogCreatePartitions $dis ${TBP[@]}" +ogExecAndLog COMMAND ogCreatePartitions $dis ${TBP[@]} +if [ $? -ne 0 ]; then + kill $COPROC_PID + exit $(ogRaiseError session log $OG_ERR_GENERIC "ogCreatePartitions $dis ${TBP[@]}") +fi +ogExecAndLog COMMAND ogUpdatePartitionTable $dis -RETVAL=$? -if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $RETVAL -fi +# Formatear particiones +ogEcho session log "[70] $MSG_HELP_ogFormat" -# Formatear particiones, excepto las marcadas como "EMPTY". for ((par=1; par<=$maxp; par++)); do - sfi="${TBF[par]}" - if [ "$sfi" != "EMPTY" ]; then - ogExecAndLog session log ogFormatFs $dis $par $sfi - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_PARTITION - fi - fi -done + case "${TBF[par]}" in + CACHE) # Si el tamaño es distinto ya se ha formateado. + if [ "$CACHESIZE" == $tch ]; then + ogEcho session log " ogFormatCache" + ogExecAndLog COMMAND ogFormatCache + fi + ;; + "") ;; + *) ogEcho session log " ogFormatFs $dis $par ${TBF[par]}" + ogExecAndLog COMMAND ogFormatFs $dis $par ${TBF[par]} + if [ $? -ne 0 ]; then + kill $COPROC_PID + exit $(ogRaiseError session log $OG_ERR_GENERIC "ogFormatFs $dis $par ${TBF[par]}"); + fi + ;; + esac +done +RETVAL=$? +# Registro de fin de ejecución +ogEcho log session "$MSG_INTERFACE_END $RETVAL" #___________________________________________________________________ # diff --git a/admin/Interface/EjecutarScript b/admin/Interface/EjecutarScript index 50b54a56..26453ed4 100755 --- a/admin/Interface/EjecutarScript +++ b/admin/Interface/EjecutarScript @@ -31,7 +31,8 @@ if [ $RETVAL == 0 ] then ogEcho log session "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" else - ogEcho log session "ERROR: operacion no realizada" + ogRaiseError log session $RETVAL + ogEcho log session error "Operacion no realizada" fi diff --git a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h index 85bbe795..9539afbf 100644 --- a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h +++ b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h @@ -86,7 +86,7 @@ char* tbErroresScripts[]={"Se han generado errores desconocidos. No se puede con "029-Error no definido",\ "030-Error al restaurar imagen - Imagen mas grande que particion",\ "031-Error al realizar el comando updateCache",\ - "032-Error no definido",\ + "032-Error al formatear",\ "033-Error no definido",\ "034-Error no definido",\ "035-Error no definido",\ diff --git a/admin/WebConsole/asistentes/includes/asistentes/formDeployImage.php b/admin/WebConsole/asistentes/includes/asistentes/formDeployImage.php index 0a6da102..78502d83 100644 --- a/admin/WebConsole/asistentes/includes/asistentes/formDeployImage.php +++ b/admin/WebConsole/asistentes/includes/asistentes/formDeployImage.php @@ -12,8 +12,8 @@ for($cfgIndex = 0; $cfgIndex < $conKeys; $cfgIndex++){ ?> <? echo $TbMsg["WDI13"] ?> <br> - <input type="radio" name="modo" value="deployImage" checked ><? echo $TbMsg["WDI14"] ?> <br> - <input type="radio" name="modo" value="updateCache" > <? echo $TbMsg["WDI15"] ?> <br> + <input type="radio" name="modo" value="deployImage" onClick="enableDirect(this.form)" checked ><? echo $TbMsg["WDI14"] ?> <br> + <input type="radio" name="modo" value="updateCache" onClick="disableDirect(this.form)" > <? echo $TbMsg["WDI15"] ?> <br> <tr> <td> <? echo $TbMsg["WDI16"] ?> </td> <td> <? echo $TbMsg["WDI17"] ?> </td> <td> <? echo $TbMsg["WDI18"] ?> </td> <td> <? echo $TbMsg["WDI19"] ?> </td></tr> @@ -43,11 +43,12 @@ for($cfgIndex = 0; $cfgIndex < $conKeys; $cfgIndex++){ <? echo $TbMsg["WDI23"] ?> <br /> - <select name="idmetodo" id="idmetodo" style="WIDTH:220";"> - <!-- <option value="UNICAST"> UNICAST </option> --> + <select name="idmetodo" id="idmetodo" style="WIDTH:220;"> <option value="TORRENT"> TORRENT </option> <option value="MULTICAST"> MULTICAST </option> + <option value="MULTICAST-DIRECT"> MULTICAST-DIRECT </option> <option value="UNICAST"> UNICAST </option> + <option value="UNICAST-DIRECT"> UNICAST-DIRECT </option> </select> <br /> </td> diff --git a/admin/WebConsole/asistentes/jscripts/EjecutarScripts.js b/admin/WebConsole/asistentes/jscripts/EjecutarScripts.js index e17411c0..81a916ba 100644 --- a/admin/WebConsole/asistentes/jscripts/EjecutarScripts.js +++ b/admin/WebConsole/asistentes/jscripts/EjecutarScripts.js @@ -11,7 +11,15 @@ if (comprobar_datos()){ var RC='@'; document.fdatosejecucion.atributos.value="scp="+escape(document.fdatos.codigo.value)+RC; - document.fdatosejecucion.submit(); + if( document.fdatosejecucion.ambito.value!=16 && document.fdatos.idmetodo.value=="UNICAST" || document.fdatos.idmetodo.value=="UNICAST-DIRECT"){ + if (confirm(TbMsg[4]) == true) { + document.fdatosejecucion.submit(); + } else { + cancelar(); + } + }else{ + document.fdatosejecucion.submit(); + } } } //________________________________________________________________________________________________________ diff --git a/admin/WebConsole/asistentes/jscripts/asistentes.js b/admin/WebConsole/asistentes/jscripts/asistentes.js index dab6cf06..97ae9173 100644 --- a/admin/WebConsole/asistentes/jscripts/asistentes.js +++ b/admin/WebConsole/asistentes/jscripts/asistentes.js @@ -26,18 +26,40 @@ ogEcho log session \"[0] $MSG_SCRIPTS_TASK_START " + command + "\"\n \ ogExecAndLog command " + command + " \n "; } +// disableDirect(form): En Deploy de imagenes si se elige updateCache se impide elegir multicast-direct o unicast-direct +function disableDirect(form){ + // MULTICAST-DIRECT + form.idmetodo.options[2].disabled=true; + // UNICAST-DIRECT + form.idmetodo.options[4].disabled=true; +} +// enableDirect(form): En Deploy de imagenes si se elige deployCache se permite elegir multicast-direct o unicast-direct +function enableDirect(form){ + // MULTICAST-DIRECT + form.idmetodo.options[2].disabled=false; + // UNICAST-DIRECT + form.idmetodo.options[4].disabled=false; +} + + function codeDeployImage(form){ switch (form.idmetodo.value) { case "MULTICAST": protocol="MULTICAST " + form.mcastpuerto.value + ":" + form.mcastmodo.value + ":" + form.mcastdireccion.value + ":" + form.mcastvelocidad.value + "M:" + form.mcastnclien.value + ":" + form.mcastseg.value + " "; break; + case "MULTICAST-DIRECT": + protocol="MULTICAST-DIRECT " + form.mcastpuerto.value + ":" + form.mcastmodo.value + ":" + form.mcastdireccion.value + ":" + form.mcastvelocidad.value + "M:" + form.mcastnclien.value + ":" + form.mcastseg.value + " "; + break; case "TORRENT": protocol=" TORRENT " + form.modp2p.value + ":" + form.timep2p.value; break; case "UNICAST": protocol=" UNICAST"; break; + case "UNICAST-DIRECT": + protocol=" UNICAST-DIRECT"; + break; } //form.codigo.value="deployImage REPO /"; if (form.modo[0].checked) @@ -202,8 +224,8 @@ partCode += " EMPTY:0"; ogCreatePartitionTable "+n_disk+" "+tipo_part_table +" \n \ ogEcho log session \"[0] $MSG_HELP_ogCreatePartitions \"\n \ ogEcho session \"[10] $MSG_HELP_ogUnmountAll "+n_disk+"\"\n \ -ogUnmountCache \n \ ogUnmountAll "+n_disk+" 2>/dev/null\n \ +ogUnmountCache \n \ " + cacheCode + " \n \ ogEcho session \"[60] $MSG_HELP_ogListPartitions "+n_disk+"\"\n \ ogExecAndLog command session ogListPartitions "+n_disk+" \n \ @@ -289,8 +311,8 @@ partCode += " EMPTY:0"; ogCreatePartitionTable "+n_disk+" "+tipo_part_table +" \n \ ogEcho log session \"[0] $MSG_HELP_ogCreatePartitions "+n_disk+"\"\n \ ogEcho session \"[10] $MSG_HELP_ogUnmountAll "+n_disk+"\"\n \ -ogUnmountCache \n \ ogUnmountAll "+n_disk+" \n \ +ogUnmountCache \n \ " + cacheCode + " \n \ ogEcho session \"[60] $MSG_HELP_ogListPartitions "+n_disk+"\"\n \ ogExecAndLog command session ogListPartitions "+n_disk+" \n \ diff --git a/admin/WebConsole/comandos/gestores/gestor_Comandos.php b/admin/WebConsole/comandos/gestores/gestor_Comandos.php index cd01a728..7e22d431 100644 --- a/admin/WebConsole/comandos/gestores/gestor_Comandos.php +++ b/admin/WebConsole/comandos/gestores/gestor_Comandos.php @@ -75,8 +75,20 @@ $atributos=str_replace('$',chr(9),$atributos); <BODY> <SCRIPT language="javascript" src="../jscripts/comunescomandos.js"></SCRIPT> <? echo '<SCRIPT language="javascript" src="../../idiomas/javascripts/'.$idioma.'/comandos/comunescomandos_'.$idioma.'.js"></SCRIPT>'?> + <? echo '<SCRIPT language="javascript" src="../../idiomas/javascripts/'.$idioma.'/comandos/ejecutarscripts_'.$idioma.'.js"></SCRIPT>'?> <?php +//################################################################## +if ( ereg("ptc=UNICAST", $atributos) & $ambito!=16) { ?> + <SCRIPT language="javascript"> + if (confirm(TbMsg[4]) == false) { + alert(CTbMsg[0]); + location.href="../../nada.php" + } + </SCRIPT> +<?php } ?> +<?php +//################################################################## /* Recopila identificadore ,ipes y macs para envío de comandos */ $cadenaid=""; $cadenaip=""; diff --git a/admin/WebConsole/comandos/includes/opcionesacciones.php b/admin/WebConsole/comandos/includes/opcionesacciones.php index 601403b0..c973a691 100644 --- a/admin/WebConsole/comandos/includes/opcionesacciones.php +++ b/admin/WebConsole/comandos/includes/opcionesacciones.php @@ -10,8 +10,9 @@ // ************************************************************************************************************************************************* ?> <P align=center><span align=center class=subcabeceras><? echo $TbMsgAux[0] ?></span></P> - - +<?php if ($ambito !=16 ){ ?> + <INPUT type="hidden" name="ambito" value="<? echo $ambito?>"> +<?php } ?> <?if($idcomando!=10){?> <TABLE align=center> <TR> diff --git a/admin/WebConsole/comandos/jscripts/Configurar.js b/admin/WebConsole/comandos/jscripts/Configurar.js index bcb9e0ff..2b7e5f29 100644 --- a/admin/WebConsole/comandos/jscripts/Configurar.js +++ b/admin/WebConsole/comandos/jscripts/Configurar.js @@ -101,6 +101,7 @@ function Confirmar(cc) // Confirma un bloque de configuración de particiones // Parametros: // cc: Identificador de la configuración (bloque de particiones) +// Version 1.1: 2015-02-25. Irina Gomez ETSII US. Se envian datos de cuarta particion. //________________________________________________________________________________________________________ function comprobarDatos(cc) @@ -213,12 +214,13 @@ function comprobarDatos(cc) } for(var i=1;i<=maxpar;i++){ - if(i!=4){ + // Version 1.1: Se envian datos cuarta particion. + //if(i!=4){ if(tbparam[i]!=undefined) atributos+=tbparam[i]; else atributos+="par="+i+TB+"cpt=EMPTY"+TB+"sfi=EMPTY"+TB+"tam=0"+TB+"ope=0"+SL; - } + //} } // Completa con EMPTY si las particiones son menores a 4 y no hay cache diff --git a/admin/WebConsole/comandos/jscripts/RestaurarImagen.js b/admin/WebConsole/comandos/jscripts/RestaurarImagen.js index 91e7b3ea..d675fa8d 100644 --- a/admin/WebConsole/comandos/jscripts/RestaurarImagen.js +++ b/admin/WebConsole/comandos/jscripts/RestaurarImagen.js @@ -59,7 +59,7 @@ } //________________________________________________________________________________________________________ function cancelar(){ - alert(CTbMsg[0]); + alert(TbMsg[0]); location.href="../nada.php" } //________________________________________________________________________________________________________ diff --git a/admin/WebConsole/gestores/gestor_menus.php b/admin/WebConsole/gestores/gestor_menus.php index 0b1bb948..e024100c 100644 --- a/admin/WebConsole/gestores/gestor_menus.php +++ b/admin/WebConsole/gestores/gestor_menus.php @@ -23,11 +23,7 @@ $opcion=0; // Inicializa parametros $idmenu=0; $descripcion=""; $titulo=""; -$coorx=0; -$coory=0; $modalidad=0; -$scoorx=0; -$scoory=0; $smodalidad=0; $comentarios=""; $grupoid=0; @@ -42,12 +38,8 @@ if (isset($_POST["idmenu"])) $idmenu=$_POST["idmenu"]; if (isset($_POST["identificador"])) $idmenu=$_POST["identificador"]; if (isset($_POST["descripcion"])) $descripcion=$_POST["descripcion"]; if (isset($_POST["titulo"])) $titulo=$_POST["titulo"]; -if (isset($_POST["coorx"])) $coorx=$_POST["coorx"]; -if (isset($_POST["coory"])) $coory=$_POST["coory"]; -if (isset($_POST["modalidad"])) $modalidad=$_POST["modalidad"]; -if (isset($_POST["scoorx"])) $scoorx=$_POST["scoorx"]; -if (isset($_POST["scoory"])) $scoory=$_POST["scoory"]; +if (isset($_POST["modalidad"])) $modalidad=$_POST["modalidad"]; if (isset($_POST["smodalidad"])) $smodalidad=$_POST["smodalidad"]; if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"]; @@ -120,13 +112,9 @@ function Gestiona(){ global $idcentro; global $idmenu; global $descripcion; - global $titulo; - global $coorx; - global $coory; - global $modalidad; - global $scoorx; - global $scoory; - global $smodalidad; + global $titulo; + global $modalidad; + global $smodalidad; global $comentarios; global $grupoid; global $htmlmenupub; @@ -146,11 +134,7 @@ function Gestiona(){ $cmd->CreaParametro("@idmenu",$idmenu,1); $cmd->CreaParametro("@descripcion",$descripcion,0); $cmd->CreaParametro("@titulo",$titulo,0); - $cmd->CreaParametro("@coorx",$coorx,1); - $cmd->CreaParametro("@coory",$coory,1); $cmd->CreaParametro("@modalidad",$modalidad,1); - $cmd->CreaParametro("@scoorx",$scoorx,1); - $cmd->CreaParametro("@scoory",$scoory,1); $cmd->CreaParametro("@smodalidad",$smodalidad,1); $cmd->CreaParametro("@comentarios",$comentarios,0); $cmd->CreaParametro("@grupoid",$grupoid,1); @@ -161,9 +145,9 @@ function Gestiona(){ switch($opcion){ case $op_alta : - $cmd->texto="INSERT INTO menus (descripcion,titulo,coorx,coory,modalidad,scoorx,scoory,smodalidad, + $cmd->texto="INSERT INTO menus (descripcion,titulo,modalidad,smodalidad, comentarios,idcentro,grupoid,htmlmenupub,htmlmenupri,resolucion,idurlimg) - VALUES (@descripcion,@titulo,@coorx,@coory,@modalidad,@scoorx,@scoory,@smodalidad, + VALUES (@descripcion,@titulo,@modalidad,@smodalidad, @comentarios,@idcentro,@grupoid,@htmlmenupub,@htmlmenupri,@resolucion,@idurlimg)"; $resul=$cmd->Ejecutar(); if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta @@ -176,7 +160,7 @@ function Gestiona(){ } break; case $op_modificacion: - $cmd->texto="UPDATE menus SET descripcion=@descripcion,titulo=@titulo,coorx=@coorx,coory=@coory,modalidad=@modalidad,scoorx=@scoorx,scoory=@scoory,smodalidad=@smodalidad, + $cmd->texto="UPDATE menus SET descripcion=@descripcion,titulo=@titulo,modalidad=@modalidad,smodalidad=@smodalidad, comentarios=@comentarios,htmlmenupub=@htmlmenupub ,htmlmenupri=@htmlmenupri,resolucion=@resolucion,idurlimg=@idurlimg WHERE idmenu=@idmenu"; $resul=$cmd->Ejecutar(); diff --git a/admin/WebConsole/gestores/gestor_repositorios.php b/admin/WebConsole/gestores/gestor_repositorios.php index c8eb14a2..88727394 100644 --- a/admin/WebConsole/gestores/gestor_repositorios.php +++ b/admin/WebConsole/gestores/gestor_repositorios.php @@ -23,9 +23,6 @@ $idrepositorio=0; $nombrerepositorio=""; $ip=""; $passguor=""; -$pathrepoconf=""; -$pathrepod=""; -$pathpxe=""; $grupoid=0; $puertorepo=""; @@ -40,9 +37,6 @@ if (isset($_POST["identificador"])) $idrepositorio=$_POST["identificador"]; if (isset($_POST["nombrerepositorio"])) $nombrerepositorio=$_POST["nombrerepositorio"]; if (isset($_POST["ip"])) $ip=$_POST["ip"]; if (isset($_POST["passguor"])) $passguor=$_POST["passguor"]; -if (isset($_POST["pathrepoconf"])) $pathrepoconf=$_POST["pathrepoconf"]; -if (isset($_POST["pathrepod"])) $pathrepod=$_POST["pathrepod"]; -if (isset($_POST["pathpxe"])) $pathpxe=$_POST["pathpxe"]; if (isset($_POST["puertorepo"])) $puertorepo=$_POST["puertorepo"]; if (isset($_POST["comentarios"])) $comentarios=$_POST["comentarios"]; @@ -114,9 +108,6 @@ function Gestiona(){ global $nombrerepositorio; global $ip; global $passguor; - global $pathrepoconf; - global $pathrepod; - global $pathpxe; global $puertorepo; global $comentarios; @@ -134,15 +125,12 @@ function Gestiona(){ $cmd->CreaParametro("@nombrerepositorio",$nombrerepositorio,0); $cmd->CreaParametro("@ip",$ip,0); $cmd->CreaParametro("@passguor",$passguor,0); - $cmd->CreaParametro("@pathrepoconf",$pathrepoconf,0); - $cmd->CreaParametro("@pathrepod",$pathrepod,0); - $cmd->CreaParametro("@pathpxe",$pathpxe,0); $cmd->CreaParametro("@puertorepo",$puertorepo,0); $cmd->CreaParametro("@comentarios",$comentarios,0); switch($opcion){ case $op_alta : - $cmd->texto="INSERT INTO repositorios(idcentro,grupoid,nombrerepositorio,ip,passguor,pathrepoconf,pathrepod,pathpxe,puertorepo,comentarios) VALUES (@idcentro,@grupoid,@nombrerepositorio,@ip,@passguor,@pathrepoconf,@pathrepod,@pathpxe,@puertorepo,@comentarios)"; + $cmd->texto="INSERT INTO repositorios(idcentro,grupoid,nombrerepositorio,ip,passguor,puertorepo,comentarios) VALUES (@idcentro,@grupoid,@nombrerepositorio,@ip,@passguor,@puertorepo,@comentarios)"; $resul=$cmd->Ejecutar(); if ($resul){ // Crea una tabla nodo para devolver a la p�gina que llam� �sta $idrepositorio=$cmd->Autonumerico(); @@ -154,7 +142,7 @@ function Gestiona(){ } break; case $op_modificacion: - $cmd->texto="UPDATE repositorios SET nombrerepositorio=@nombrerepositorio,ip=@ip,passguor=@passguor,pathrepoconf=@pathrepoconf,pathrepod=@pathrepod,pathpxe=@pathpxe,puertorepo=@puertorepo,comentarios=@comentarios WHERE idrepositorio=@idrepositorio"; + $cmd->texto="UPDATE repositorios SET nombrerepositorio=@nombrerepositorio,ip=@ip,passguor=@passguor,puertorepo=@puertorepo,comentarios=@comentarios WHERE idrepositorio=@idrepositorio"; $resul=$cmd->Ejecutar(); break; case $op_eliminacion : diff --git a/admin/WebConsole/idiomas/javascripts/cat/comandos/configurar_cat.js b/admin/WebConsole/idiomas/javascripts/cat/comandos/configurar_cat.js index b4b05984..57a833e0 100644 --- a/admin/WebConsole/idiomas/javascripts/cat/comandos/configurar_cat.js +++ b/admin/WebConsole/idiomas/javascripts/cat/comandos/configurar_cat.js @@ -9,4 +9,7 @@ TbMsg[1]="El número de la partición debe ser mayor de 0"; TbMsg[2]="El tipo de partición no se ha especificado"; TbMsg[3]="El tamaño de la partición debe ser mayor que cero"; TbMsg[4]="ATENCIÓN: Se va a eliminar esta partición ¿ Está seguro ?"; +TbMsg[5]="Debe especificar el tipo de sistema de fichero si desea formatear la partición"; +TbMsg[6]="La CACHE sólo puede definirse en la partición 4"; +TbMsg[7]="El número máximo de particiones es 4"; diff --git a/admin/WebConsole/idiomas/javascripts/cat/ejecutaracciones_cat.js b/admin/WebConsole/idiomas/javascripts/cat/ejecutaracciones_cat.js index 5a655679..2ebeff37 100644 --- a/admin/WebConsole/idiomas/javascripts/cat/ejecutaracciones_cat.js +++ b/admin/WebConsole/idiomas/javascripts/cat/ejecutaracciones_cat.js @@ -6,5 +6,4 @@ TbMsg=new Array; TbMsg[0]="ATENCIÓN.- El Procedimiento será ejecutado aplicándolo a este ámbito. ¿ Está seguro ?"; TbMsg[1]="El Procedimiento ha sido gestionado correctamente para este ámbito"; -TbMsg[2]="ATENCIÓN.- El Procedimiento se convertirá en procedimiento de inicio (Autoexec) para todos los ordenadores de este ámbito. ¿ Está seguro ?"; - +TbMsg[4]="\t!!!!! ATENCIÓ !!!!! \nHa seleccionat Unicast en diversos ordinadors,\nLa transferència pot demorar en el temps";
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/javascripts/cat/propiedades_menus_cat.js b/admin/WebConsole/idiomas/javascripts/cat/propiedades_menus_cat.js index 5aafbe88..b0e2c34f 100644 --- a/admin/WebConsole/idiomas/javascripts/cat/propiedades_menus_cat.js +++ b/admin/WebConsole/idiomas/javascripts/cat/propiedades_menus_cat.js @@ -6,3 +6,4 @@ TbMsg=new Array; TbMsg[0]="Debe introducir un nombre para este menú"; TbMsg[1]="ATENCIÓN: Hay ordenadores con este menú. No puede darlo de baja hasta que cambie este dato en dichos ordenadores"; +TbMsg[2]="Las url de los menús personalizados,privados o públicos, deben empezar con http:// o https://"; diff --git a/admin/WebConsole/idiomas/javascripts/eng/comandos/configurar_eng.js b/admin/WebConsole/idiomas/javascripts/eng/comandos/configurar_eng.js index 0175c9a6..3c62905a 100644 --- a/admin/WebConsole/idiomas/javascripts/eng/comandos/configurar_eng.js +++ b/admin/WebConsole/idiomas/javascripts/eng/comandos/configurar_eng.js @@ -4,12 +4,12 @@ // Idioma: Ings //________________________________________________________________________________________________________ TbMsg=new Array; -TbMsg[0]="WARNING.- There are not partitions table modified, therefore no command will be registered"; -TbMsg[1]="WARNING.- There are partitions with the same number, you must select another or remove it clicking in the last column"; -TbMsg[2]="WARNING.- The size of the partition must be greater than zero"; -TbMsg[3]="WARNING.- The partition must be correlative and there would not have spaces between partitions"; -TbMsg[4]="WARNING.- This partition is empty, therefore you can't to perform any operation"; -TbMsg[5]="WARNING.- This partition must be just formatted because the operating system has changed or has changed the size of some partition"; -TbMsg[6]="WARNING.- There is not coherent to hide this partition because it is not a Windows partition"; -TbMsg[7]="WARNING.- There is not coherent to show this partition because it is not a Windows partition"; -TbMsg[8]="You can't add more partitions"; +TbMsg[0]="WARNING.- There are partitions with the same number, you must select another or remove it clicking in the last column"; +TbMsg[1]="WARNING.- The number of the partition must be greater than zero"; +TbMsg[2]="El tipo de particin no se ha especificado"; +TbMsg[3]="WARNING.- The size of the partition must be greater than zero"; +TbMsg[4]="ATENCION: Se va a eliminar esta particin Esta seguro ?"; +TbMsg[5]="Debe especificar el tipo de sistema de ficheros si desea formatear la particion"; +TbMsg[6]="La CACHE solo puede definirse en la particion 4"; +TbMsg[7]="El nmero maximo de particiones es 4"; + diff --git a/admin/WebConsole/idiomas/javascripts/eng/comandos/ejecutarscripts_eng.js b/admin/WebConsole/idiomas/javascripts/eng/comandos/ejecutarscripts_eng.js index e2de10f6..577b52c8 100644 --- a/admin/WebConsole/idiomas/javascripts/eng/comandos/ejecutarscripts_eng.js +++ b/admin/WebConsole/idiomas/javascripts/eng/comandos/ejecutarscripts_eng.js @@ -8,3 +8,4 @@ TbMsg[0]="WARNING.- Bash code will be performed Are you sure ?"; TbMsg[1]="You must introduce some code lines or at least a file with Bash code"; TbMsg[2]="You must introduce the title of the script whether you want to follow-up the accion or to save it like a procedure or task"; TbMsg[3]="You must introduce the description of the script whether you want to follow-up the accion or to save it like a procedure or task"; +TbMsg[4]="\t!!!!! WARNING !!!!! \nYou have selected unicast to multiple computers,\nThe transfer may be delayed in time";
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/javascripts/eng/propiedades_menus_eng.js b/admin/WebConsole/idiomas/javascripts/eng/propiedades_menus_eng.js index 22f45bae..ab85bf7e 100644 --- a/admin/WebConsole/idiomas/javascripts/eng/propiedades_menus_eng.js +++ b/admin/WebConsole/idiomas/javascripts/eng/propiedades_menus_eng.js @@ -6,3 +6,4 @@ TbMsg=new Array; TbMsg[0]="You must introduce a name for this menu"; TbMsg[1]="WARNING: There are computers managed by this menu. You can't remove them until you change menu to this computers"; +TbMsg[2]="Las url de los mens personalizados,privados o pblicos, deben empezar con http:// o https://"; diff --git a/admin/WebConsole/idiomas/javascripts/esp/comandos/configurar_esp.js b/admin/WebConsole/idiomas/javascripts/esp/comandos/configurar_esp.js index 0bbde452..2a65e061 100644 --- a/admin/WebConsole/idiomas/javascripts/esp/comandos/configurar_esp.js +++ b/admin/WebConsole/idiomas/javascripts/esp/comandos/configurar_esp.js @@ -9,4 +9,6 @@ TbMsg[1]="El número de la partición debe ser mayor de 0"; TbMsg[2]="El tipo de partición no se ha especificado"; TbMsg[3]="El tamaño de la partición debe ser mayor que cero"; TbMsg[4]="ATENCIÓN: Se va a eliminar esta partición ¿ Está seguro ?"; -TbMsg[5]="Debe especificar el tipo de fichero si desea formatear la partición"; +TbMsg[5]="Debe especificar el tipo de sistema de ficheros si desea formatear la partición"; +TbMsg[6]="La CACHE sólo puede definirse en la partición 4"; +TbMsg[7]="El número máximo de particiones es 4"; diff --git a/admin/WebConsole/idiomas/javascripts/esp/comandos/ejecutarscripts_esp.js b/admin/WebConsole/idiomas/javascripts/esp/comandos/ejecutarscripts_esp.js index 80da1b67..4d084149 100644 --- a/admin/WebConsole/idiomas/javascripts/esp/comandos/ejecutarscripts_esp.js +++ b/admin/WebConsole/idiomas/javascripts/esp/comandos/ejecutarscripts_esp.js @@ -6,3 +6,4 @@ TbMsg=new Array; TbMsg[0]=""; TbMsg[1]="El script debe tener alguna linea de código"; +TbMsg[4]="\t!!!!! ATENCIÓN !!!!! \nHa seleccionado UNICAST en varios ordenadores,\nLa transferencia puede demorarse en el tiempo";
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/javascripts/esp/propiedades_menus_esp.js b/admin/WebConsole/idiomas/javascripts/esp/propiedades_menus_esp.js index 5aafbe88..b0e2c34f 100644 --- a/admin/WebConsole/idiomas/javascripts/esp/propiedades_menus_esp.js +++ b/admin/WebConsole/idiomas/javascripts/esp/propiedades_menus_esp.js @@ -6,3 +6,4 @@ TbMsg=new Array; TbMsg[0]="Debe introducir un nombre para este menú"; TbMsg[1]="ATENCIÓN: Hay ordenadores con este menú. No puede darlo de baja hasta que cambie este dato en dichos ordenadores"; +TbMsg[2]="Las url de los menús personalizados,privados o públicos, deben empezar con http:// o https://"; diff --git a/admin/WebConsole/idiomas/php/cat/avisos_cat.php b/admin/WebConsole/idiomas/php/cat/avisos_cat.php index 4ae75daa..eb927081 100644 --- a/admin/WebConsole/idiomas/php/cat/avisos_cat.php +++ b/admin/WebConsole/idiomas/php/cat/avisos_cat.php @@ -9,5 +9,6 @@ if (empty ($TbMsg)) $TbMsg=array(); $TbMsg["WARN_NAMELENGTH"]='AVÍS: El nom d\'equip no ha de superar els 15 caràcters si s\'instalen sistemes Windows.'; $TbMsg["WARN_NETBOOT"]='ATENCIÓN: El equipo iniciará en local por defecto; usar NetBoot Avanzado para modificar su arranque.'; $TbMsg["WARN_REBOOTAFTER"]='AVÍS: Es realitzarà automàticament un reinici després d\'executar l\'operació.'; +$TbMsg["WARN_NOTESOFMENU"]='NOTAS: Los menús personalizados tienen mayor prioridad que los menús automáticos.<br>Un menú personalizado se define introduciendo la URL de la página HTML que lo define.<br>Un menú automático se compone a partir de los procedimientos definidos.'; ?> diff --git a/admin/WebConsole/idiomas/php/cat/informacion_repositorio_cat.php b/admin/WebConsole/idiomas/php/cat/informacion_repositorio_cat.php index acc4c2e8..0501064a 100644 --- a/admin/WebConsole/idiomas/php/cat/informacion_repositorio_cat.php +++ b/admin/WebConsole/idiomas/php/cat/informacion_repositorio_cat.php @@ -1,16 +1,19 @@ -<? +<?php //________________________________________________________________________________________________________ // // Fichero de idiomas php: informacion_repositorio_cat.php // Idioma: Català //________________________________________________________________________________________________________ - $TbMsg=array(); + if (empty ($TbMsg)) $TbMsg=array(); $TbMsg[0]='Repositoris'; $TbMsg[1]='Informació sobre Repositoris'; $TbMsg[2]='Repositori'; $TbMsg[3]='Informació Repositori'; $TbMsg[4]='Comentaris'; $TbMsg[5]='Imatges allotjades'; + $TbMsg["IMGTYPE1"]='monolitic'; + $TbMsg["IMGTYPE2"]='sincronizada bísica'; + $TbMsg["IMGTYPE3"]='sincronizada incremental'; $TbMsg[6]='Ordinadors assignats'; ?> diff --git a/admin/WebConsole/idiomas/php/cat/pintaParticiones_cat.php b/admin/WebConsole/idiomas/php/cat/pintaParticiones_cat.php index fc760544..5365ff39 100644 --- a/admin/WebConsole/idiomas/php/cat/pintaParticiones_cat.php +++ b/admin/WebConsole/idiomas/php/cat/pintaParticiones_cat.php @@ -23,6 +23,7 @@ $TbMsg["CONFIG_PARTTABLE"]='Tabla de particiones'; $TbMsg["VARIABLE"]='Variable'; $TbMsg["CACHE_CONTENT"]='Data/Caché'; $TbMsg["CACHE_FREESPACE"]='Caché libre'; +$TbMsg["CACHE_COMPLETE"]='CACHE COMPLETA'; $TbMsg["SAMESYSTEM_IMAGE"]='Imagen (mismo tipo partición)'; $TbMsg["DIFFERENTSYSTEM_IMAGE"]='Imagen (distinto tipo partición)'; diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_menus_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_menus_cat.php index 12fa7942..c3c72b9d 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_menus_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_menus_cat.php @@ -1,4 +1,4 @@ -<? +<?php //________________________________________________________________________________________________________ // // Fitxer d'idioms php: propiedades_menus_cat.php @@ -13,14 +13,13 @@ $TbMsg[4]="Gesti Menus"; $TbMsg[5]="Nom del Men"; $TbMsg[6]="Ttol"; $TbMsg[7]="Comentaris"; -$TbMsg[8]="tems pblics del Men"; +$TbMsg[8]="Items de Men Pblico"; $TbMsg[9]="Coordenada x"; $TbMsg[10]="Coordenada y"; -$TbMsg[11]="Modalitat"; -$TbMsg[12]="tems privats del Men"; +$TbMsg[11]="Columnas men automtico"; $TbMsg[13]="Men simple"; $TbMsg[14]="Men doble"; -$TbMsg[15]="Html men pblic"; -$TbMsg[16]="Html men privat"; +$TbMsg[15]="URL men personalizado"; $TbMsg[17]="Resoluci de pantalla"; -?>
\ No newline at end of file +$TbMsg[18]="Imagen de fondo"; +?> diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_usuarios_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_usuarios_cat.php index 7848de59..440cbba9 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_usuarios_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_usuarios_cat.php @@ -16,4 +16,12 @@ $TbMsg[7]="Nom complet"; $TbMsg[8]="E-mail"; $TbMsg[9]="Unitat organitzativa"; $TbMsg[10]="Idioma"; -?> +$TbMsg[11]="SuperAdministrador "; +$TbMsg[12]="Administrador"; +$TbMsg[13]="Operador"; +$TbMsg[14]="Per realitzar canvis en aquest usuari<br>"; +$TbMsg[15]="creat en el procs d'installaci,<br><br>"; +$TbMsg[16]=" +premi aqu<br>"; +$TbMsg[17]="http://opengnsys.es/wiki/ModificarUsuarios"; +?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/eng/avisos_eng.php b/admin/WebConsole/idiomas/php/eng/avisos_eng.php index ecfca0a1..316a167d 100644 --- a/admin/WebConsole/idiomas/php/eng/avisos_eng.php +++ b/admin/WebConsole/idiomas/php/eng/avisos_eng.php @@ -9,5 +9,6 @@ if (empty ($TbMsg)) $TbMsg=array(); $TbMsg["WARN_NAMELENGTH"]='WARNING: The hostname must not exceed 15 characters if you install Windows systems.'; $TbMsg["WARN_NETBOOT"]='ATENCIÓN: El equipo iniciará en local por defecto; usar NetBoot Avanzado para modificar su arranque.'; $TbMsg["WARN_REBOOTAFTER"]='WARNING: Client(s) will be automatically rebooted after executing the operation.'; +$TbMsg["WARN_NOTESOFMENU"]='NOTAS: Los menús personalizados tienen mayor prioridad que los menús automáticos.<br>Un menú personalizado se define introduciendo la URL de la página HTML que lo define.<br>Un menú automático se compone a partir de los procedimientos definidos.'; ?> diff --git a/admin/WebConsole/idiomas/php/eng/informacion_repositorio_eng.php b/admin/WebConsole/idiomas/php/eng/informacion_repositorio_eng.php index 04db56b7..c9ae6ef5 100644 --- a/admin/WebConsole/idiomas/php/eng/informacion_repositorio_eng.php +++ b/admin/WebConsole/idiomas/php/eng/informacion_repositorio_eng.php @@ -4,13 +4,16 @@ // Fichero de idiomas php: informacion_repositorio_eng.php // Idioma: English //________________________________________________________________________________________________________ - $TbMsg=array(); + if (empty ($TbMsg)) $TbMsg=array(); $TbMsg[0]='Repositories'; $TbMsg[1]='Repositories Information'; $TbMsg[2]='Repository'; $TbMsg[3]='Repository Information'; $TbMsg[4]='Comments'; $TbMsg[5]='Hosted Images'; + $TbMsg["IMGTYPE1"]='monolithic'; + $TbMsg["IMGTYPE2"]='base synchronized'; + $TbMsg["IMGTYPE3"]='incremental synchronized'; $TbMsg[6]='Computers assigned'; ?> diff --git a/admin/WebConsole/idiomas/php/eng/pintaParticiones_eng.php b/admin/WebConsole/idiomas/php/eng/pintaParticiones_eng.php index 3e3cf4f6..d67825b8 100644 --- a/admin/WebConsole/idiomas/php/eng/pintaParticiones_eng.php +++ b/admin/WebConsole/idiomas/php/eng/pintaParticiones_eng.php @@ -23,6 +23,7 @@ $TbMsg["CONFIG_PARTTABLE"]='Tabla de particiones'; $TbMsg["VARIABLE"]='Variable'; $TbMsg["CACHE_CONTENT"]='Contenido caché'; $TbMsg["CACHE_FREESPACE"]='Caché libre'; +$TbMsg["CACHE_COMPLETE"]='FULL CACHE'; $TbMsg["SAMESYSTEM_IMAGE"]='Imagen (mismo tipo partición)'; $TbMsg["DIFFERENTSYSTEM_IMAGE"]='Imagen (distinto tipo partición)'; diff --git a/admin/WebConsole/idiomas/php/eng/propiedades_menus_eng.php b/admin/WebConsole/idiomas/php/eng/propiedades_menus_eng.php index 81fec455..f1bf3262 100644 --- a/admin/WebConsole/idiomas/php/eng/propiedades_menus_eng.php +++ b/admin/WebConsole/idiomas/php/eng/propiedades_menus_eng.php @@ -1,4 +1,4 @@ -<? +<?php //________________________________________________________________________________________________________ // // Fichero de idiomas php: propiedades_menus_eng.php @@ -13,16 +13,14 @@ $TbMsg[4]="Menus Management"; $TbMsg[5]="Menu name"; $TbMsg[6]="Title"; $TbMsg[7]="Comments"; -$TbMsg[8]="Public Items Menu"; +$TbMsg[8]="Public Menu Items"; $TbMsg[9]="Coordinate x"; $TbMsg[10]="Coordinate y"; -$TbMsg[11]="Modality"; -$TbMsg[12]="Private Items Menu"; +$TbMsg[11]="Columnas menú automático"; +$TbMsg[12]="Private Menu Items"; $TbMsg[13]="Simple menu"; $TbMsg[14]="Double menu"; -$TbMsg[15]="Html public menu"; -$TbMsg[16]="Html private menu"; +$TbMsg[15]="URL menú personalizado"; $TbMsg[17]="Screen resolution"; $TbMsg[18]="Background image"; ?> - diff --git a/admin/WebConsole/idiomas/php/eng/propiedades_usuarios_eng.php b/admin/WebConsole/idiomas/php/eng/propiedades_usuarios_eng.php index f8d3bfeb..c06c95f8 100644 --- a/admin/WebConsole/idiomas/php/eng/propiedades_usuarios_eng.php +++ b/admin/WebConsole/idiomas/php/eng/propiedades_usuarios_eng.php @@ -19,5 +19,8 @@ $TbMsg[10]="Language "; $TbMsg[11]="Super-Administrator"; $TbMsg[12]="Administrator"; $TbMsg[13]="Operator"; -?> - +$TbMsg[14]="To make changes to this user<br>"; +$TbMsg[15]="created in the installation,<br><br>"; +$TbMsg[16]="click here<br>"; +$TbMsg[17]="http://opengnsys.es/wiki/ModificarUsuarios"; +?>
\ No newline at end of file diff --git a/admin/WebConsole/idiomas/php/esp/avisos_esp.php b/admin/WebConsole/idiomas/php/esp/avisos_esp.php index 5d20dc91..e3f35c23 100644 --- a/admin/WebConsole/idiomas/php/esp/avisos_esp.php +++ b/admin/WebConsole/idiomas/php/esp/avisos_esp.php @@ -9,5 +9,6 @@ if (empty ($TbMsg)) $TbMsg=array(); $TbMsg["WARN_NAMELENGTH"]='AVISO: El nombre de equipo no debe superar los 15 caracteres si se instalan sistemas Windows.'; $TbMsg["WARN_NETBOOT"]='ATENCIÓN: El equipo iniciará en local por defecto; usar NetBoot Avanzado para modificar su arranque.'; $TbMsg["WARN_REBOOTAFTER"]='AVISO: Se realizará automáticamente un reinicio después de ejecutar la operación.'; +$TbMsg["WARN_NOTESOFMENU"]='NOTAS: Los menús personalizados tienen mayor prioridad que los menús automáticos.<br>Un menú personalizado se define introduciendo la URL de la página HTML que lo define.<br>Un menú automático se compone a partir de los procedimientos definidos.'; ?> diff --git a/admin/WebConsole/idiomas/php/esp/informacion_repositorio_esp.php b/admin/WebConsole/idiomas/php/esp/informacion_repositorio_esp.php index a05dca48..ccfd489d 100644 --- a/admin/WebConsole/idiomas/php/esp/informacion_repositorio_esp.php +++ b/admin/WebConsole/idiomas/php/esp/informacion_repositorio_esp.php @@ -1,16 +1,19 @@ -<? +<?php //________________________________________________________________________________________________________ // // Fichero de idiomas php: informacion_repositorio_esp.php // Idioma: Español //________________________________________________________________________________________________________ - $TbMsg=array(); + if (empty ($TbMsg)) $TbMsg=array(); $TbMsg[0]='Repositorios'; $TbMsg[1]='Información sobre Repositorios'; $TbMsg[2]='Repositorio'; $TbMsg[3]='Información Repositorio'; $TbMsg[4]='Comentarios'; $TbMsg[5]='Imágenes alojadas'; + $TbMsg["IMGTYPE1"]='monolítica'; + $TbMsg["IMGTYPE2"]='sincronizada bísica'; + $TbMsg["IMGTYPE3"]='sincronizada incremental'; $TbMsg[6]='Ordenadores asigandos'; ?> diff --git a/admin/WebConsole/idiomas/php/esp/pintaParticiones_esp.php b/admin/WebConsole/idiomas/php/esp/pintaParticiones_esp.php index 99985f7d..2b0bdc3f 100644 --- a/admin/WebConsole/idiomas/php/esp/pintaParticiones_esp.php +++ b/admin/WebConsole/idiomas/php/esp/pintaParticiones_esp.php @@ -23,6 +23,7 @@ $TbMsg["CONFIG_PARTTABLE"]='Tabla de particiones'; $TbMsg["VARIABLE"]='Variable'; $TbMsg["CACHE_CONTENT"]='Fecha/Caché'; $TbMsg["CACHE_FREESPACE"]='Caché libre'; +$TbMsg["CACHE_COMPLETE"]='CACHE COMPLETA'; $TbMsg["SAMESYSTEM_IMAGE"]='Imagen (mismo tipo partición)'; $TbMsg["DIFFERENTSYSTEM_IMAGE"]='Imagen (distinto tipo partición)'; diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_menus_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_menus_esp.php index d27cb5c9..b39705ef 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_menus_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_menus_esp.php @@ -13,15 +13,12 @@ $TbMsg[4]="Gestión Menús"; $TbMsg[5]="Nombre del Menú"; $TbMsg[6]="Título"; $TbMsg[7]="Comentarios"; -$TbMsg[8]="Items públicos del Menú"; -$TbMsg[9]="Coordenada X"; -$TbMsg[10]="Coordenada Y"; -$TbMsg[11]="Modalidad"; -$TbMsg[12]="Items privados del Menú"; +$TbMsg[8]="Items de Menú Público"; +$TbMsg[11]="Columnas menú automático"; +$TbMsg[12]="Items de Menú Privado"; $TbMsg[13]="Menú simple"; $TbMsg[14]="Menú doble"; -$TbMsg[15]="URL menú público"; -$TbMsg[16]="URL menú privado"; +$TbMsg[15]="URL menú personalizado"; $TbMsg[17]="Resolución de pantalla"; $TbMsg[18]="Imagen de fondo"; ?> diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_usuarios_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_usuarios_esp.php index fd06af09..dfe15349 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_usuarios_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_usuarios_esp.php @@ -19,4 +19,8 @@ $TbMsg[10]="Idioma "; $TbMsg[11]="SuperAdministrador "; $TbMsg[12]="Administrador"; $TbMsg[13]="Operador"; -?> +$TbMsg[14]="Para realizar cambios en este usuario<br>"; +$TbMsg[15]="creado en el proceso de instalación,<br><br>"; +$TbMsg[16]="pulse aquí<br>"; +$TbMsg[17]="http://opengnsys.es/wiki/ModificarUsuarios"; +?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/pintaParticiones.php b/admin/WebConsole/includes/pintaParticiones.php index 2ef909e6..90dff53f 100644 --- a/admin/WebConsole/includes/pintaParticiones.php +++ b/admin/WebConsole/includes/pintaParticiones.php @@ -123,7 +123,11 @@ function pintaParticiones($cmd,$configuraciones,$idordenadores,$cc) $numero=1; for ($x=0;$x<count($ima); $x++) { if(substr($ima[$x],-3)==".MB") { - echo '<strong>'.$TbMsg["CACHE_FREESPACE"].': '.$ima[$x].'</strong>'; + if ( $ima[$x] == "0.MB" ){ + echo '<font color=red><strong>'.$TbMsg["CACHE_COMPLETE"].': '.$ima[$x].'</strong></font>'; + }else{ + echo '<strong>'.$TbMsg["CACHE_FREESPACE"].': '.$ima[$x].'</strong>'; + } }elseif (! empty($ima[1])){ // $dir=is_dir('$ima');echo $dir; // if ($ima == "directorio"){$dir="si";} diff --git a/admin/WebConsole/index.php b/admin/WebConsole/index.php index 11eb7746..61ea54b9 100644 --- a/admin/WebConsole/index.php +++ b/admin/WebConsole/index.php @@ -25,10 +25,6 @@ include_once("./includes/CreaComando.php"); include_once("./clases/AdoPhp.php"); include_once("./includes/HTMLSELECT.php"); -// Valores por defecto. -$herror=0; -$idcentro=""; - // Control de errores. if (isset($_GET["herror"])) $herror=$_GET["herror"]; if (isset($_POST["herror"])) $herror=$_POST["herror"]; @@ -39,10 +35,28 @@ if (!empty ($parmidi) and file_exists ("idiomas/php/$parmidi/acceso_$parmidi.php } include ("idiomas/php/$idi/acceso_$idi.php"); +$busidcentro=""; $cmd=CreaComando($cnx); // Crea objeto comando if (!$cmd) die($TbMsg["ACCESS_ERROR"]); + $rs=new Recordset; +// $cmd->texto="SELECT * FROM centros WHERE idcentro='$idc'"; + $cmd->texto="SELECT * FROM centros "; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(false); // Error al abrir recordset + $rs->Primero(); + if (!$rs->EOF){ + $busidcentro=$rs->campos["identidad"]; + }$rs->Cerrar(); + +// Valores por defecto. +$herror=0; +if (empty($busidcentro)){ + $idcentro=""; +}else{ + $idcentro=$busidcentro; +} ?> <html> <head> diff --git a/admin/WebConsole/jscripts/aulas.js b/admin/WebConsole/jscripts/aulas.js index c2634c3b..254e0ac0 100644 --- a/admin/WebConsole/jscripts/aulas.js +++ b/admin/WebConsole/jscripts/aulas.js @@ -140,7 +140,7 @@ function consola_remota(ambito){ function ver_log(ambito){ var nombre_ordenador=currentNodo.toma_infonodo(); var whref="../principal/verlog.php?nombreordenador="+nombre_ordenador; - window.open(whref,"","width=400,height=100,scrollbars=YES,resizable=YES") + window.open(whref,"","width=1024,height=870,scrollbars=YES,resizable=YES") } //________________________________________________________________________________________________________ @@ -152,7 +152,7 @@ function ver_log(ambito){ function ver_log_seguimiento(ambito){ var nombre_ordenador=currentNodo.toma_infonodo(); var whref="../principal/verlogseguimiento.php?nombreordenador="+nombre_ordenador; - window.open(whref,"","width=400,height=100,scrollbars=YES,resizable=YES") + window.open(whref,"","width=1024,height=870,scrollbars=YES,resizable=YES") } //________________________________________________________________________________________________________ @@ -231,7 +231,7 @@ function confirmarcomando(ambito,idcomando,descricomando,pagina,gestor,funcion){ reset_contextual(-1,-1); // Oculta menu contextual document.fcomandos.idcomando.value=idcomando; // Identificador del comandos document.fcomandos.descricomando.value=descricomando; // Descripción del comandos - document.fcomandos.ambito.value=ambito; // Ámbito de aplicación + document.fcomandos.ambito.value=ambito; // ?mbito de aplicación document.fcomandos.idambito.value=currentNodo.toma_identificador(); // Identificador del ámbito document.fcomandos.nombreambito.value=currentNodo.toma_infonodo() ; // Nombre del ámbito document.fcomandos.action=pagina; // Página interactiva del comando diff --git a/admin/WebConsole/jscripts/propiedades_menus.js b/admin/WebConsole/jscripts/propiedades_menus.js index b270eebf..7a7ae518 100644 --- a/admin/WebConsole/jscripts/propiedades_menus.js +++ b/admin/WebConsole/jscripts/propiedades_menus.js @@ -74,10 +74,18 @@ function confirmar(op){ // Comprobar_datos //___________________________________________________________________________________________________________ function comprobar_datos(){ + var url=[document.fdatos.htmlmenupub.value,document.fdatos.htmlmenupri.value]; + var expreg=new RegExp("^http://|^https://"); if (document.fdatos.descripcion.value=="") { alert(TbMsg[0]); document.fdatos.descripcion.focus(); return(false); } + for (i = 0; i < url.length; i++) { + if (url[i]!="" && ! expreg.test(url[i])) { + alert(TbMsg[2]); + return(false); + } + } return(true); } diff --git a/admin/WebConsole/jscripts/propiedades_repositorios.js b/admin/WebConsole/jscripts/propiedades_repositorios.js index abe90b46..62c742f5 100644 --- a/admin/WebConsole/jscripts/propiedades_repositorios.js +++ b/admin/WebConsole/jscripts/propiedades_repositorios.js @@ -95,16 +95,6 @@ function comprobar_datos(){ document.fdatos.puertorepo.focus(); return(false); } - if (document.fdatos.pathrepod.value=="") { - alert(TbMsg[4]); - document.fdatos.pathrepod.focus(); - return(false); - } - if (document.fdatos.pathpxe.value=="") { - alert(TbMsg[5]); - document.fdatos.pathpxe.focus(); - return(false); - } return(true); } diff --git a/admin/WebConsole/propiedades/propiedades_menus.php b/admin/WebConsole/propiedades/propiedades_menus.php index ffc645d1..efe3575b 100644 --- a/admin/WebConsole/propiedades/propiedades_menus.php +++ b/admin/WebConsole/propiedades/propiedades_menus.php @@ -25,11 +25,7 @@ $opciones=array($TbMsg[0],$TbMsg[1],$TbMsg[2],$TbMsg[3]); $idmenu=0; $descripcion=""; $titulo=""; -$coorx=0; -$coory=0; $modalidad=0; -$scoorx=0; -$scoory=0; $smodalidad=0; $comentarios=""; $grupoid=0; @@ -160,23 +156,12 @@ if ($opcion!=$op_alta){ <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> <TR> - <TD align=center colspan=6> <b><?echo $TbMsg[8]?></b> </TD> + <TD align=center colspan=2> <b><?echo $TbMsg[8]?></b> </TD> </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?echo $TbMsg[9]?> </TH> - <?if ($opcion==$op_eliminacion) - echo '<TD style="width:50">'.$coorx.'</TD>'; - else - echo '<TD><INPUT class="formulariodatos" name=coorx style="width:50" type=text value="'.$coorx.'"></TD>';?> - <TH align=center> <?echo $TbMsg[10]?> </TH> - <?if ($opcion==$op_eliminacion) - echo '<TD style="width:50">'.$coorx.'</TD>'; - else - echo '<TD><INPUT class="formulariodatos" name=coory style="width:50" type=text value="'.$coory.'"></TD>';?> - <TH align=center> <?echo $TbMsg[11]?> </TH> - <? - if ($opcion==$op_eliminacion){ + <TH align=center> <?php echo $TbMsg[11]?> </TH> + <?php if ($opcion==$op_eliminacion){ $tbmodalidad[1]=$TbMsg[13]; $tbmodalidad[2]=$TbMsg[14]; echo '<TD style="width:100">'.$tbmodalidad[$modalidad].'</TD>'; @@ -206,19 +191,8 @@ if ($opcion!=$op_alta){ </TR> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> - <TH align=center> <?echo $TbMsg[9]?> </TH> - <?if ($opcion==$op_eliminacion) - echo '<TD style="width:50">'.$scoorx.'</TD>'; - else - echo '<TD><INPUT class="formulariodatos" name=scoorx style="width:50" type=text value="'.$scoorx.'"></TD>';?> - <TH align=center> <?echo $TbMsg[10]?> </TH> - <?if ($opcion==$op_eliminacion) - echo '<TD style="width:50">'.$scoorx.'</TD>'; - else - echo '<TD><INPUT class="formulariodatos" name=scoory style="width:50" type=text value="'.$scoory.'"></TD>';?> - <TH align=center> <?echo $TbMsg[11]?> </TH> - <? - if ($opcion==$op_eliminacion){ + <TH align=center> <?php echo $TbMsg[11]?> </TH> + <?php if ($opcion==$op_eliminacion){ $tbmodalidad[1]=$TbMsg[13]; $tbmodalidad[2]=$TbMsg[14]; echo '<TD style="width:100">'.$tbmodalidad[$smodalidad].'</TD>'; @@ -234,15 +208,21 @@ if ($opcion!=$op_alta){ ?> </TR> <TR> - <TH align=center> <?echo $TbMsg[16]?> </TH> + <TH align=center> <?echo $TbMsg[15]?> </TH> <?if ($opcion==$op_eliminacion) echo '<TD colspan=5">'.$htmlmenupri.'</TD>'; else echo '<TD colspan=5><INPUT class="formulariodatos" name=htmlmenupri style="width:350" type=text value="'.$htmlmenupri.'"></TD>'; ?> </TR> -<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> </TABLE> +<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> + <br> + <table align="center" border="0" cellpadding="1" cellspacing="1" class="tabla_datos"> + <?php if ($opcion!=$op_eliminacion) + echo '<tr><th align="center"> '.$TbMsg["WARN_NOTESOFMENU"].' </th></th>'; + ?> + </table> </FORM> </DIV> <?php @@ -262,11 +242,7 @@ include_once("../includes/opcionesbotonesop.php"); function TomaPropiedades($cmd,$id){ global $descripcion; global $titulo; - global $coorx; - global $coory; global $modalidad; - global $scoorx; - global $scoory; global $smodalidad; global $comentarios; global $htmlmenupub; @@ -282,11 +258,7 @@ function TomaPropiedades($cmd,$id){ if (!$rs->EOF){ $descripcion=$rs->campos["descripcion"]; $titulo=$rs->campos["titulo"]; - $coorx=$rs->campos["coorx"]; - $coory=$rs->campos["coory"]; $modalidad=$rs->campos["modalidad"]; - $scoorx=$rs->campos["scoorx"]; - $scoory=$rs->campos["scoory"]; $smodalidad=$rs->campos["smodalidad"]; $comentarios=$rs->campos["comentarios"]; $htmlmenupub=$rs->campos["htmlmenupub"]; diff --git a/admin/WebConsole/propiedades/propiedades_repositorios.php b/admin/WebConsole/propiedades/propiedades_repositorios.php index deee1367..0e396ff8 100644 --- a/admin/WebConsole/propiedades/propiedades_repositorios.php +++ b/admin/WebConsole/propiedades/propiedades_repositorios.php @@ -21,8 +21,6 @@ $idrepositorio=0; $nombrerepositorio="";
$ip="";
$puertorepo="2002";
-$pathrepod="/opt/opengnsys/admin";
-$pathpxe="/opt/opengnsys/tftpboot/pxelinux.cfg";
$grupoid=0;
$comentarios="";
$ordenadores=0; // Número de ordenador a los que da servicio
@@ -137,26 +135,6 @@ else{ </TR>
<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
<TR>
- <TH align=center> <?echo $TbMsg[9]?> </TD>
- <?
- if ($opcion==$op_eliminacion)
- echo '<TD colspan=2>'.$pathrepod.'</TD>';
- else
- echo'<TD colspan=2><INPUT class="formulariodatos" name=pathrepod type=text style="width:330" value="'.$pathrepod.'"></TD>';
- ?>
- </TR>
-<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
- <TR>
- <TH align=center> <?echo $TbMsg[10]?> </TD>
- <?
- if ($opcion==$op_eliminacion)
- echo '<TD colspan=2>'.$pathpxe.'</TD>';
- else
- echo'<TD colspan=2><INPUT class="formulariodatos" name=pathpxe type=text style="width:330" value="'.$pathpxe.'"></TD>';
- ?>
- </TR>
-<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
- <TR>
<TH align=center> <?echo $TbMsg[7]?> </TD>
<?
if ($opcion==$op_eliminacion)
@@ -218,8 +196,6 @@ function TomaPropiedades($cmd,$id){ global $ip;
global $comentarios;
global $puertorepo;
- global $pathrepod;
- global $pathpxe;
global $ordenadores;
@@ -240,8 +216,6 @@ function TomaPropiedades($cmd,$id){ $ip=$rs->campos["ip"];
$comentarios=$rs->campos["comentarios"];
$puertorepo=$rs->campos["puertorepo"];
- $pathrepod=$rs->campos["pathrepod"];
- $pathpxe=$rs->campos["pathpxe"];
// $ordenadores=$rs->campos["numordenadores"];
}
$rs->Cerrar();
diff --git a/admin/WebConsole/propiedades/propiedades_usuarios.php b/admin/WebConsole/propiedades/propiedades_usuarios.php index 8ba7762e..1bfb4d84 100644 --- a/admin/WebConsole/propiedades/propiedades_usuarios.php +++ b/admin/WebConsole/propiedades/propiedades_usuarios.php @@ -86,31 +86,31 @@ switch($idtipousuario){ <P align=center class=cabeceras><?echo $TbMsg[4]." (".$litusu.")"?><BR> <SPAN align=center class=subcabeceras><? echo $opciones[$opcion]?></SPAN></P> <TABLE align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos> -<!--------------------------------------------------------------------------------------------------------------------------------------------------> +<!------------------------------------------------ NOMBRE USUARIO --------------------------------------------------------------------------------------------------> <TR> <TH> <?echo $TbMsg[5]?> </TH> - <?if ($opcion==$op_eliminacion || ($opcion==$op_modificacion && $idtipousuario!=$SUPERADMINISTRADOR)){?> - <TD><?echo $usuario?>  <IMG src="<? echo $urlimg ?>"></TD> + <?if ($opcion==$op_eliminacion || $opcion==$op_modificacion && $idusuario==1){?> + <TD><INPUT type=hidden class=cajatexto name="usuario" style="width:100" value="<? echo $usuario?>"></INPUT><?echo $usuario?>  <IMG src="<? echo $urlimg ?>"></TD> <?}else{?> <TD><INPUT type=text class=cajatexto name="usuario" style="width:100" value="<? echo $usuario?>"> <IMG src="<? echo $urlimg ?>"> <?}?> </TR> -<!--------------------------------------------------------------------------------------------------------------------------------------------------> +<!---------------------------------------------------- PASSWORD --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> <TH> <?echo $TbMsg[6]?> </TH> - <?if ($opcion==$op_eliminacion || ($opcion==$op_modificacion && $idtipousuario!=$SUPERADMINISTRADOR)){?> - <TD><?echo $pasguor?></TD> + <?if ($opcion==$op_eliminacion || $opcion==$op_modificacion && $idusuario==1){?> + <TD><INPUT type=hidden class=cajatexto name="pasguor" style="width:100" value="<? echo $pasguor?>"></INPUT><?echo $pasguor?></TD> <?}else{?> <TD><INPUT type=text class=cajatexto name="pasguor" style="width:100" value="<? echo $pasguor?>"> <?}?> </TR> -<!--------------------------------------------------------------------------------------------------------------------------------------------------> +<!--------------------------------------------------- NOMBRE COMPLETO -----------------------------------------------------------------------------------------------> <TR> <TH> <?echo $TbMsg[7]?> </TH> - <?if ($opcion==$op_eliminacion){?> - <TD><?echo $nombre?></TD> + <?if ($opcion==$op_eliminacion || ($opcion==$op_modificacion && $idusuario==1)){?> + <TD><INPUT type=hidden class=cajatexto name="nombre" style="width:250" value="<? echo $nombre?>"></INPUT><?echo $nombre?></TD> <?}else{?> <TD><INPUT type=text class=cajatexto name="nombre" style="width:250" value="<? echo $nombre?>"> <?}?> @@ -138,10 +138,29 @@ switch($idtipousuario){ </TABLE> </FORM> </DIV> + +<?php +if ($idusuario==1){ +///* + + echo '<TABLE id=tabla_conf align=center border=0 cellPadding=1 cellSpacing=1 class=tabla_datos>'; + echo '<TR>'; + echo '</TR>'; + echo '<div onclick=window.open("http://opengnsys.es/wiki/ModificarUsuarios")><TR>'; + echo '<TH align=center > '.$TbMsg[14].$TbMsg[15].$TbMsg[16].$TbMsg[17].'<a color=white href='.$TbMsg[17].' target=blank></a></br>'.$nombreambito.$TbMsg[23].'</br>'.$TbMsg[24].' </TH>'; + echo '</TR></div>'; + echo '</TABLE>'; + +//*/ +} +?> <? +if ($opcion==$op_eliminacion && $idusuario==1) +{}else{ //________________________________________________________________________________________________________ include_once("../includes/opcionesbotonesop.php"); //________________________________________________________________________________________________________ +} ?> </BODY> </HTML> diff --git a/admin/WebConsole/validacion/functions.php b/admin/WebConsole/validacion/functions.php index c605c9eb..0d23c195 100644 --- a/admin/WebConsole/validacion/functions.php +++ b/admin/WebConsole/validacion/functions.php @@ -55,8 +55,8 @@ function TomaPropiedades($cmd){ //___________________________________________________________________________________________________ function RecuperaMenu($cmd,$iph){ $rs=new Recordset; - $cmd->texto="SELECT menus.idcentro,menus.resolucion,menus.titulo,menus.idurlimg,menus.coorx,menus.coory, - menus.modalidad,menus.scoorx,menus.scoory,menus.smodalidad,menus.htmlmenupub,menus.htmlmenupri, + $cmd->texto="SELECT menus.idcentro,menus.resolucion,menus.titulo,menus.idurlimg, + menus.modalidad,menus.smodalidad,menus.htmlmenupub,menus.htmlmenupri, acciones_menus.tipoaccion,acciones_menus.idaccionmenu,acciones_menus.idtipoaccion, acciones_menus.tipoitem,acciones_menus.descripitem,iconos.urlicono FROM ordenadores @@ -81,13 +81,8 @@ function GeneraMenu($rs,$tipo,$iph){ global $UrlPaginaIconos; $titulo=$rs->campos["titulo"]; - $coorx=$rs->campos["coorx"]; - $coory=$rs->campos["coory"]; $modalidad=$rs->campos["modalidad"]; - $scoorx=$rs->campos["scoorx"]; - $scoory=$rs->campos["scoory"]; $smodalidad=$rs->campos["smodalidad"]; - $scoory=$rs->campos["scoory"]; $resolucion=$rs->campos["resolucion"]; $htmlmenupub=$rs->campos["htmlmenupub"]; $htmlmenupri=$rs->campos["htmlmenupri"]; @@ -98,8 +93,7 @@ function GeneraMenu($rs,$tipo,$iph){ $mod=$modalidad; $codeHTML=""; - // Genera HTML de la p�ina en funci� de las propiedades del Men del clioente - //$codeHTML.='<DIV style="POSITION:absolute;TOP:'.$coory."px;LEFT:".$coorx.'px">'; + // Genera HTML de la página en función de las propiedades del menú del cliente. $codeHTML.='<P align=center>'; $codeHTML.='<SPAN style="COLOR: #999999;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE: 20px;"><U>'.$titulo.'</U></SPAN>'; $codeHTML.='</BR>'; diff --git a/admin/WebConsole/varios/informacion_repositorios.php b/admin/WebConsole/varios/informacion_repositorios.php index 22174c3d..40e6b819 100644 --- a/admin/WebConsole/varios/informacion_repositorios.php +++ b/admin/WebConsole/varios/informacion_repositorios.php @@ -1,4 +1,4 @@ -<? +<?php // ************************************************************************************************************************************************* // Aplicación WEB: ogAdmWebCon // Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla @@ -41,13 +41,13 @@ $arbol=new ArbolVistaXml($arbolXML,0,$baseurlimg,$clasedefault,1,20,130,1,$titul </HEAD> <BODY> <P align=center class=cabeceras><?echo $TbMsg[0]?><BR> - <SPAN align=center class=subcabeceras><?echo $TbMsg[1]?></SPAN> <IMG src="../images/iconos/repositorios.gif"><BR><BR> + <SPAN align=center class=subcabeceras><?echo $TbMsg[1]?></SPAN> <IMG src="../images/iconos/repositorio.gif"><BR><BR> <IMG src="../images/iconos/repositorio.gif"><SPAN class=presentaciones> <U><?echo $TbMsg[2]?></U>:<? echo $descripcionrepositorio?></SPAN></P> <?echo $arbol->CreaArbolVistaXml(); // Crea arbol de configuraciones?> </BODY> </HTML> -<? +<?php /************************************************************************************************************************************************** Devuelve una cadena con formato XML de toda la información de los repositorios Parametros: @@ -145,7 +145,6 @@ function SubarbolXML_ImagenesDisponibles($cmd,$idrepositorio) global $TbMsg; $cadenaXML=""; - $gidimagen=0; $cmd->texto="SELECT DISTINCT imagenes.* FROM imagenes WHERE imagenes.idrepositorio=".$idrepositorio." @@ -161,21 +160,13 @@ function SubarbolXML_ImagenesDisponibles($cmd,$idrepositorio) $cadenaXML.='>'; } while (!$rs->EOF){ - if ($gidimagen!=$rs->campos["idperfilsoft"]){ - if ($gidimagen){ - $cadenaXML.='</IMAGENES>'; - } - $gidimagen=$rs->campos["idperfilsoft"]; - $cadenaXML.='<IMAGENES'; - // Atributos - $cadenaXML.=' imagenodo="../images/iconos/imagenes.gif"'; - $cadenaXML.=' infonodo="'.$rs->campos["descripcion"].'"'; - $cadenaXML.='>'; - } + $cadenaXML.='<IMAGENES'; + $cadenaXML.=' imagenodo="../images/iconos/imagenes.gif"'; + $cadenaXML.=' infonodo="'.$rs->campos["descripcion"].' ('.$TbMsg["IMGTYPE".$rs->campos["tipo"]].')"'; + $cadenaXML.='</IMAGENES>'; $rs->Siguiente(); } - if ($gidimagen){ - $cadenaXML.='</IMAGENES>'; + if ($rs->numeroderegistros>0) { $cadenaXML.='</DISPONIBLESIMAGENES>'; } $rs->Cerrar(); diff --git a/admin/WebConsole/varios/menucliente.php b/admin/WebConsole/varios/menucliente.php index b7694993..daaf76c6 100644 --- a/admin/WebConsole/varios/menucliente.php +++ b/admin/WebConsole/varios/menucliente.php @@ -50,7 +50,15 @@ else{ $gestor = fopen($nombre_archivo, 'r'); $contenidofichero = fread($gestor, filesize($nombre_archivo)); fclose($gestor); - if (! empty ($contenidofichero)) { + if (empty ($contenidofichero)) { + // Sin caché local. + $cmd->texto="UPDATE ordenadores_particiones + SET cache='' + WHERE idordenador=(SELECT idordenador + FROM ordenadores + WHERE ip='".$iph."')"; + } else { + // Actualizar datos de caché local. $cmd->texto="UPDATE ordenadores_particiones SET cache='".$contenidofichero."' WHERE idordenador=(SELECT idordenador @@ -59,8 +67,8 @@ else{ AND idsistemafichero=(SELECT idsistemafichero FROM sistemasficheros WHERE descripcion='CACHE')"; - $resul=$cmd->Ejecutar(); } + $resul=$cmd->Ejecutar(); //agp //________________________________________________________________________________________________________ $rsmenu=RecuperaMenu($cmd,$iph); // Recupera un recordset con los datos del m en @@ -69,7 +77,7 @@ else{ case $ITEMS_PUBLICOS: if(!empty($rsmenu->campos["htmlmenupub"])){ $urlHtml=$rsmenu->campos["htmlmenupub"]; - if(strtoupper(substr($urlHtml,0,7))!="HTTP://") $urlHtml="http://".$urlHtml; + //if(strtoupper(substr($urlHtml,0,7))!="HTTP://") $urlHtml="http://".$urlHtml; Header('Location: '.$urlHtml); // Url del menu personalizado } else{ @@ -82,7 +90,7 @@ else{ if(!empty($rsmenu->campos["htmlmenupri"])){ $urlHtml=$rsmenu->campos["htmlmenupri"]; - if(strtoupper(substr($urlHtml,0,7))!="HTTP://") $urlHtml="http://".$urlHtml; + //if(strtoupper(substr($urlHtml,0,7))!="HTTP://") $urlHtml="http://".$urlHtml; Header('Location: '.$urlHtml); // Url del menu personalizado } else{ diff --git a/client/boot-tools/INSTALL.es.txt b/client/boot-tools/INSTALL.es.txt index 3b7cd89d..afbf1de8 100644 --- a/client/boot-tools/INSTALL.es.txt +++ b/client/boot-tools/INSTALL.es.txt @@ -23,7 +23,7 @@ mv /opt/opengnsys/tftpboot/ogclient /opt/opengnsys/tftpboot/ogclient-old; #1. Descargar del Subversion las herramientas del cliente apt-get install subversion wget -svn checkout http://www.opengnsys.es/svn/branches/version1.0/client /tmp/opengnsys_installer/opengnsys/client/; +svn checkout http://www.opengnsys.es/svn/branches/version1.1/client /tmp/opengnsys_installer/opengnsys/client/; find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null; #2. Ejecutar el instalador: diff --git a/client/boot-tools/boottoolsfunctions.lib b/client/boot-tools/boottoolsfunctions.lib index 936b02a7..5027c650 100755 --- a/client/boot-tools/boottoolsfunctions.lib +++ b/client/boot-tools/boottoolsfunctions.lib @@ -92,7 +92,7 @@ case "${1,,}" in export OSHTTP="http://es.archive.ubuntu.com/ubuntu/" ;; esac -SVNURL="http://opengnsys.es/svn/branches/version1.0/client" +SVNURL="http://opengnsys.es/svn/branches/version1.1/client" VERSIONSVN=$(LANG=C svn info $SVNURL | awk '/Rev:/ {print "r"$4}') NAMEISOCLIENT="$VERSIONBOOTTOOLS-$OSCODENAME-$OSRELEASE-$VERSIONSVN" NAMEHOSTCLIENT="$VERSIONBOOTTOOLS-$OSCODENAME-$VERSIONSVN" diff --git a/client/boot-tools/includes/etc/initramfs-tools/scripts/ogfunctions b/client/boot-tools/includes/etc/initramfs-tools/scripts/ogfunctions index 56b5187e..991ec890 100644 --- a/client/boot-tools/includes/etc/initramfs-tools/scripts/ogfunctions +++ b/client/boot-tools/includes/etc/initramfs-tools/scripts/ogfunctions @@ -74,6 +74,8 @@ ogExportVarEnvironment () { export CFGINITRD="/tmp/initrd.cfg" OGPROTOCOL="${ogprotocol:-smb}" + # OPTIONS Para samba y local (a nfs no le afecta) + export OPTIONS=" -o user=opengnsys,pass=og" case "$OGPROTOCOL" in nfs|NFS) export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD @@ -82,14 +84,17 @@ ogExportVarEnvironment () export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD ;; smb|SMB|cifs|CIFS|samba|SAMBA) - export OPTIONS=" -o user=opengnsys,pass=og" export SRCOGLIVE="tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD ;; local|LOCAL) + # Ponemos variables SRC compatibles con smb y nfs. export SRCOGLIVE="local" + export SRCOGSHARE="client" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD + export SRCOGLOG="log" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD + export SRCOGIMAGES="images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD ;; esac #punto de acceso al boot-tools live @@ -214,8 +219,39 @@ ogPostConfigureFS() #enlace si iniciamos desde ogprotocolo=local { cdrom, usb, cache } . # monta el raiz del dispositivo local en /opt/og2fs/tftpboot - acceso al fichero .sqfs # y monta el sistema root sqfs en /opt/og2fs/2ndfs - [ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache - [ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/ + #[ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache + #[ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/ + if [ "$ogprotocol" == "local" ]; then + # Creamos los subdirectorios de /opt/opengnsys/ + [ "$ogstatus" == "offline" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/ + # Montamos CACHE + # Si existe particion identificada como CACHE se monta. + DEVICECACHE=$(blkid -L "CACHE") + if [ "$DEVICECACHE" != "" ]; then + # Se monta diferente segun el dispositivo de cache igual o no al de ogclient. + DEVICEOGLIVE=$(df |grep $DSTOGLIVE|awk '{print $1}') + if [[ "$DEVICECACHE" == "*$DEVICEOGLIVE*" ]];then + mount --bind $DSTOGLIVE /opt/opengnsys/cache + else + mount $DEVICECACHE /opt/opengnsys/cache + fi + if [ "$ogstatus" == "offline" ]; then + [ -d /opt/opengnsys/cache/log ] || mkdir /opt/opengnsys/cache/log + mount --bind /opt/opengnsys/cache/log /opt/opengnsys/log + fi + fi + # Montamos REPO + if [ "$ogstatus" == "offline" ]; then + # Si estatus distinto de online buscamos un dispositivo con etiqueta repo + # y si no existe montamos la cache como repo (si existe). + TYPE=$(blkid | grep REPO | awk -F"TYPE=" '{print $2}' | tr -d \") + if [ "$TYPE" == "" ]; then + [ -d "/opt/opengnsys/cache$DSTOGIMAGES" ] && mount --bind /opt/opengnsys/cache$DSTOGIMAGES $DSTOGIMAGES + else + mount -t $TYPE LABEL=REPO $DSTOGIMAGES &>/dev/null + fi + fi + fi #Montamos un directorio temporal para el apt-get mount tmpfs /var/cache/apt/archives -t tmpfs -o size=15M @@ -361,6 +397,17 @@ ogConnect () smb) mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS}${READONLY} ;; + local) + # Comprobamos que estatus sea online y que la variable del server no esta vacia. + if [ "$ogstatus" != "offline" -a "$SERVER" != "" -a "$SRC" != "" ]; then + # Comprobamos que existe un servicio de samba. + smbclient -L $SERVER -N &>/dev/null + if [ $? -eq 0 ]; then + mount.cifs //${SERVER}/og${SRC} ${DST} ${OPTIONS}${READONLY} + fi + # TODO: buscar condicion para NFS + fi + ;; esac } @@ -387,11 +434,11 @@ ogConnectOgLive () then # Si local es particion CACHE es identificada como CACHE mount LABEL=CACHE $DSTOGLIVE - export LOCALMEDIA=CACHE + #export LOCALMEDIA=CACHE fi else -# Si ogprotocol es remoto. TODO en smb rw y en nfs ro?? - ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE + # Si ogprotocol es remoto. TODO en smb rw y en nfs ro?? + ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE fi # Si el montaje ha sido correcto, tanto en local como en remoto. Procedemos con la union ogMergeLive diff --git a/client/boot-tools/ogclientImg2Sqfs b/client/boot-tools/ogclientImg2Sqfs new file mode 100755 index 00000000..5dfb2b00 --- /dev/null +++ b/client/boot-tools/ogclientImg2Sqfs @@ -0,0 +1,55 @@ +#!/bin/bash +#/** +#@brief Comprime el fichero ogclient.img en ogclient.sqfs. +#@param none +#@exeption 1 No es usuario root +#@exeption 2 No existe el fichero ogclient.img +#@date 2013-11.27 +#*/ +PROG="$(basename $0)" +# Mostrar ayuda: Si se solicita, si faltan parametros o $3 no es SYNC1 o SYNC2. +if [ "$*" == "help" ]; then + echo -e "$PROG: Comprime el fichero ogclient.img en ogclient.sqfs. \n" + " Uso: $PROG (sin parametros)" + exit 0 +fi + +if [ "$USER" != "root" ]; then + echo "$PROG: Error: solo ejecutable por root" >&2 + exit 1 +fi + + +DATE=$(date +%y-%m-%d) +OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} +OGCLIENTBASEDIR=$OPENGNSYS/tftpboot/ogclient/; +OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img; +OGCLIENTSQFS=${OGCLIENTBASEDIR}ogclient.sqfs +OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount; +OGCLIENTSIZEMB=1900; +OGCLIENTLABEL=ogClient; + +# Comprobamos que existe el cliente .sqfs +! [ -f $OGCLIENTFILE -a -d $OGCLIENTMOUNT ] && echo "No existe $OGCLIENTFILE o $OGCLIENTMOUNT" && exit 3 +# Montamos ogclient.img. +echo "Montamos ogclient.img." +mkdir -p $OGCLIENTMOUNT; +mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256; + +# Si existe ogclient.sqfs hacemos copia de seguridad. +echo "Si existe ogclient.sqfs hacemos copia de seguridad." +[ -f ${OGCLIENTSQFS} ] && mv ${OGCLIENTSQFS} ${OGCLIENTSQFS}.$DATE + +# Comprimimos el cliente. +echo "Comprimimos el cliente." +echo "mksquashfs $OGCLIENTMOUNT ${OGCLIENTSQFS}" +mksquashfs $OGCLIENTMOUNT ${OGCLIENTSQFS} + +# Desmontamos el ogclient.img +echo "Desmontamos el ogclient.img" +umount $OGCLIENTMOUNT + +# Generamos nuevo archivo de suma de comprobación. +echo "Generamos nuevo archivo de suma de comprobacion." +mv ${OGCLIENTSQFS}.sum ${OGCLIENTSQFS}.sum.$DATE +md5sum ${OGCLIENTSQFS} |awk '{print $1}' >${OGCLIENTSQFS}.sum diff --git a/client/boot-tools/ogclientSqfs2Img b/client/boot-tools/ogclientSqfs2Img new file mode 100755 index 00000000..4f8447da --- /dev/null +++ b/client/boot-tools/ogclientSqfs2Img @@ -0,0 +1,120 @@ +#!/bin/bash +#/** +#@brief Descomprime el fichero ogclient.sqfs en ogclient.img con un formato donde podemos escribir. +#@param none +#@note Copiado del wiki: http://opengnsys.es/wiki/ClienteInitrdDSGenerarlo +#@note para "entrar" en ogclient: schroot -c ogclient.img o mount ogclient.img ogclientmount -o loop,offset=32256 +#@exeption 1 No es usuario root +#@exeption 2 No existe el fichero ogclient.sqfs +#@date 2013-11.27 +#*/ +PROG="$(basename $0)" +# Mostrar ayuda si se solicita. +if [ "$*" == "help" ]; then + echo -e "$PROG: Descomprime el fichero ogclient.sqfs en ogclient.img con un formato donde podemos escribir. \n" \ + " Uso: $PROG (sin parametros)" + exit 0 +fi + +if [ "$USER" != "root" ]; then + echo "$PROG: Error: solo ejecutable por root" >&2 + exit 1 +fi + + + +DATE=$(date +%y-%m-%d) +OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} +OGCLIENTBASEDIR=$OPENGNSYS/tftpboot/ogclient/; +OGCLIENTSQFS=${OGCLIENTBASEDIR}ogclient.sqfs +OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img; +OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount; +OGCLIENTSIZEMB=1900; +OGCLIENTLABEL=ogClient; + +# Comprobamos que existe el cliente .sqfs +! [ -f $OGCLIENTSQFS ] && echo "No existe $OGCLIENTSQFS" && exit 3 + +# instalamos los paquetes necesarios. +echo "Si no existen, instalamos los paquetes necesarios: squashfs-tools schroot." +if ! which schroot unsquashfs 2>&1 >/dev/null; then + apt-get update + apt-get -y install squashfs-tools schroot +fi + +# Creamos el archivo. +echo -e "\nCreamos el archivo." +echo dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB; +dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB; +DISKLOOP=$(losetup -f); +losetup $DISKLOOP $OGCLIENTFILE; +echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP; +losetup -d $DISKLOOP ; + +# Creamos el sistema de ficheros. +echo "Creamos el sistema de ficheros." +echo "mkfs.ext4 -b 4096 -L $OGCLIENTLABEL $PARTLOOP" +PARTLOOP=$(losetup -f); +losetup -o 32256 $PARTLOOP $OGCLIENTFILE && mkfs.ext4 -b 4096 -L $OGCLIENTLABEL $PARTLOOP; +losetup -d $PARTLOOP ; + +# Descomprimimos el ogclient.sqfs en el sistema de ficheros. +mkdir -p $OGCLIENTMOUNT; +echo "Descomprimimos el ogclient.sqfs en el sistema de ficheros." +mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256; +echo "unsquashfs -d ${OGCLIENTMOUNT}/ -f $OGCLIENTSQFS" +unsquashfs -d ${OGCLIENTMOUNT}/ -f $OGCLIENTSQFS +umount $OGCLIENTMOUNT; + +# Creamos los archivos de configuracion de schroot. +echo "Creamos los archivos de configuracion de schroot." +cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.$DATE +cat << EOF > /etc/schroot/schroot.conf +[ogclient.img] +type=loopback +file=${OGCLIENTBASEDIR}ogclient.img +description=ogclient ubuntu luc IMGi +#priority=1 +users=root +groups=root +root-groups=root +mount-options=-o offset=32256 +root-users=root +#[DIRogclient] +#type=directory +#directory=${OGCLIENTBASEDIR}ogclientmount +#description=ogclient ubuntu lucid DIR +#priority=2 +#users=root +#groups=root +#root-groups=root +#root-users=root +EOF + +cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.$DATE +cat << EOF > /etc/schroot/mount-defaults +# mount.defaults: static file system information for chroots. +# Note that the mount point will be prefixed by the chroot path +# (CHROOT_PATH) +# +# <file system> <mount point> <type> <options> <dump> <pass> +proc /proc proc defaults 0 0 +#procbususb /proc/bus/usb usbfs defaults 0 0 +/dev /dev none rw,bind 0 0 +/dev/pts /dev/pts none rw,bind 0 0 +/dev/shm /dev/shm none rw,bind 0 0 +#/home /home none rw,bind 0 0 +/tmp /tmp none rw,bind 0 0 +EOF + +# Si existen dispositivos loop los eliminamos. +echo "Si existen dispositivos loop los eliminamos." +LOOPDEVICES=$(losetup -a|grep $OGCLIENTFILE |cut -d: -f1) +for DEVICE in $LOOPDEVICES +do + echo "losetup -d $DEVICE" + losetup -d $DEVICE +done + +echo -e "Para \"entrar\" en ogclient: \n \t schroot -c ogclient.img o \n \t mount ogclient.img ogclientmount -o loop,offset=32256" +echo "El servicio schroot montará el cliente automaticamente, si no queremos que pase hay que apagarlo." diff --git a/client/engine/Boot.lib b/client/engine/Boot.lib index 47a6f420..ea3badb7 100755 --- a/client/engine/Boot.lib +++ b/client/engine/Boot.lib @@ -990,11 +990,12 @@ rm -f ${MNTDIR}/etc/udev/rules.d/70-persistent-net.rules } #/** -# ogGrubAddOgclient num_disk num_part [ timeout ] +# ogGrubAddOgclient num_disk num_part [ timeout ] [ offline ] #@brief Crea entrada de menu grub para ogclient, tomando como paramentros del kernel los actuales del cliente. #@param 1 Numero de disco #@param 2 Numero de particion -#@param 3 timeout: Segundos de espera para iniciar el sistema operativo por defecto. +#@param 3 timeout Segundos de espera para iniciar el sistema operativo por defecto (opcional) +#@param 4 offline configura el modo offline [offline|online] (opcional) #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND No existe kernel o initrd en cache. @@ -1003,18 +1004,19 @@ rm -f ${MNTDIR}/etc/udev/rules.d/70-persistent-net.rules #*/ ogGrubAddOgclient () { - local TIMEOUT DIRMOUNT GRUBGFC PARTTABLETYPE NUMDISK NUMPART KERNEL NUMLINE MENUENTRY + local TIMEOUT DIRMOUNT GRUBGFC PARTTABLETYPE NUMDISK NUMPART KERNEL STATUS NUMLINE MENUENTRY # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition time_out" \ - "$FUNCNAME 1 6 15" + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition [ time_out ] [ offline|online ] " \ + "$FUNCNAME 1 1" \ + "$FUNCNAME 1 6 15 offline" return fi # Error si no se reciben 2 parámetros. [ $# -lt 2 ] && return $(ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME num_disk num_part [ timeout ]"; echo $?) - TIMEOUT="$3" + [[ "$3" =~ ^[0-9]*$ ]] && TIMEOUT="$3" # Error si no existe el kernel y el initrd en la cache. # Falta crear nuevo codigo de error. @@ -1038,6 +1040,12 @@ ogGrubAddOgclient () { let NUMDISK=$NUMDISK-1 # kernel y sus opciones. Pasamos a modo usuario KERNEL="/boot/ogvmlinuz $(sed -e s/^.*linuz//g -e s/ogactiveadmin=true/ogactiveadmin=false/g /proc/cmdline)" + + # Configuracion offline si existe parametro + echo "$@" |grep offline &>/dev/null && STATUS=offline + echo "$@" |grep online &>/dev/null && STATUS=online + [ -z "$STATUS" ] || KERNEL="$(echo $KERNEL | sed s/"ogprotocol=[a-z]* "/"ogprotocol=local "/g ) ogstatus=$STATUS" + # Numero de línea de la primera entrada del grub. NUMLINE=$(grep -n -m 1 "^menuentry" $GRUBGFC|cut -d: -f1) # Texto de la entrada de opengnsys diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib index d3e164d6..257c5a23 100755 --- a/client/engine/FileSystem.lib +++ b/client/engine/FileSystem.lib @@ -227,7 +227,7 @@ esac function ogFormatFs () { # Variables locales -local PART ID TYPE LABEL PROG PARAMS LABELPARAM ERRCODE +local PART TYPE LABEL PROG PARAMS LABELPARAM ERRCODE # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -244,7 +244,7 @@ fi PART="$(ogDiskToDev $1 $2)" || return $? # Error si la partición está montada o bloqueada. if ogIsMounted $1 $2; then - ogRaiseError $OG_ERR_PARTITION "$1 $2" # Indicar nuevo error + ogRaiseError $OG_ERR_DONTFORMAT "$MSG_MOUNT: $1 $2" return $? fi if ogIsLocked $1 $2; then @@ -384,7 +384,7 @@ echo ${SIZE%.0*} function ogGetFsType () { # Variables locales. -local PART ID TYPE +local PART TYPE # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_nfilesys" \ @@ -396,16 +396,13 @@ fi # Detectar tipo de sistema de archivo (independientemente del tipo de partición). PART=$(ogDiskToDev "$1" "$2") || return $? -TYPE=$(blkid -o export $PART | awk -F= '$1~/^TYPE/ { print toupper($2) }') +TYPE=$(blkid -o export $PART | awk -F= '$1=="TYPE" { print toupper($2) }') # Componer valores correctos. case "$TYPE" in EXT4) # Comprobar si es caché o Ext4. - if [ "$1 $2" == "$(ogFindCache)" ]; then - ogIsFormated $1 $2 2>/dev/null && TYPE="CACHE" - fi - ;; - VFAT) TYPE="$(blkid -po export $PART | awk -F= '$1~/^VERSION$/ { print toupper($2) }')" ;; + [ "$1 $2" == "$(ogFindCache)" ] && TYPE="CACHE" ;; + VFAT) TYPE="$(blkid -po export $PART | awk -F= '$1=="VERSION" { print toupper($2) }')" ;; SWAP) TYPE="LINUX-SWAP" ;; LVM*) TYPE="LINUX-LVM" ;; *RAID*) TYPE="LINUX-RAID" ;; diff --git a/client/engine/Inventory.lib b/client/engine/Inventory.lib index 03e9b589..4cbdcabb 100755 --- a/client/engine/Inventory.lib +++ b/client/engine/Inventory.lib @@ -68,7 +68,7 @@ ogGetOsVersion "$@" | cut -sf1 -d: #@version 1.0.5 - Incluir tipos GrubLoader, Hurd y WinLoader, leer por defecto fichero /etc/os-release. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2013-10-07 -#@version 1.0.6 - Detectar GrubLoader al final. +#@version 1.0.6 - Detectar GrubLoader al final y sistemas basados en EFI. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2014-08-27 #*/ ## @@ -133,12 +133,11 @@ fi if [ -z "$VERSION" ]; then TYPE="WinLoader" FILE="$(ogGetPath $MNTDIR/boot/bcd)" + [ -z "$FILE" ] && FILE="$(ogGetPath $MNTDIR/EFI/Microsoft/boot/bcd)" if [ -n "$FILE" ]; then - for DISTRIB in "Windows 8" "Windows 7" "Windows Vista" \ - "Windwos Server 2008" "Windwos Server 2008 R2" \ - "Windwos Recovery Environment"; do + for DISTRIB in "Windows Recovery" "Windows Boot"; do if grep -qs "$(echo "$DISTRIB" | sed 's/./&./g')" $FILE; then - VERSION="$DISTRIB loader" + VERSION="$DISTRIB loader" fi done fi diff --git a/client/engine/Protocol.lib b/client/engine/Protocol.lib index 75755fa4..8c0b4c61 100755 --- a/client/engine/Protocol.lib +++ b/client/engine/Protocol.lib @@ -984,8 +984,8 @@ ctorrent -t `basename $SOURCE` -u http://$IPTORRENT:6969/announce -s $SOURCE.tor #@param 1 str_REPO #@param 2 str_Relative_path_file_OGIMG_with_/ #@param 3 md5 to check: use full to check download image torrent -#@return 0 (true)si es necesario actualizar el fichero. -#@return 1 (false) si la imagen ya esta en la cache, por lo tanto no es necesario actualizar el fichero +#@return 0 (true) cache sin imagen, SI es necesario actualizar el fichero. +#@return 1 (false) imagen en la cache, NO es necesario actualizar el fichero #@return >1 (false) error de sintaxis (TODO) #@note #@todo: Proceso en el caso de que el fichero tenga el mismo nombre, pero su contenido sea distinto. @@ -1016,37 +1016,34 @@ fi #Control de la cache ogFindCache || return $(ogRaiseError $OG_ERR_NOTCACHE; echo $?) - -#TODO: return 0->true, 1->false; si error, aunque sintaxis devuelve > 1 - #Control de parametros: ahora admite tres. [ $# > "3" ] || return $(ogRaiseError $OG_ERR_NOTFOUND " $1 $2"; echo $?) ogCheckStringInGroup "$1" "REPO repo" || return $(ogRaiseError $OG_ERR_NOTFOUND " $1 $2"; echo $?) FILESOURCE=`ogGetPath $1 $2` || return $(ogRaiseError $OG_ERR_NOTFOUND " $1 $2"; echo $?) -#echo "paso 1. si no existe la imagen, confirmamos que es necesaria la actualizacion de la cache." +#echo "paso 1. si no existe la imagen, confirmar que es necesario actualizar la cache." FILETARGET=`ogGetPath CACHE $2` if [ -z $FILETARGET ] then # borramos el fichero bf del torrent, en el caso de que se hubiese quedado de algun proceso fallido - ogDeleteFile CACHE "/$2.torrent.bf" &> /dev/null - ogDeleteFile CACHE "/$2.sum" &> /dev/null - ogDeleteFile CACHE "/$2.full.sum" &> /dev/null - echo "TRUE=0, es necesario actualizar. Paso 1, la cache no contiene esa imagen " + ogGetPath CACHE "/$2.torrent.bf" && ogDeleteFile CACHE "/$2.torrent.bf" &> /dev/null + ogGetPath CACHE "/$2.sum" && ogDeleteFile CACHE "/$2.sum" &> /dev/null + ogGetPath CACHE "/$2.full.sum" && ogDeleteFile CACHE "/$2.full.sum" &> /dev/null + echo "TRUE(0), es necesario actualizar. Paso 1, la cache no contiene esa imagen " return 0 fi #echo "Paso 2. Comprobamos que la imagen no estuviese en un proceso previo torrent" if ogGetPath $FILETARGET.torrent.bf > /dev/null then - #TODO: comprobar los md5 para asegurarnos que la imagen es la misma. - echo "TRUE=0, es necesario actualizar. Paso 2, la imagen esta en un estado de descarga torrent interrumpido" + #TODO: comprobar los md5 del fichero .torrent para asegurarnos que la imagen a descarga es la misma. + echo "TRUE(0), es necesario actualizar. Paso 2, la imagen esta en un estado de descarga torrent interrumpido" return 0 fi ## En este punto la imagen en el repo y en la cache se llaman igual, -#echo "paso 4. recuperamos o calculamos los md5 de los ficheros segun PROTOCOLO" +#echo "paso 4. Obtener los md5 del fichero imagen en la cacha segun PROTOCOLO $3" case "$3" in full|FULL|torrent|TORRENT) #Buscamos MD5 en el REPO SOURCE @@ -1087,15 +1084,15 @@ case "$3" in fi esac -#echo "Paso 5. comparamos los md5" -#TODO: que hacer cuando los md5 son distintos. Por defecto borrar. +#echo "Paso 5. comparar los md5" if [ "$MD5SOURCE" == "$MD5TARGET" ] then - echo "FALSE=1, No es neceario actualizar. Paso5.A la imagen esta en cache" + echo "FALSE (1), No es neceario actualizar. Paso5.A la imagen esta en cache" return 1 else - echo "TRUE=0, Si es necesario actualizar. paso 5.b la imagen en cache es distinta, borramos la imagen anterior y devolvemos 0 para confirmar la actualizacion" - rm -f $FILETARGET $FILETARGET.sum $FILETARGET.torrent + echo "imagen en cache distinta, borramos la imagen anterior" + rm -f $FILETARGET $FILETARGET.sum $FILETARGET.torrent $FILETARGET.full.sum + echo "TRUE (0), Si es necesario actualizar." return 0 fi } diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib index 3435a119..70f5bbcc 100755 --- a/client/engine/Rsync.lib +++ b/client/engine/Rsync.lib @@ -100,7 +100,7 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then #Formateamos imagen losetup $LOOPDEVICE $IMGFILE # FS de la imagen segun la configuracion y la version del kernel: < 3.7 ext4, si >= btrfs - [ $KERNELVERSION \< 3.07 ] && IMGFS = "EXT4" || IMGFS=${IMGFS:-"BTRFS"} + [ $KERNELVERSION \< 3.07 ] && IMGFS="EXT4" || IMGFS=${IMGFS:-"BTRFS"} if [ "$IMGFS" == "EXT4" ]; then echo " mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE" @@ -195,7 +195,7 @@ SIZEDATA=${SIZEDATA:-"SIZEDATA"} # Incluimos información de la imagen. Segun el kernel sera ext4 o btrfs. KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}') -[ $KERNELVERSION \< 3.07 ] && IMGFS = "EXT4" || IMGFS=${IMGFS:-"BTRFS"} +[ $KERNELVERSION \< 3.07 ] && IMGFS="EXT4" || IMGFS=${IMGFS:-"BTRFS"} echo "#$IMGFS:NO:$FSTYPE:$SIZEDATA" > $IMGINFO if [ "$IMGTYPE" == "img" ]; then @@ -241,14 +241,14 @@ fi #/** # ogAclFilter -#@brief Del fichero de acl de la partición extraemos las acl de los ficheros de la diferencial +#@brief Del fichero de acl de la partición extraemos las acl de los ficheros de la diferencial (falla: no se usa) #@param No. #@return (nada) #*/ function ogAclFilter () { local IMGACL IMGINFO FILES ACLTMP -# Ayuda o menos de 5 parametros y la imagen no es basica +# Ayuda if [ "$*" == "help" ]; then ogHelp "$MSG_HELP_ogAclFilter" \ "$FUNCNAME [ no parameters ] " @@ -267,14 +267,12 @@ ACLFILES="/tmp/aclfiles$$" echo "" > $ACLTMP grep -n -e "File" -e "Directory" $IMGACL > $ACLFILES -# Al fichero le quitamos las líneas sobrantes: comentarios y lineas vacias. -sed -e s/"^#.*$"//g $IMGINFO > $FILES -sed -i '/^$/d' $FILES +# Al listado de ficheros le quitamos las líneas sobrantes: comentarios y lineas vacias. +sed -e s/"^#.*$"//g -e '/^$/d' $IMGINFO > $FILES # Recorremos el listado y extraemos la acl correspondiente al fichero o directorio. while read LINE; do - #read END INI <<< "$(grep -n -e "File" -e "Directory" $IMGACL| grep -A 1 "$LINE"| awk -F : '!(NR%2){print $1" "p}{p=$1}' )" read END INI <<< "$(grep -A 1 "$LINE" $ACLFILES | awk -F : '!(NR%2){print $1" "p}{p=$1}' )" let NUM=$END-$INI-1 # Si algún archivo no se encuentra, el error lo mandamos a /dev/null @@ -316,12 +314,16 @@ DEST=$(ogMount $1 $2) || return $? IMGACL="ogimg.acl" IMGLN="ogimg.ln" +IMGINFO="ogimg.info" + +# Copiamos informacion de la imagen a /tmp (para basicas) +[ -r $DEST/$IMGACL ] && cp $DEST/ogimg.* /tmp #Creamos o modificamos los enlaces. # La imagen diferencial tiene ogimg.ln # para la completa lo generamos con los enlaces que contengan /mnt/ -[ -r "$DEST/$IMGLN" ] || grep -e "->" -e "=>" "$DEST/ogimg.info"|grep "/mnt/" > "$DEST/$IMGLN" -if [ $(wc -l "$DEST/$IMGLN"|cut -f1 -d" ") -ne 0 ]; then +[ -r "/tmp/$IMGLN" ] || grep -e "->" -e "=>" "/tmp/$IMGINFO"|grep "/mnt/" > "/tmp/$IMGLN" +if [ $(wc -l "/tmp/$IMGLN"|cut -f1 -d" ") -ne 0 ]; then while read LINEA do ORIGLN="${LINEA#*> }" @@ -342,15 +344,26 @@ if [ $(wc -l "$DEST/$IMGLN"|cut -f1 -d" ") -ne 0 ]; then rm -f "$(basename "$DESTLN")" ln $OPTLN "$ORIGLN" "$(basename "$DESTLN")" echo -n "." - done < "$DEST/$IMGLN" 2>/dev/null + done < "/tmp/$IMGLN" 2>/dev/null echo "" fi +cd / +} +#/** +# ogRestoreAclImage +#@brief Restaurar las ACL. La informacion esta ya copiada al directorio /tmp +#@param 1 num_disk +#@param 2 num_part +#*/ +function ogRestoreAclImage () { +local PART IMGACL +PART=$(ogDiskToDev "$1" "$2") || return $? +IMGACL="ogimg.acl" # Restauramos acl -if [ "$(ogGetFsType $1 $2)" == "NTFS" -a -f "$DEST/$IMGACL" ] ; then +if [ "$(ogGetFsType $1 $2)" == "NTFS" -a -f "/tmp/$IMGACL" ] ; then cd / - cp "$DEST/$IMGACL" /tmp ogUnmount "$1" "$2" echo "ntfs-3g.secaudit -se $PART /tmp/$IMGACL" ntfs-3g.secaudit -se $PART /tmp/$IMGACL @@ -457,6 +470,7 @@ DESTRSYNC=$(ogGetMountPoint $4 $5) # Borramos ficheros de informacion de restauraciones antiguas rm -rf $DESTRSYNC/ogimg.* +rm -rf /tmp/ogimg.* # Origen y destino de la sincronizacion y en REPO opciones rsync if [ "$1" == "CACHE" -o "$1" == "cache" ]; then @@ -482,23 +496,25 @@ ogEcho log session " $MSG_SYNC_RESTORE" if [ "$3" == "diff" ]; then # Lista de archivos a copiar: IMGINFO="ogimg.info" - FILESFROM=" --files-from=$DESTRSYNC/$IMGINFO" + FILESFROM=" --files-from=/tmp/$IMGINFO" - echo " rsync -aHAX$OPTRSYNC --progress $ORIG/ogimg* $DESTRSYNC" - rsync -aHAX$OPTRSYNC $PASSWORD --progress "$ORIG"/ogimg* $DESTRSYNC + echo " rsync -aHAX$OPTRSYNC --progress $ORIG/ogimg* /tmp" + rsync -aHAX$OPTRSYNC $PASSWORD --progress "$ORIG"/ogimg* /tmp # Borramos linea de información de la imagen, sino busca un fichero con ese nombre - sed -i '/^\#/d' $DESTRSYNC/$IMGINFO + sed -i '/^\#/d' /tmp/$IMGINFO cd $DESTRSYNC # Diferencial: Borramos archivos sobrantes. ogEcho log session " $MSG_SYNC_DELETE" - cat "$DESTRSYNC/ogimg.rm" 2>/dev/null | xargs rm -rf + sed -e s/^/\"/g -e s/$/\"/g "/tmp/ogimg.rm" 2>/dev/null | xargs rm -rf fi echo " rsync -aHAX$OPTRSYNC --progress $FILESFROM $ORIG/ $DESTRSYNC" rsync -aHAX$OPTRSYNC $PASSWORD --progress $FILESFROM "$ORIG/" "$DESTRSYNC" 2>$OGLOGCOMMAND | egrep "^deleting|^sent|^sending|^total|%" |tee -a $OGLOGCOMMAND -return ${PIPESTATUS[0]} +RETVAL=${PIPESTATUS[0]} +cd / +return $RETVAL } @@ -684,7 +700,7 @@ echo -n -e " $MSG_SYNC_SLEEP: $DIRMOUNT\n #" | tee -a $OGLOGSESSION $ let TIMEOUT=$SIZE/$CREATESPEED [ $TIMEOUT -lt 60 ] && TIMEOUT=60 until $(grep -i $STATE $LOCKFILE &>/dev/null) ; do - [ $STATE = "mounted" -a -f "$DIRMOUNT/ogimg.info" ] && ogEcho session "" && return 0 + [ $STATE = "mounted" -a -f "$DIRMOUNT/ogimg.info" ] && ogEcho log session "" && return 0 TIMEAUX=$[SECONDS-TIME] [ "$TIMEAUX" -lt "$TIMEOUT" ] || return $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?) echo -n "#" | tee -a $OGLOGSESSION $OGLOGFILE @@ -856,7 +872,7 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then else [ -f "$OGIMG/mount/$2${IMGEXT#img}/ogimg.info" ] && ISMOUNT=TRUE fi -[ "$ISMOUNT" == TRUE ] && ogEcho session warning "$MSG_SYNC_NOCHECK" && return 0 +[ "$ISMOUNT" == TRUE ] && ogEcho log session warning "$MSG_SYNC_NOCHECK" && return 0 DIRMOUNT="/tmp/ogCheckImage$$" mkdir "$DIRMOUNT" diff --git a/client/engine/String.lib b/client/engine/String.lib index a81e3b07..3c4430e6 100755 --- a/client/engine/String.lib +++ b/client/engine/String.lib @@ -15,8 +15,9 @@ #@date 2010/05/09 #*/ ## #/** -ogCheckStringInGroup () +function ogCheckStringInGroup () { +local i # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME str_elemento str_grupo" \ @@ -56,7 +57,7 @@ return 1 #/** -ogCheckStringInReg() +function ogCheckStringInReg() { local REG @@ -91,7 +92,7 @@ REG=$2 #@date 2010/05/09 #*/ ## #/** -ogCheckIpAddress() +function ogCheckIpAddress() { local REG IP arrIP diff --git a/client/engine/System.lib b/client/engine/System.lib index 70a1b066..cbadd952 100755 --- a/client/engine/System.lib +++ b/client/engine/System.lib @@ -107,6 +107,8 @@ fi # Ejecutar comando. eval $COMMAND $REDIREC | tee -a $FILES +# Salida de error del comando ejecutado. +return ${PIPESTATUS[0]} } @@ -210,6 +212,7 @@ case "$CODE" in $OG_ERR_EXTENDFS) MSG="$MSG_ERR_EXTENDFS \"$2\"" ;; $OG_ERR_IMGSIZEPARTITION) MSG="$MSG_ERR_IMGSIZEPARTITION \"$2\"" ;; $OG_ERR_UPDATECACHE) MSG="$MSG_ERR_UPDATECACHE \"$2\"" ;; + $OG_ERR_DONTFORMAT) MSG="$MSG_ERR_DONTFORMAT \"$2\"" ;; $OG_ERR_UCASTSYNTAXT) MSG="$MSG_ERR_UCASTSYNTAXT \"$2\"" ;; $OG_ERR_UCASTSENDPARTITION) MSG="$MSG_ERR_UCASTSENDPARTITION \"$2\"" ;; $OG_ERR_UCASTSENDFILE) MSG="$MSG_ERR_UCASTSENDFILE \"$2\"" ;; diff --git a/client/shared/etc/engine.cfg b/client/shared/etc/engine.cfg index 82766a2f..895881be 100644 --- a/client/shared/etc/engine.cfg +++ b/client/shared/etc/engine.cfg @@ -10,8 +10,8 @@ OGWINCHKDISK=TRUE #Configuracion de interface restauracion #Que hacer cuando la cache no tenga espacio libre. [ NONE | FORMAT ] ] ACTIONCACHEFULL=NONE -# Protocolo a usar en el caso de que no exita cache o no haya espacio sufiencie. -RESTOREPROTOCOLNOCACHE=UNICAST +#Que protocolo de restauracion usar en el caso de que no exista cache o no exista espacio sufiente. [NONE | UNICAST | MULTICAST].NONE retorna error +RESTOREPROTOCOLNOTCACHE=UNICAST #script Creacion imagen IMGPROG="partclone" @@ -35,3 +35,6 @@ IMGFS=EXT4 # Tiempo de sleep antes de realizar el reboot OGSLEEP="20" + +# Indica si se instala automáticamente el cliente OpenGnSys en el despliegue de un SO (por defecto, no instalar). +INSTALLOSCLIENT=FALSE diff --git a/client/shared/etc/init/default.sh b/client/shared/etc/init/default.sh index 29a8cc04..e87b4b61 100755 --- a/client/shared/etc/init/default.sh +++ b/client/shared/etc/init/default.sh @@ -20,13 +20,20 @@ if [ -x $OPENGNSYS/job_executer/init.d/job_executer ]; then fi # Arranque de OpenGnSys Client daemon (socket). -if [ -x "$OPENGNSYS/bin/ogAdmClient" ]; then - echo "${MSG_LAUNCHCLIENT:-.}" - [ "$ogactiveadmin" == "true" ] && boot="admin" - # Indicar fichero de teclado de Qt para el idioma especificado (tipo "es.qmap"). - [ -f /usr/local/etc/${LANG%_*}.qmap ] && export QWS_KEYBOARD="TTY:keymap=/usr/local/etc/${LANG%_*}.qmap" +echo "${MSG_LAUNCHCLIENT:-.}" +[ "$ogactiveadmin" == "true" ] && boot="admin" +# Indicar fichero de teclado de Qt para el idioma especificado (tipo "es.qmap"). +[ -f /usr/local/etc/${LANG%_*}.qmap ] && export QWS_KEYBOARD="TTY:keymap=/usr/local/etc/${LANG%_*}.qmap" + +if [ -x "$OPENGNSYS/bin/ogAdmClient" -a "$ogstatus" != "offline" ]; then # Ejecutar servicio cliente. $OPENGNSYS/bin/ogAdmClient -f $OPENGNSYS/etc/ogAdmClient.cfg -l $OGLOGFILE -d $LOGLEVEL +else + for FILE in index $OGGROUP $(ogGetIpAddress) + do + [ -f $OGCAC/menus/$FILE.html ] && OGMENU="$OGCAC/menus/$FILE.html" + done + $OPENGNSYS/bin/browser -qws $OGMENU fi # Si fallo en cliente y modo "admin", cargar shell; si no, salir. diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf index d6257dc0..5220ff6e 100644 --- a/client/shared/etc/lang.ca_ES.conf +++ b/client/shared/etc/lang.ca_ES.conf @@ -31,6 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepcion MULTICAST de un fichero" MSG_ERR_MCASTSENDPARTITION="Error en envio MULTICAST de una particion" MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepcion MULTICAST de un fichero" MSG_ERR_PROTOCOLJOINMASTER="Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER" +MSG_ERR_DONTFORMAT="Error al formatear" MSG_ERR_DONTMOUNT_IMAGE="Error al montar/reducir la imagen" MSG_ERR_DONTUNMOUNT_IMAGE="Error al desmontar la imagen" MSG_ERR_DONTSYNC_IMAGE="Imagen no sincronizable" @@ -40,6 +41,7 @@ MSG_ERR_SYNCHRONIZING="Error al sincronizar, puede afectar la creacion|restaurac # Mensajes de avisos. MSG_DONTMOUNT="Sistema de archivos no montado" MSG_DONTUNMOUNT="El sistema de archivos no se puede desmontar o no está montado" +MSG_MOUNT="Sistema de archivos montado" # Mensajes complementarios para las ayudas. MSG_64BIT="64 bits" @@ -233,7 +235,7 @@ MSG_SCRIPTS_FILE_RENAME=" Renombrar fichero-imagen previo: " MSG_SCRIPTS_CREATE_SIZE=" Calcular espacio (KB) requerido para almacenarlo y el disponible: " # Script updateCache. -MSG_SCRIPTS_UPDATECACHE_DOUPDATE="Comprobamos si Actualizacion - existe una imagen con igual nombre pero distinto sum-" +MSG_SCRIPTS_UPDATECACHE_DOUPDATE="comprovar si es necessari actualitzar el fitxer imatge" MSG_SCRIPTS_UPDATECACHE_CHECKSIZECACHE="Comprobar que el tamaño de la cache es mayor que el fichero a descargar." # Script updateCache: para las imágenes sincronizadas tipo dir. MSG_SCRIPTS_UPDATECACHE_CHECKSIZEDIR="Calculamos el tamaño de la imagen." diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf index 42a39b9c..737da340 100644 --- a/client/shared/etc/lang.en_GB.conf +++ b/client/shared/etc/lang.en_GB.conf @@ -31,6 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepcion MULTICAST de un fichero" MSG_ERR_MCASTSENDPARTITION="Error en envio MULTICAST de una particion" MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepcion MULTICAST de un fichero" MSG_ERR_PROTOCOLJOINMASTER="Error in connecting a Unicast|Multicast session to the master" +MSG_ERR_DONTFORMAT="Error al formatear" MSG_ERR_DONTMOUNT_IMAGE="Failed to mount/reduce image" MSG_ERR_DONTUNMOUNT_IMAGE="Failed to unmount image" MSG_ERR_DONTSYNC_IMAGE="Not synchronized image" @@ -40,6 +41,7 @@ MSG_ERR_SYNCHRONIZING="Error al sincronizar, puede afectar la creacion|restaurac # Warning messages. MSG_DONTMOUNT="Unmounted filesystem" MSG_DONTUNMOUNT="Cannot unmount the filesystem" +MSG_MOUNT="Sistema de archivos montado" # Help auxiliary menssages. MSG_64BIT="64 bit" diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf index 524e95cf..46b87890 100644 --- a/client/shared/etc/lang.es_ES.conf +++ b/client/shared/etc/lang.es_ES.conf @@ -31,6 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepción Multicast de un fichero" MSG_ERR_MCASTSENDPARTITION="Error en envío Multicast de una partición" MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepción Multicast de un fichero" MSG_ERR_PROTOCOLJOINMASTER="Error en la conexión de una sesión Unicast|Multicast con el Master" +MSG_ERR_DONTFORMAT="Error al formatear" MSG_ERR_DONTMOUNT_IMAGE="Error al montar/reducir la imagen" MSG_ERR_DONTUNMOUNT_IMAGE="Error al desmontar la imagen" MSG_ERR_DONTSYNC_IMAGE="Imagen no sincronizable" @@ -40,6 +41,7 @@ MSG_ERR_SYNCHRONIZING="Error al sincronizar, puede afectar la creacion|restaurac # Mensajes de avisos. MSG_DONTMOUNT="Sistema de archivos no montado" MSG_DONTUNMOUNT="El sistema de archivos no se puede desmontar o no está montado" +MSG_MOUNT="Sistema de archivos montado" # Mensajes complementarios para las ayudas. MSG_64BIT="64 bits" @@ -210,6 +212,7 @@ MSG_HELP_ogWaitMountImage="Se espera un tiempo estimado a que se monte la imagen MSG_HELP_configureOs="Post-configura de arranque del sistema" MSG_HELP_createBaseImage="Genera imagen básica de la partición" MSG_HELP_createDiffImage="Genera imagen diferencial de la partición respecto a la imagen básica" +MSG_HELP_installOfflineMode="Prepara el equipo cliente para el modo offline." MSG_HELP_partclone2sync="Convierte imagen de partclone en imagen sincronizable." MSG_HELP_restoreBaseImage="Restaura una imagen básica en una partición" MSG_HELP_restoreDiffImage="Restaura una imagen diferencial en una partición" @@ -233,7 +236,7 @@ MSG_SCRIPTS_FILE_RENAME=" Renombrar fichero-imagen previo: " MSG_SCRIPTS_CREATE_SIZE=" Calcular espacio (KB) requerido para almacenarlo y el disponible: " # Script updateCache. -MSG_SCRIPTS_UPDATECACHE_DOUPDATE="Comprobar si actualización -existe una imagen con igual nombre pero distinto sum-" +MSG_SCRIPTS_UPDATECACHE_DOUPDATE="Comprobar si es necesario actualizar el fichero imagen " MSG_SCRIPTS_UPDATECACHE_CHECKSIZECACHE="Comprobar que el tamaño de la caché es mayor que el fichero a descargar." # Script updateCache: para las imágenes sincronizadas tipo dir. MSG_SCRIPTS_UPDATECACHE_CHECKSIZEDIR="Calcular el tamaño de la imagen." diff --git a/client/shared/etc/preinit/loadenviron.sh b/client/shared/etc/preinit/loadenviron.sh index f5f45628..b165ecfd 100755 --- a/client/shared/etc/preinit/loadenviron.sh +++ b/client/shared/etc/preinit/loadenviron.sh @@ -119,6 +119,7 @@ export OG_ERR_NOGPT=22 # El disco indicado no contiene una particion GPT export OG_ERR_IMGSIZEPARTITION=30 # Error al restaurar partición más pequeña que la imagen export OG_ERR_UPDATECACHE=31 # Error al realizar el comando updateCache +export OG_ERR_DONTFORMAT=32 # Error al formatear export OG_ERR_GENERIC=40 # Error imprevisto no definido export OG_ERR_UCASTSYNTAXT=50 # Error en la generación de sintaxis de transferenica UNICAST export OG_ERR_UCASTSENDPARTITION=51 # Error en envío UNICAST de partición @@ -137,3 +138,4 @@ export OG_ERR_DONTSYNC_IMAGE=71 # Imagen no sincronizable (es monolitica) export OG_ERR_DONTUNMOUNT_IMAGE=72 # Error al desmontar la imagen export OG_ERR_NOTDIFFERENT=73 # No se detectan diferencias entre la imagen basica y la particion. export OG_ERR_SYNCHRONIZING=74 # Error al sincronizar, puede afectar la creacion/restauracion de la imagen + diff --git a/client/shared/etc/preinit/mountrepo.sh b/client/shared/etc/preinit/mountrepo.sh index e12990fd..62b1107e 100755 --- a/client/shared/etc/preinit/mountrepo.sh +++ b/client/shared/etc/preinit/mountrepo.sh @@ -25,6 +25,29 @@ if [ "$ogactiveadmin" == "true" ]; then PASS=${PASS:-"og"} mount.cifs //${ROOTREPO}/ogimages $OGIMG -o rw,serverino,acl,username=opengnsys,password=$PASS ;; + local) # TODO: hacer funcion dentro de este script que monte smb + # Comprobamos que estatus sea online. + if [ "$ogstatus" == "offline" -o "$SERVER" == "" ]; then + # Si estatus es offline buscamos un dispositivo con etiqueta repo + # y si no existe montamos la cache como repo (si existe). + TYPE=$(blkid | grep REPO | awk -F"TYPE=" '{print $2}' | tr -d \") + if [ "$TYPE" == "" ]; then + [ -d $OGCAC/$OGIMG ] && mount --bind $OGCAC/$OGIMG $OGIMG + else + mount -t $TYPE LABEL=REPO $OGIMG &>/dev/null + fi + else + # Comprobamos que existe un servicio de samba. + smbclient -L $SERVER -N &>/dev/null + if [ $? -eq 0 ]; then + PASS=$(grep "^[ ]*\(export \)\?OPTIONS=" /scripts/ogfunctions 2>&1 | \ + sed 's/\(.*\)pass=\(\w*\)\(.*\)/\2/') + PASS=${PASS:-"og"} + mount.cifs //${ROOTREPO}/ogimages $OGIMG -o rw,serverino,acl,username=opengnsys,password=$PASS + fi + # TODO: buscar condicion para NFS + fi + ;; esac fi diff --git a/client/shared/scripts/cloneRemoteFromMaster b/client/shared/scripts/cloneRemoteFromMaster index c8575915..9aedefde 100755 --- a/client/shared/scripts/cloneRemoteFromMaster +++ b/client/shared/scripts/cloneRemoteFromMaster @@ -54,6 +54,9 @@ #@version 1.0.3 - Habilita el uso de la variable OGWINREDUCE=TRUE|TRUE para reducir el sistema de archivos a enviar #@author Antonio J. Doblas Viso. Universidad de Malaga. #@date 2011/12/22 +#@version 1.0.6 - Uso de la funcion ogExecuteAndLog +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2012/02/12 #*/ ## #test 1. cliente sin particiones. Detectado TODO: crear estrucutras de particiones @@ -63,25 +66,35 @@ #test 5. master sin origen particion. #test 6. master sin origen fichero. -#Carga del configurador del engine -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - +TIME1=$SECONDS +PROG="$(basename $0)" trap "pkill faucet; exit 1" 0 1 2 3 6 9 14 15 -TIME1=$SECONDS -PROG="$(basename $0)" +#AYUDA if [ $# -lt 1 -o "$1" == "help" ]; then - echo "cloneRemoteFromMaster ipmaster disk init [MULTICAST|UNICAST] session disk part tool comp" - exit 1 + echo "cloneRemoteFromMaster ipmaster disk init [MULTICAST|UNICAST] session disk part tool comp" + exit 1 fi -if [ $# -lt 6 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ipMaster SOURCE_disco SOURCE_particion [MULTICAT|UNICAST] SESSION TARGER_disck TARGET_partition" +#ERROR +if [ $# -lt 6 ]; then + ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ipMaster SOURCE_disco SOURCE_particion [MULTICAST|UNICAST] SESSION TARGET_disk TARGET_partition" exit $? fi -# Obtener información de los parámetros de entrada. +#Load engine configurator from engine.cfg file. +#Carga el configurador del engine desde el fichero engine.cfg +# Valores por defecto: #IMGPROG="partclone" ; #IMGCOMP="lzop" ; #IMGEXT="img" #IMGREDUCE="TRUE" +[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg + +# Clear temporary file used as log track by httpdlog +# Limpia los ficheros temporales usados como log de seguimiento para httpdlog +echo " " > $OGLOGCOMMAND + +ogEcho log session "[1] $MSG_SCRIPTS_START $0 $*" + +# Procesar parámetros de entrada HOSTIP=`ogGetIpAddress` if [ -z "$HOSTIP" ] then @@ -115,7 +128,7 @@ pkill faucet # Preparando Instrucción según sea Master o Client case $MASTERIP in $HOSTIP) - echo "[1] Equipo Master preparando el origen de los datos a enviar" + ogEcho log session "[1] Equipo Master preparando el origen de los datos a enviar" ogGetPath $2 $3.img &>/dev/null; RC=$?; ogDiskToDev $2 $3 &>/dev/null; RETVAL=$?; @@ -168,15 +181,13 @@ case $MASTERIP in fi case "${PROTOCOL^^}" in MULTICAST) - ogEcho log session "[29] Transferencia Multicast" - ogEcho log "ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR" - ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR || RETVAL=$? + ogEcho log session "[29] Transferencia Multicast: ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR " + ogExecAndLog session "ogMcastSendPartition" "$DISKSOURCE" "$PARTSOURCE" "$SESSIONMCASTSERVER" "$TOOLCLONE" "$COMPRESOR" || RETVAL=$? ;; UNICAST) sleep 60 - ogEcho log session "[29] Transferencia Unicast" - ogEcho log "ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR" - ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR || RETVAL=$? + ogEcho log session "[29] Transferencia Unicast: ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR" + ogExecAndLog session "ogUcastSendPartition" "$DISKSOURCE" "$PARTSOURCE" "$SESSIONUCASTSERVER" "$TOOLCLONE" "$COMPRESOR" || RETVAL=$? ;; esac @@ -264,8 +275,8 @@ case $MASTERIP in SIZEIMAGE=$(echo $INFOEXTRA | awk '{print $4}') ogEcho log "$INFOEXTRA = herramienta= $TOOLCLONE compresor= $COMPRESOR size= $SIZEIMAGE" ogMount $DISKTARGET $PARTTARGET || ogFormat $DISKTARGET $PARTTARGET - SIZEPARTTARGET=$(parted `ogDiskToDev $DISKTARGET $PARTTARGET` unit kB print | grep Disk | awk -F" " '{print $3}' | tr -d kB); - + #SIZEPARTTARGET=$(parted `ogDiskToDev $DISKTARGET $PARTTARGET` unit kB print | grep Disk | awk -F" " '{print $3}' | tr -d kB); + SIZEPARTTARGET=$(ogGetPartitionSize $DISKTARGET $PARTTARGET ) ogEcho log session "[28] comprobando que el tamaño de la imagen $SIZEIMAGE es menor que el de la particion destino $SIZEPARTTARGET" # comprobamos que el tamaño de a imagen es menor que la del cliente. if [ "$SIZEIMAGE" -lt "$SIZEPARTTARGET" ] @@ -274,11 +285,11 @@ case $MASTERIP in case "${PROTOCOL^^}" in MULTICAST) ogEcho log session "ogMcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONMCASTCLIENT $TOOLCLONE $COMPRESOR" - ogMcastReceiverPartition "$DISKTARGET" "$PARTTARGET" "$SESSIONMCASTCLIENT" "$TOOLCLONE" "$COMPRESOR" || exit $(ogRaiseError $OG_ERR_MCASTRECEIVERPARTITION " l251 "; echo $?) + ogExecAndLog command "ogMcastReceiverPartition" "$DISKTARGET" "$PARTTARGET" "$SESSIONMCASTCLIENT" "$TOOLCLONE" "$COMPRESOR" || exit $(ogRaiseError $OG_ERR_MCASTRECEIVERPARTITION " l251 "; echo $?) ;; UNICAST) ogEcho log session "ogUcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONUCASTCLIENT $TOOLCLONE $COMPRESOR" - ogUcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONUCASTCLIENT $TOOLCLONE $COMPRESOR || exit $(ogRaiseError $OG_ERR_UCASTRECEIVERPARTITION " l230 "; echo $?) + ogExecAndLog command "ogUcastReceiverPartition" "$DISKTARGET" "$PARTTARGET" "$SESSIONUCASTCLIENT" "$TOOLCLONE" "$COMPRESOR" || exit $(ogRaiseError $OG_ERR_UCASTRECEIVERPARTITION " l230 "; echo $?) ;; esac if which configureOsCustom &>/dev/null; then diff --git a/client/shared/scripts/configureOs b/client/shared/scripts/configureOs index 45a2de86..2aa5288d 100755 --- a/client/shared/scripts/configureOs +++ b/client/shared/scripts/configureOs @@ -69,15 +69,19 @@ case "$OSTYPE" in # Registrar en Windows que la partición indicada es su nueva unidad C:\ ogWindowsRegisterPartition $1 $2 C $1 $2 #ogLoadHiveWindows $1 $2; ogSetWindowsChkdisk $OGWINCHKDISK; ogUpdateHiveWindows - # Instalar cliente para Windows (no activar en sistema en produccion ver ticket 604). - ogInstallMiniSetup $1 $2 postconf.cmd - ogInstallWindowsClient $1 $2 postconf.cmd + # Instalar cliente para Windows si se indica en la variable INSTALLOSCLIENT. + if [ "${INSTALLOSCLIENT^^}" == "TRUE" ]; then + ogInstallMiniSetup $1 $2 postconf.cmd + ogInstallWindowsClient $1 $2 postconf.cmd + fi ;; Linux) # Postconfiguración de GNU/Linux. ## Install and Configure Grub based on OS installed and Grub 1st stage location. ogGrubInstallPartition $1 $2 - # Instalar cliente para Linux. - ogInstallLinuxClient $1 $2 + # Instalar cliente para GNU/Linux si se indica en la variable INSTALLOSCLIENT. + if [ "${INSTALLOSCLIENT^^}" == "TRUE" ]; then + ogInstallLinuxClient $1 $2 + fi ;; MacOS) # Postconfiguración de Mac OS X. # Fichero indicador de activación de postconfiguración. diff --git a/client/shared/scripts/createBaseImage b/client/shared/scripts/createBaseImage index 1e35aff4..ed9255b4 100755 --- a/client/shared/scripts/createBaseImage +++ b/client/shared/scripts/createBaseImage @@ -102,8 +102,9 @@ TIME2=$SECONDS ogEcho log session "[40] $MSG_HELP_ogCreateImage $1 $2 $3 $4 " # Si existe el fichero de la imagen se hace copia de seguridad y se redimensiona, si no existe se crea. +# Bloqueo la imagen. Si esta en modo lectura dara error y nos salimos ogEcho log session "[50] $MSG_HELP_ogCreateFileImage." -ogLockImage "$3" "/$4.$IMGEXT" +ogLockImage "$3" "/$4.$IMGEXT" || exit $? ogCreateFileImage $3 "$4" $IMGEXT $SIZEREQUIRED # Creamos la lista del contenido y lo situamos en la particion a copiar. diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage index 69b90166..862c05c8 100755 --- a/client/shared/scripts/createDiffImage +++ b/client/shared/scripts/createDiffImage @@ -95,8 +95,9 @@ ORIG=$(ogMount $1 $2) || exit $(ogRaiseError session $OG_ERR_PARTITION "$1 $2" DIFFDIR="$(ogGetParentPath "$3" "/$5")" DIFFFILE="$DIFFDIR/$5.$DIFFEXT" -ogLockImage "$3" "/$4.$IMGEXT" -ogLockImage "$3" "/$5.$DIFFEXT" +# Bloqueo las imagenes -> Si no hay acceso de escritura dara error y nos saldremos. +ogLockImage "$3" "/$4.$IMGEXT" || exit $? +ogLockImage "$3" "/$5.$DIFFEXT" || exit $? # Comprobar consistencia del sistema de archivos. echo " " > $OGLOGCOMMAND @@ -138,13 +139,6 @@ ogLock $1 $2 TIMEAUX3=$[SECONDS-TIME2] ogEcho log session " $MSG_SCRIPTS_TASK_END $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" -# Del fichero de acl de la partición extraemos las acl de los ficheros de la diferencial -if [ "$FSTYPE" == "NTFS" ]; then - ogEcho log session "[55] $MSG_HELP_ogAclFilter " - ogAclFilter - TIMEAUX4=$[SECONDS-TIMEAUX3] - ogEcho log session " $MSG_SCRIPTS_TASK_END $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX4/60]m $[TIMEAUX4%60]s" -fi TIMEAUX5=$[SECONDS-TIMEAUX3] # Configuro la informacion del tamaño de los datos en /tmp/ogimg.info diff --git a/client/shared/scripts/deployImage b/client/shared/scripts/deployImage index 724d515e..89d776a6 100755 --- a/client/shared/scripts/deployImage +++ b/client/shared/scripts/deployImage @@ -14,6 +14,8 @@ #@exception OG_ERR_LOCKED 4 partición bloqueada por otra operación. #@exception OG_ERR_IMAGE 5 error al restaurar la imagen del sistema. #@exception OG_ERR_IMGSIZEPARTITION 30 Tamaño de la particion es menor al tamaño de la imagen. +#@exception OG_ERR_NOTCACHE No existe cache -15- +#@exception OG_ERR_CACHESIZE Tamaño de la paticion menor al archivo a descargar -16- #@version 1.0.1 - Separación en protocolos de transferencia y postconfiguracion #@author Antonio J. Doblas Viso. Universidad de Málaga #@date 2011-05-11 @@ -26,15 +28,16 @@ #@version 1.0.5 - Renominación del script como "deployImage". #@author Antonio J. Doblas Viso y Ramón M. Gómez. #@date 2013-12-04 +#@version 1.0.6 - Se añade la gestión de errores de la CACHE cuando en el engine.cfg se define RESTOREPROTOCOLNOCACHE=NONE. +#@author Antonio J. Doblas Viso. +#@date 2015-02-23 #**/ #Descripcion: -# La interfaz detecta: -# Si Repositorio es el global (REPO) realiza un deploy. -# Si Repositorio es local (CACHE) realiza un restoreImage CACHE -# El deploy, si detecta que el cliente no tiene una cache con espacio suficiente -# -- reazlia un ogRestore REPO +# Si Repositorio es el global (REPO) realiza un deploy. +# Si Repositorio es local (CACHE) realiza un restoreImage CACHE +# El deploy, si detecta que el cliente no tiene una CACHE o no tiene espacio suficiente consulta el engine.cfg RESTOREPROTOCOLNOCACHE @@ -111,17 +114,35 @@ case "$REPO" in NEXTOPERATION=CACHE ;; 15|16) + # no se permite usar la cache (no existe(15) o no espacio sufiente (16). Se consulta engine.cfg para RESTOREPROTOCOLNOCACHE [ multicast unicast none ] ogEcho log session "[50] $MSG_ERR_NOTCACHE ; $MSG_ERR_CACHESIZE " - ogEcho log session "[50] $MSG_SCRIPTS_CHECK_ENGINE " - if [ "$RESTOREPROTOCOLNOCACHE" == "MULTICAST" ]; then - case "$PROTO" in - MULTICAST) NEXTOPERATION=MULTICAST ;; - TORRENT) NEXTOPERATION=UNICAST ;; - UNICAST) NEXTOPERATION=UNICAST ;; - esac - else - NEXTOPERATION=UNICAST - fi + ogEcho log session "[50] $MSG_SCRIPTS_CHECK_ENGINE: RESTOREPROTOCOLNOTCACHE=$RESTOREPROTOCOLNOTCACHE " + case "$RESTOREPROTOCOLNOTCACHE" in + MULTICAST) + case "$PROTO" in + MULTICAST) NEXTOPERATION=MULTICAST ;; + TORRENT) NEXTOPERATION=UNICAST ;; + UNICAST) NEXTOPERATION=UNICAST ;; + esac + ;; + UNICAST) + NEXTOPERATION=UNICAST + ;; + NONE) + case $RETVAL in + 15) + ogEcho log session "[100] $MSG_ERR_NOTCACHE" + ogRaiseError session $OG_ERR_NOTCACHE "NOT CACHE" + exit $? + ;; + 16) + ogEcho log session "[100] $MSG_ERR_CACHESIZE " + ogRaiseError session $OG_ERR_CACHESIZE "CACHE FULL" + exit $? + ;; + esac # del segundo RETAVAL + ;; + esac # del RESTOREPROTOCOLNOTCACHE ;; esac ;; diff --git a/client/shared/scripts/generateMenuDefault b/client/shared/scripts/generateMenuDefault index 7a9abd6e..09e4300f 100755 --- a/client/shared/scripts/generateMenuDefault +++ b/client/shared/scripts/generateMenuDefault @@ -9,7 +9,7 @@ source /tmp/net-$DEVICE.conf FILEINFOHTML=$OGLOG/`ogGetIpAddress`.info.html FILEINFOCACHE=$OGLOG/`ogGetIpAddress`.cache.txt ogMountCache 2>/dev/null -CACHECONTENIDO=`ls -m $OGCAC/$OGIMG 2>/dev/null` +CACHECONTENIDO="ls -m $OGCAC/$OGIMG 2>/dev/null" SPEED=$(LANG=C ethtool $DEVICE 2>/dev/null | awk '$1~/Speed/ {print $2}') case "${SPEED,,}" in @@ -23,8 +23,13 @@ case "${DUPLEX,,}" in full) ;; *) DUPLEX="<font color=\"red\">$DUPLEX</font>" esac + CACHESIZEFREE=$(ogGetFreeSize `ogFindCache`) -expr $CACHESIZEFREE / 1024 > $FILEINFOCACHE 2>/dev/null && echo '.MB,' >> $FILEINFOCACHE +if [ $CACHESIZEFREE == 0 ]; then + echo '0.MB,' > $FILEINFOCACHE +else + expr $CACHESIZEFREE / 1024 > $FILEINFOCACHE 2>/dev/null && echo '.MB,' >> $FILEINFOCACHE +fi # Crear menú por defecto. cat > $FILEINFOHTML << EOT @@ -72,7 +77,5 @@ cat >> $FILEINFOHTML << EOT EOT # Crear contenido de la caché. -cat >> $FILEINFOCACHE << EOT -$CACHECONTENIDO -EOT +eval $CACHECONTENIDO >> $FILEINFOCACHE diff --git a/client/shared/scripts/installOfflineMode b/client/shared/scripts/installOfflineMode new file mode 100755 index 00000000..d9ff2459 --- /dev/null +++ b/client/shared/scripts/installOfflineMode @@ -0,0 +1,60 @@ +#!/bin/bash + +#/** +# installOfflineMode +#@brief Prepara el equipo cliente para el modo offline. +#@param no +#@return +#@exception OG_ERR_NOTFOUND Fichero o dispositivo no encontrado. +#@exception OG_ERR_NOTCACHE No existe cache. +#@author Irina Gomez. ETSII. Universidad de Sevilla +#@date 2013/12/5 +#*/ ## + +PROG="$(basename $0)" +if [ "$*" == "help" ]; then + ogHelp "$PROG $MSG_HELP_installOfflineMode" \ + "$PROG [ no param ]" + exit 0 +fi + +ogEcho log session "$MSG_HELP_installOfflineMode" +# Cargamos las variables de entorno. +[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg +DIRTFTP="/opt/oglive/tftpboot" +DIROGCLIENT="$DIRTFTP/ogclient" +# Comprobamos que el DIROGCLIENT esta montado desde repo +df |grep "$(ogGetRepoIp).*$DIRTFTP" &>/dev/null || ogRaiseError $OG_ERR_NOTFOUND "REPO OGclient" || exit $? + +# Copiamos el kernel y el initrd. +ogEcho log session " [10] updateBootCache" +updateBootCache || ogRaiseError $OG_ERR_NOTCACHE || exit $? + +# Creamos los dir necesarios. +ogEcho log session " [40] mkdir -p $OGCAC/{ogclient, menus, log}." +[ -d $OGCAC/menus/images/iconos ] || mkdir -p $OGCAC/menus/images/iconos +[ -d $OGCAC/ogclient ] || mkdir -p $OGCAC/ogclient +[ -d $OGCAC/log ] || mkdir -p $OGCAC/log +[ -d $OGCAC/opt/opengnsys/images ] || mkdir -p $OGCAC/opt/opengnsys/images + +# Comparamos el cliente en el server y en cache +ogEcho log session " [60] cp $DIROGCLIENT/ogclient.sqfs $OGCAC/ogclient/" +SERVEROGCLIENT=$(cat $DIROGCLIENT/ogclient.sqfs.sum 2>/dev/null) +CACHEOGCLIENT=$(cat $OGCAC/ogclient/ogclient.sqfs.sum 2>/dev/null) + +if [ "$CACHEOGCLIENT" != "$SERVEROGCLIENT" ]; then + cp $DIROGCLIENT/ogclient.sqfs $OGCAC/ogclient/ + cp $DIROGCLIENT/ogclient.sqfs.sum $OGCAC/ogclient/ +fi + +# Si se ha generado el menu de inicio lo copiamos a cache. +IPCLIENT=$(ogGetIpAddress) +MENU=$OGLOG/$IPCLIENT.info.html +ICONO="images/iconos/logoopengnsys.png" +[ -f $MENU ] || generateMenuDefault +ogEcho log session " [90] cp $MENU $OGCAC/menus/$IPCLIENT.html" +cp $MENU $OGCAC/menus/$IPCLIENT.html +sed -i s/"..\/images"/"images"/g $OGCAC/menus/$IPCLIENT.html +wget --no-check-certificate https://$(ogGetRepoIp)/opengnsys/$ICONO -O $OGCAC/menus/$ICONO + + diff --git a/client/shared/scripts/poweroff b/client/shared/scripts/poweroff index 9af4d669..c108e08e 100755 --- a/client/shared/scripts/poweroff +++ b/client/shared/scripts/poweroff @@ -21,7 +21,7 @@ BUSYBOX=${BUSYBOX:-"busybox"} # Retardo para dar lugar al registro en cola de acciones. sleep 5 # Parar Browser para evitar "cuelgues". -pkill browser +[ "$ogstatus" == "offline" ] || pkill browser # Apagar. $BUSYBOX poweroff diff --git a/client/shared/scripts/reboot b/client/shared/scripts/reboot index 87df09d0..87e30e21 100755 --- a/client/shared/scripts/reboot +++ b/client/shared/scripts/reboot @@ -34,7 +34,8 @@ BUSYBOX=${BUSYBOX:-"busybox"} # Retardo para dar lugar al registro en cola de acciones. sleep $TIME # Parar Browser para evitar "cuelgues". -pkill browser +[ "$ogstatus" == "offline" ] || pkill browser # Reiniciar. $BUSYBOX reboot + diff --git a/client/shared/scripts/restoreBaseImage b/client/shared/scripts/restoreBaseImage index e424baa8..c4e87ba4 100755 --- a/client/shared/scripts/restoreBaseImage +++ b/client/shared/scripts/restoreBaseImage @@ -137,6 +137,7 @@ ogExecAndLog command ogRestoreInfoImage $3 $4 # Llamar al script de post-configuración del sistema operativo. # Si a este script lo ha llamado el script restoreDiffImage no post-configuramos if [ "$(ogGetCaller)" != "restoreDiffImage" ];then + ogExecAndLog command ogRestoreAclImage $3 $4 if which configureOsCustom &>/dev/null; then ogEcho log session "[90] configureOsCustom" configureOsCustom "$3" "$4" "$1" "$2" @@ -145,6 +146,8 @@ if [ "$(ogGetCaller)" != "restoreDiffImage" ];then configureOs $3 $4 fi fi +TIMEAUX3=$[SECONDS-TIMEAUX2] +ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX3/60]m $[TIMEAUX3%60]s" TIME=$[SECONDS-TIME1] ogEcho log session "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s" diff --git a/client/shared/scripts/restoreDiffImage b/client/shared/scripts/restoreDiffImage index 20745b3e..e10a395a 100755 --- a/client/shared/scripts/restoreDiffImage +++ b/client/shared/scripts/restoreDiffImage @@ -1,15 +1,15 @@ #!/bin/bash #/** -# restoreiDiffSquash +# restoreDiffImage #@brief Script de ejemplo para restaurar una imagen diferencial. #@brief (puede usarse como base para el programa de restauración de imágenes usado por OpenGNSys Admin). #@param 1 REPO|CACHE #@param 2 imagen basica -#@param 2 imagen diferencial -#@param 3 disco -#@param 4 particion -#@param 5 protocolo -#@param 6 opciones protocolo +#@param 3 imagen diferencial +#@param 4 disco +#@param 5 particion +#@param 6 protocolo +#@param 7 opciones protocolo #@return #@exception OG_ERR_FORMAT # 1 formato incorrecto. #@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado @@ -122,6 +122,9 @@ ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[T # creando enlaces y restableciendo ACL (en windows) ogEcho log session "[70] $MSG_HELP_ogRestoreInfoImage" ogExecAndLog command ogRestoreInfoImage "$4" "$5" +ogExecAndLog command gRestoreAclImage "$4" "$5" +TIMEAUX3=$[SECONDS-TIMEAUX2] +ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX3/60]m $[TIMEAUX3%60]s" # Llamar al script de post-configuración del sistema operativo. if which configureOsCustom &>/dev/null; then @@ -136,4 +139,3 @@ ogEcho log session "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m # Si ha habido problema al sincronizar nos salimos con error [ $RETVAL == 0 ] || exit $OG_ERR_SYNCHRONIZING - diff --git a/client/shared/scripts/restoreImage b/client/shared/scripts/restoreImage index 4575bf6c..6d5198aa 100755 --- a/client/shared/scripts/restoreImage +++ b/client/shared/scripts/restoreImage @@ -54,7 +54,7 @@ case "$PROTO" in ogEcho log session "[40] ogMcastReceiverPartition $DISK $PART $PORT $TOOL $COMPRESS" ogMcastRequest "$IMGNAME.img" "$PROTOOPT" ogExecAndLog command ogMcastReceiverPartition "$DISK" "$PART" "$PORT" "$TOOL" "$COMPRESS" - RETVAL=${PIPESTATUS[0]} + RETVAL=$? ;; *) # Protocolo desconocido. ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST opciones ]" diff --git a/client/shared/scripts/updateCache b/client/shared/scripts/updateCache index 889b9bf4..8760ddd2 100755 --- a/client/shared/scripts/updateCache +++ b/client/shared/scripts/updateCache @@ -75,7 +75,6 @@ else # Si la imagen es monolitica y ha elegido protocolo = RSYNC salimos con error. [ $PROTOCOLO == "RSYNC" ] && exit $(ogRaiseError session $OG_ERR_DONTSYNC_IMAGE "REPO $2"; echo $?) IMGSYNC=FALSE - #TODO: ogUpdateCacheIsNecesary debe borrar la imagen que tenga igual nombre pero distinto sum- ogUpdateCacheIsNecesary "$1" "$2" "$PROTOCOLO" RETVAL=$? fi @@ -115,7 +114,7 @@ else SIZEREQUIRED=$FILESIZE fi -#ERROR CACHESIZE 16 +#ERROR CACHESIZE 16 (tamanyo de la CACHE insuficiente) if [ "$SIZEREQUIRED" -ge "$CACHESIZE" ] then ogEcho log session "$MSG_WARNING: $MSG_ERR_CACHESIZE: $2 = $SIZEREQUIRED > CACHE = $CACHESIZE" @@ -123,14 +122,16 @@ then exit $? fi -ogEcho log session "$MSG_SCRIPTS_UPDATECACHE_IFNOTCACHEDO" -#ERROR CACHESIZE 16 + +#ERROR CACHESIZE 16 (Espacio libre en CACHE insuficiente) if [ "$SIZEREQUIRED" -ge "$CACHESIZEFREE" ] then - # ogEcho log session "[ ] No hay espacio sufiente en la CACHE, detectar que hacer con engine.cfg" + ogEcho log session "$MSG_SCRIPTS_UPDATECACHE_IFNOTCACHEDO: ACTIONCACHEFULL=$ACTIONCACHEFULL" case "$ACTIONCACHEFULL" in NONE) - NEXTOPERATION=UNICAST + ogEcho log session "$MSG_WARNING: $MSG_ERR_CACHESIZE: $2 = $SIZEREQUIRED > FREE SPACE CACHE = $CACHESIZEFREE" + ogRaiseError session $OG_ERR_CACHESIZE "CACHE FULL, NO SPACE FREE" + exit $? ;; FORMAT) ogEcho log session "[51] $MSG_HELP_ogFormatCache " diff --git a/doc/CHANGELOG.es.txt b/doc/CHANGELOG.es.txt index dbcc3728..6e1a33b2 100644 --- a/doc/CHANGELOG.es.txt +++ b/doc/CHANGELOG.es.txt @@ -1,8 +1,10 @@ -LISTA DE CAMBIOS CHANGELOG.es.ext +LISTA DE CAMBIOS CHANGELOG.es.txt ======================================== + Lista de cambios incluidos en OpenGnSys 1.1.0 +--------------------------------------------- @@ -14,17 +16,22 @@ Tickets resueltos en módulo OpenGnSys Cloning Engine: #660 El arranque de sistema operativo debe depender de su tipo y no del sistema de ficheros #611 Crear función para mostrar y registrar la ejecución de un comando #626 Mejorar la integridad en el protocolo torrent -#645 Configuración de sistemas GNU/Linux instalados sobre EFI +#645 Configuración de sistemas GNU/Linux y Windows instalados sobre EFI #651 Incluir en la interfaz de crear imagen una condición para que llame a script personalizado #652 Incluir script personalizado para restoreImage (mejora) -#668 Comando restaurar torrent-cache si encuentra trozo de imagen monolítica previa se queda compartiendo la imagen sin proceder a la restauración +#668 Comando restaurar torrent-cache si encuentra trozo de imagen monolítica previa se queda compartiendo la imagen sin restaurar (no se resolverá) #671 ogFormat sobre NTFS no reconoce tipo de partición NTFS (no se resolverá) #675 Bucle infinito al reducir sistema de archivos NTFS menor de 1 GB +#684 Usar función ogExecAndLog en los scripts de clonaciones remotas #685 Arrancar sistema GNU/Linux con sistema de archivos /boot separado del raíz (mejora) +#690 Revisar log del script updateCache +#693 deployImage debe admitir el comportamiento correcto para RESTOREPROTOCOLNOCACHE=NONE +#694 Log en deployImage y updateCache al realizar la consulta al engine.cfg debería mostrar la variable consultada y su valor +#692 updateCache no reporta error cuando no hay espacio libre en la caché del cliente +#698 Mejoras en los mensajes de error Tickets resueltos en módulo OpenGnSys Client: #136 Splash de arranque con Plymouth (no se resolverá) -#377 Documentar como modificar el tiempo de las cookies para los menús personalizados desde la web de clientes (no se resolverá) #615 Cliente oglive 1.0.5 basado en Ubuntu 12.04.2 LTS (duplicado de #603) #649 El arranque gráfico del ogLive depende del hardware (no se resolverá) #653 Decidir el número de parámetros del script configureOsCustom @@ -59,11 +66,27 @@ Tickets resueltos en módulo OpenGnSys Web Admin Console: #666 Asistente de particiones remotas no genera la instrucción a ejecutar (tarea) #667 Resolución de los menús en la configuración PXE (no válido) #680 Opcion status de ordenador sobre objeto aulas es incorrecto cuando existe también objetos tipo "grupo de ordenadores" (no válido) +#681 Bucle infinito en 2º subprocedimiento de un procedimiento compuesto #683 Consola web: comandos Iniciar sesión e Inventario software solo reconocen un disco +#686 Asistente deploy imágenes: incluir protocolos unicast-direct y multicast-direct +#687 Asigar menu "default" desde las propiedades del aula no funciona (no válido) +#688 Cambiar la contraseña del usuario usuog afecta al ogAdmclient.cfg +#689 Asistente particionado no modifica el tamaño de la partición caché +#691 Comando "Formatear y Particionar" no formate la caché +#695 No se muestra información del repositorio con imágenes sin asignar +#697 Las propiedades del menú no permiten URL con HTTPS +#699 No se borra imagen si caché completa +#700 Asistente Deploy Imagen avisa al usar Unicast sobre aulas (mejora) +#702 Mostrar Unidad Organizativa por defecto en login (mejora) +#703 Comando Restaurar avisa al usar Unicast sobre aulas (mejora) +#704 Ampliar tamaño de ventana log de seguimiento (mejora) +#705 Eliminar campos de formularios que han dejado de utilizarse +#707 Eliminar del repositorio imagen de tipo directorio Tickets genéricos resueltos: #541 Gestión plataformas Mac (tarea) #670 Las copias en trunk y tags no mantienen los cambios del svn realizados en branches (informativo) +#673 Integración de OpenGnSys 1.0.6 en rama principal #677 Incluir datos de creación y despliegue de imagen (mejora) @@ -365,6 +388,7 @@ Tickets resueltos en módulo OpenGnSys Server: Tickets resueltos en módulo OpenGnSys Web Admin Console: #296 Consola Web: particionar y formatear no va si hay partición de linux-swap (no se resolverá) #341 Control del tamaño de disco duro en consola web +#377 Documentar como modificar el tiempo de las cookies para los menus personalizados desde la web de clientes (no se resolverá) #423 Netboot no configura el parámetro de IP serverADM #434 Soporte para particiones lógicas en el asistente de particionado #443 Usar HTTPS en la consola web diff --git a/doc/INSTALL.es.txt b/doc/INSTALL.es.txt index 0a6702e1..50934f5c 100644 --- a/doc/INSTALL.es.txt +++ b/doc/INSTALL.es.txt @@ -1,16 +1,16 @@ -Instalación de OpenGnSys Server v 1.0.5 +Instalación de OpenGnSys Server v 1.1.0 ======================================= Notas iniciales --------------- -Se presupone que el servidor de OpenGnSys va a ser instalado en una distribución del sistema operativo Ubuntu Server a partir de la versión 12.04 LTS (también ha sido probado en sistemas basados en Fedora 20). +Se presupone que el servidor de OpenGnSys va a ser instalado en una distribución del sistema operativo Ubuntu Server a partir de la versión 12.04 LTS (también ha sido probado en sistemas basados en Fedora 20 y CentOS 6.5). El serividor debe tener acceso a Internet para descargar los paquetes necesarios, el código del proyecto y el cliente preconfigurado. Requisitos mínimos de almacenamiento: - 100 MB en el directorio /tmp (solo durante la instalación) -- 450 MB en el directorio /var/lib/tftpboot (o /srv en sistemas Debian) +- 500 MB en el directorio /var/lib/tftpboot (o /srv en sistemas Debian) - 500 MB en el directorio de instalación /opt/opengnsys sin contar el espacio para logs (100 MB si el cliente ogLive está previamente descargado). - Estimar la capacidad necesaria para el repositorio de imágenes en /opt/opengnsys/images (es recomendable que este directorio se monte sobre un sistema de archivos independiente). @@ -18,7 +18,7 @@ Requisitos mínimos de almacenamiento: Instalación ----------- -La instalación de OpenGnSys se realiza ejecutando el script de instalación opengnsys_installer.sh, el cual puede obtenerse descomprimiendo el fichero de la versión opengnsys-Version.tar.gz o descargándolo directamente de la dirección: http://www.opengnsys.es/svn/branches/version1.0/installer/opengnsys_installer.sh +La instalación de OpenGnSys se realiza ejecutando el script de instalación opengnsys_installer.sh, el cual puede obtenerse descomprimiendo el fichero de la versión opengnsys-Version.tar.gz o descargándolo directamente de la dirección: http://www.opengnsys.es/svn/branches/version1.1/installer/opengnsys_installer.sh Ejemplos de descompresión del programa: @@ -28,10 +28,10 @@ Ejemplos de descompresión del programa: Ejemplos de descarga con varias herramientas: * Descargar con wget. - wget http://www.opengnsys.es/svn/branches/version1.0/installer/opengnsys_installer.sh -O opengnsys_installer.sh + wget http://www.opengnsys.es/svn/branches/version1.1/installer/opengnsys_installer.sh -O opengnsys_installer.sh * Descargar con curl. - curl http://www.opengnsys.es/svn/branches/version1.0/installer/opengnsys_installer.sh > opengnsys_installer.sh + curl http://www.opengnsys.es/svn/branches/version1.1/installer/opengnsys_installer.sh > opengnsys_installer.sh El script de instalación debe ser ejecutado como usuario root: diff --git a/installer/INSTALL.es.txt b/installer/INSTALL.es.txt index c2eda7d4..ea2abd09 100644 --- a/installer/INSTALL.es.txt +++ b/installer/INSTALL.es.txt @@ -1,4 +1,4 @@ -Instalación y Actualización de OpenGnSys 1.0.3 +Instalación y Actualización de OpenGnSys 1.1.0 ============================================== @@ -12,7 +12,7 @@ Descargar una versión completa y desccomprimir el fichero "opengnsys-version.ta cd opengnsys/installer O bien, descargar el instalador desde la última reversión del repositorio: - svn export http://www.opengnsys.es/svn/branches/version1.0/installer/opengnsys_installer.sh + svn export http://www.opengnsys.es/svn/branches/version1.1/installer/opengnsys_installer.sh Opcionalmente, puede descargarse la imagen del cliente; si no se realiza este paso, el instalador la descargará automáticamente. wget http://www.opengnsys.es/downloads/ogLive-versioncliente.iso diff --git a/installer/opengnsys_installer.sh b/installer/opengnsys_installer.sh index de3c4829..ebf07b70 100755 --- a/installer/opengnsys_installer.sh +++ b/installer/opengnsys_installer.sh @@ -89,7 +89,7 @@ if [ -d "$PROGRAMDIR/../installer" ]; then else USESVN=1 fi -SVN_URL="http://$OPENGNSYS_SERVER/svn/branches/version1.0/" +SVN_URL="http://$OPENGNSYS_SERVER/svn/branches/version1.1/" WORKDIR=/tmp/opengnsys_installer mkdir -p $WORKDIR @@ -1222,12 +1222,6 @@ function copyServerFiles () fi done - # Si servidor tiene instalado Rsync > 3.0.9, renombrar el ejecutable - # compilado para el cliente. - if [ -n "$(rsync --version | awk '/version/ {if ($3>="3.1.0") print $3}')" ]; then - [ -e client/bin/rsync-3.1.0 ] && mv -f client/bin/rsync-3.1.0 client/bin/rsync - fi - popd } @@ -1326,6 +1320,12 @@ function copyClientFiles() errstatus=1 fi + # Si el servidor tiene instalado Rsync > 3.0.9, renombrar el ejecutable + # compilado para el cliente. + if [ -n "$(rsync --version | awk '/version/ {if ($3>="3.1.0") print $3}')" ]; then + [ -e $INSTALL_TARGET/client/bin/rsync-3.1.0 ] && mv -f $INSTALL_TARGET/client/bin/rsync-3.1.0 $INSTALL_TARGET/client/bin/rsync + fi + if [ $errstatus -eq 0 ]; then echoAndLog "${FUNCNAME}(): client copy files success." else @@ -1340,7 +1340,7 @@ function copyClientFiles() function clientCreate() { local DOWNLOADURL="http://$OPENGNSYS_SERVER/downloads" - local FILENAME=ogLive-precise-3.2.0-23-generic-r3257.iso # 1.0.4-rc2 + local FILENAME=ogLive-precise-3.2.0-23-generic-r4311.iso # 1.0.4-rc4 #local FILENAME=ogLive-precise-3.11.0-26-generic-r4413.iso # 1.0.6-rc1 local TARGETFILE=$INSTALL_TARGET/lib/$FILENAME local TMPDIR=/tmp/${FILENAME%.iso} @@ -1418,7 +1418,7 @@ function openGnsysConfigure() -e "s/DBPASSWORD/$OPENGNSYS_DB_PASSWD/g" \ -e "s/DATABASE/$OPENGNSYS_DATABASE/g" \ $WORKDIR/opengnsys/admin/Sources/Services/ogAdmAgent/ogAdmAgent.cfg > $INSTALL_TARGET/etc/ogAdmAgent-$dev.cfg - CONSOLEURL="http://${SERVERIP[i]}/opengnsys" + CONSOLEURL="https://${SERVERIP[i]}/opengnsys" sed -e "s/SERVERIP/${SERVERIP[i]}/g" \ -e "s/DBUSER/$OPENGNSYS_DB_USER/g" \ -e "s/DBPASSWORD/$OPENGNSYS_DB_PASSWD/g" \ @@ -1429,7 +1429,7 @@ function openGnsysConfigure() -e "s/OPENGNSYSURL/${CONSOLEURL//\//\\/}/g" \ $WORKDIR/opengnsys/admin/Sources/Clients/ogAdmClient/ogAdmClient.cfg > $INSTALL_TARGET/client/etc/ogAdmClient-$dev.cfg if [ "$dev" == "$DEFAULTDEV" ]; then - OPENGNSYS_CONSOLEURL="${CONSOLEURL/http:/https:}" + OPENGNSYS_CONSOLEURL="$CONSOLEURL" fi fi let i++ diff --git a/installer/opengnsys_makecompress.sh b/installer/opengnsys_makecompress.sh index 0e9cd48c..479ff8ec 100755 --- a/installer/opengnsys_makecompress.sh +++ b/installer/opengnsys_makecompress.sh @@ -10,7 +10,7 @@ # Variables -SVNURL="http://www.opengnsys.es/svn/branches/version1.0/" +SVNURL="http://www.opengnsys.es/svn/branches/version1.1/" SVNREV=$(LANG=C svn info $SVNURL | awk '/Last Changed Rev:/ {print "r"$4}') # Descargar repositorio SVN diff --git a/installer/opengnsys_update.sh b/installer/opengnsys_update.sh index ed55989d..56d991b3 100755 --- a/installer/opengnsys_update.sh +++ b/installer/opengnsys_update.sh @@ -2,7 +2,6 @@ #/** #@file opengnsys_update.sh #@brief Script actualización de OpenGnSys -#@warning No se actualiza BD, ni ficheros de configuración. #@version 0.9 - basado en opengnsys_installer.sh #@author Ramón Gómez - ETSII Univ. Sevilla #@date 2010/01/27 @@ -24,6 +23,9 @@ #@version 1.0.5 - Actualizar BD en la misma versión, compatibilidad con Fedora (systemd) y configuración de Rsync. #@author Ramón Gómez - ETSII Univ. Sevilla #@date 2014/04/03 +#@version 1.0.6 - Redefinir URLs de ficheros de configuración usando HTTPS. +#@author Ramón Gómez - ETSII Univ. Sevilla +#@date 2015/03/12 #*/ @@ -66,7 +68,7 @@ if [ -d "$PROGRAMDIR/../installer" ]; then else USESVN=1 fi -SVN_URL="http://$OPENGNSYS_SERVER/svn/branches/version1.0/" +SVN_URL="http://$OPENGNSYS_SERVER/svn/branches/version1.1/" WORKDIR=/tmp/opengnsys_update mkdir -p $WORKDIR @@ -507,6 +509,13 @@ function updateWebFiles() fi restoreFile $INSTALL_TARGET/www/controlacceso.php + # Cambiar acceso a protocolo HTTPS. + if grep -q "http://" $INSTALL_TARGET/www/controlacceso.php 2>/dev/null; then + echoAndLog "${FUNCNAME}(): updating web access file" + perl -pi -e 's!http://!https://!g' $INSTALL_TARGET/www/controlacceso.php + NEWFILES="$NEWFILES $INSTALL_TARGET/www/controlacceso.php" + fi + # Compatibilidad con dispositivos móviles. COMPATDIR="$INSTALL_TARGET/www/principal" for f in acciones administracion aula aulas hardwares imagenes menus repositorios softwares; do @@ -663,10 +672,10 @@ function updateServerFiles() cp -a $WORKDIR/opengnsys/admin/Sources/Services/opengnsys.init /etc/init.d/opengnsys NEWFILES="$NEWFILES /etc/init.d/opengnsys" fi - if grep -q "UrlMsg=.*msgbrowser.php" $INSTALL_TARGET/client/etc/ogAdmClient.cfg 2>/dev/null; then + if egrep -q "(UrlMsg=.*msgbrowser.php)|(UrlMenu=http://)" $INSTALL_TARGET/client/etc/ogAdmClient.cfg 2>/dev/null; then echoAndLog "${FUNCNAME}(): updating new client config file" backupFile $INSTALL_TARGET/client/etc/ogAdmClient.cfg - perl -pi -e 's!UrlMsg=.*msgbrowser\.php!UrlMsg=http://localhost/cgi-bin/httpd-log\.sh!g' $INSTALL_TARGET/client/etc/ogAdmClient.cfg + perl -pi -e 's!UrlMsg=.*msgbrowser\.php!UrlMsg=http://localhost/cgi-bin/httpd-log\.sh!g; s!UrlMenu=http://!UrlMenu=https://!g' $INSTALL_TARGET/client/etc/ogAdmClient.cfg NEWFILES="$NEWFILES $INSTALL_TARGET/client/etc/ogAdmClient.cfg" fi echoAndLog "${FUNCNAME}(): updating cron files" @@ -757,7 +766,7 @@ function compileServices() function updateClient() { local DOWNLOADURL="http://$OPENGNSYS_SERVER/downloads" - local FILENAME=ogLive-precise-3.2.0-23-generic-r3257.iso # 1.0.4-rc2 + local FILENAME=ogLive-precise-3.2.0-23-generic-r4311.iso # 1.0.4-rc4 #local FILENAME=ogLive-precise-3.11.0-26-generic-r4413.iso # 1.0.6-rc1 local SOURCEFILE=$DOWNLOADURL/$FILENAME local TARGETFILE=$INSTALL_TARGET/lib/$FILENAME diff --git a/repoman/bin/deleteimage b/repoman/bin/deleteimage index 6a9445cc..f208fb9b 100755 --- a/repoman/bin/deleteimage +++ b/repoman/bin/deleteimage @@ -53,13 +53,13 @@ fi IMGPATH="$OGIMG/$1.$IMGEXT" if [ -f $IMGPATH ]; then echo "Borrando fichero $PATHDIR" - rm -f $IMGPATH && rm -f $IMGPATH.{sum,torrent} + rm -f $IMGPATH && rm -f $IMGPATH.{sum,full.sum,torrent} else # Eliminar ficheros de imagen sincronizada diferencial. IMGPATH="$OGIMG/$1.$IMGEXT.$DIFFEXT" if [ -f $IMGPATH ]; then echo "Borrando fichero $PATHDIR" - rm -f $IMGPATH && rm -f $IMGPATH.{sum,torrent} + rm -f $IMGPATH && rm -f $IMGPATH.{sum,full.sum,torrent} else # Eliminar directorio de imagen sincronizada. IMGPATH="$OGIMG/$1" @@ -75,12 +75,13 @@ if [ -n "$RECOVERBACKUP" ]; then [ -e $IMGPATH.$BAKEXT ] && echo "Recuperando copia $IMGPATH.$BAKEXT" mv -f $IMGPATH.$BAKEXT $IMGPATH && \ (mv -f $IMGPATH.sum.$BAKEXT $IMGPATH.sum 2>/dev/null + mv -f $IMGPATH.full.sum.$BAKEXT $IMGPATH.full.sum 2>/dev/null mv -f $IMGPATH.torrent.$BAKEXT $IMGPATH.torrent 2>/dev/null) fi # Borrar copia de seguridad de la imagen. if [ -n "$DELETEBACKUP" ]; then [ -e $IMGPATH ] && echo "Eliminando copia $IMGPATH.$BAKEXT" - rm -f $IMGPATH.$BAKEXT && rm -f $IMGPATH.{sum,torrent}.$BAKEXT + rm -f $IMGPATH.$BAKEXT && rm -f $IMGPATH.{sum,full.sum,torrent}.$BAKEXT fi diff --git a/repoman/bin/deletepreimage b/repoman/bin/deletepreimage index 85883aea..39077483 100755 --- a/repoman/bin/deletepreimage +++ b/repoman/bin/deletepreimage @@ -44,7 +44,7 @@ for IMG in `ls /opt/opengnsys/images/*.delete`; do ## se llama al escript de borrado de imagen. ## Si es un Directorio Borramos if [[ $DELETEdir == "delete" ]]; then - /opt/opengnsys/bin/deleteimage -d $DELETEIMAGE + /opt/opengnsys/bin/deleteimage $DELETEIMAGE # Si es un Imagen Backup Borramos elif [[ $DELETEant == "ant" ]]; then |