summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2011-04-28 08:50:16 +0000
committerramon <ramongomez@us.es>2011-04-28 08:50:16 +0000
commiteb9424faad0ac3598ca3d53733ac746b3c07aa0b (patch)
tree46ab2ba63d43d8d3c079e84287b1740337493083
parent09ff7b6a1074b502ff0a65147ef7dc862d8aac27 (diff)
branches/version1.0: aplicar cambios de la rama trunk para desarrollar version 1.0.1
git-svn-id: https://opengnsys.es/svn/branches/version1.0@1920 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-xadmin/Interface/CambiarAcceso33
-rw-r--r--admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c4
-rw-r--r--admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h49
-rw-r--r--admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php26
-rw-r--r--admin/WebConsole/asistentes/jscripts/asistentes.js2
-rw-r--r--admin/WebConsole/asistentes/xajax.server.php74
-rwxr-xr-xclient/engine/Image.lib3
-rwxr-xr-xclient/engine/Protocol.lib315
-rwxr-xr-xclient/engine/Protocol.lib.testing2
-rwxr-xr-xclient/engine/System.lib19
-rwxr-xr-xclient/shared/etc/init/default.sh4
-rw-r--r--client/shared/etc/lang.es_ES.conf18
-rwxr-xr-xclient/shared/etc/preinit/loadenviron.sh23
-rwxr-xr-xclient/shared/scripts/cloneRemoteFromMaster239
-rwxr-xr-xclient/shared/scripts/createImage31
-rw-r--r--doc/CHANGELOG.es.txt39
-rw-r--r--doc/VERSION.txt2
-rwxr-xr-xinstaller/opengnsys_installer.sh49
-rwxr-xr-xinstaller/opengnsys_update.sh50
-rwxr-xr-xrepoman/bin/sendFileMcast3
20 files changed, 708 insertions, 277 deletions
diff --git a/admin/Interface/CambiarAcceso b/admin/Interface/CambiarAcceso
index ddd67666..38cc5ab1 100755
--- a/admin/Interface/CambiarAcceso
+++ b/admin/Interface/CambiarAcceso
@@ -5,6 +5,12 @@
# PARAMETROS RECIBIDOS DESDE EL CLIENTE
# $1 modo (admin, user)
#_______________________________________________________________________________________________________________________________
+### codigos de error
+#$OG_ERR_NOTEXEC = 7 La llamada no se ha realizado desde OGclient.
+#$OG_ERR_NOTFOUND = 2 Repositorio no montado.
+#$OG_ERR_LOCKED = 4 Repositorio bloqueado.
+#$OG_ERR_NOTWRITE = 14 No Se ha realizado el montaje RW correctamente.
+
# Error si llamada no se realliza desde OpenGnSys Client.
PROG=$(basename $0)
@@ -14,7 +20,7 @@ if [ "$CALLER" != "CrearImagen" -a "$CALLER" != "ConsolaRemota" ]; then
exit $?
fi
-# Salir si el repositorio está bloquedo (tiene ficheros abiertos).
+# Salir si el repositorio est� bloquedo (tiene ficheros abiertos).
REPOIP=$(ogGetRepoIp)
if [ -z "$REPOIP" ]; then
ogRaiseError $OG_ERR_NOTFOUND "repo no montado"
@@ -47,3 +53,28 @@ case "$PROTO" in
smb) mount -t cifs //$REPOIP/ogimages $OGIMG -o $MODE,serverino,acl,username=opengnsys,password=og ;;
esac
+#Comprobamos que el tipo de acceso (escritura/lectura) se ha realizado correctamente.
+FILETEST="${OGIMG}/testWrite.txt"
+touch $FILETEST
+VALUE=$?
+
+case "$1" in
+ admin)
+ if [ "$VALUE" == 0 ]
+ then
+ rm $FILETEST
+ else
+ ogRaiseError $OG_ERR_NOTWRITE "sin acceso de escritura en modo admin"
+ exit $?
+ fi
+ ;;
+ user)
+ if [ "$VALUE" == 0 ]
+ then
+ rm $FILETEST
+ ogRaiseError $OG_ERR_NOTWRITE "Warning: con acceso de escritura en modo user"
+ exit $?
+ fi
+ ;;
+esac
+
diff --git a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c
index d7c0ceb1..d766eb34 100644
--- a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c
+++ b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c
@@ -1132,7 +1132,7 @@ BOOLEAN CrearImagen(TRAMA* ptrTrama)
nfn=copiaParametro("nfn",ptrTrama);
ids=copiaParametro("ids",ptrTrama);
-
+ muestraMensaje(7,NULL);
if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente
muestraMensaje(2,NULL);
sprintf(interface,"%s/%s",pathinterface,nfn);
@@ -1197,7 +1197,7 @@ BOOLEAN RestaurarImagen(TRAMA* ptrTrama)
ids=copiaParametro("ids",ptrTrama);
muestraMensaje(3,NULL);
sprintf(interface,"%s/%s",pathinterface,nfn);
- sprintf(parametros,"%s %s %s %s %s",nfn,dsk,par,nci,ipr);
+ sprintf(parametros,"%s %s %s %s %s %s",nfn,dsk,par,nci,ipr,ptc);
herror=interfaceAdmin(interface,parametros,NULL);
if(herror){
sprintf(msglog,"%s:%s",tbErrores[86],nfn);
diff --git a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h
index 976c393c..f39df68c 100644
--- a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h
+++ b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h
@@ -70,9 +70,56 @@ char* tbErroresScripts[]={"Se han generado errores. No se puede continuar la eje
"011-La información retornada por la interface de administración excede de la longitud permitida",\
"012-Error en el envío de fichero por la red",\
"013-Error en la creación del proceso hijo",\
+ "014-Error de escritura en destino",\
+ "015-Sin Cache en el Cliente",\
+ "016-No hay espacio en la cache para almacenar fichero-imagen",\
+ "017-Error al Reducir el Sistema Archivos",\
+ "018-Error al Expandir el Sistema Archivos",\
+ "019-Error no definido",\
+ "020-Error no definido",\
+ "021-Error no definido",\
+ "022-Error no definido",\
+ "023-Error no definido",\
+ "024-Error no definido",\
+ "025-Error no definido",\
+ "026-Error no definido",\
+ "027-Error no definido",\
+ "028-Error no definido",\
+ "029-Error no definido",\
+ "030-Error al restaurar imagen - Imagen mas grande que particion",\
+ "031-Error no definido",\
+ "032-Error no definido",\
+ "033-Error no definido",\
+ "034-Error no definido",\
+ "035-Error no definido",\
+ "036-Error no definido",\
+ "037-Error no definido",\
+ "038-Error no definido",\
+ "039-Error no definido",\
+ "040-Error no definido",\
+ "041-Error no definido",\
+ "042-Error no definido",\
+ "043-Error no definido",\
+ "044-Error no definido",\
+ "045-Error no definido",\
+ "046-Error no definido",\
+ "047-Error no definido",\
+ "048-Error no definido",\
+ "049-Error no definido",\
+ "050-Error en la generación de sintaxis de transferenica unicast",\
+ "051-Error en envio UNICAST de una particion",\
+ "052-Error en envio UNICAST de un fichero",\
+ "053-Error en la recepcion UNICAST de una particion",\
+ "054-Error en la recepcion UNICAST de un fichero",\
+ "055-Error en la generacion de sintaxis de transferenica Multicast",\
+ "056-Error en envio MULTICAST de un fichero",\
+ "057-Error en la recepcion MULTICAST de un fichero",\
+ "058-Error en envio MULTICAST de una particion",\
+ "059-Error en la recepcion MULTICAST de una particion",\
+ "060-Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER",\
"Error desconocido "
};
- #define MAXERRORSCRIPT 14 // Error máximo cometido
+ #define MAXERRORSCRIPT 999 // Error máximo cometido
// ________________________________________________________________________________________________________
// Prototipo de funciones
// ________________________________________________________________________________________________________
diff --git a/admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php b/admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php
index 819edd1d..c649ee66 100644
--- a/admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php
+++ b/admin/WebConsole/asistentes/includes/asistentes/formCloneRemotePartition.php
@@ -10,9 +10,23 @@
</select>
<br />
<!--DIV donde se mostrara la respuesta AJAX sobre las particiones clonables del equipo-->
- Elige particion del Master a enviar
+ Elige desde el Master la imagen o particion a enviar
<div id="divListado"></div>
<br />
+ Elige la identificacion de la partición destino de los clientes:
+ <select name="targetpart" id="targetpart" style="WIDTH:220";">
+ <option value="1 1"> 1er disco - 1ª particion </option>
+ <option value="1 2"> 1er disco - 2ª particion </option>
+ <option value="1 3"> 1er disco - 3ª particion </option>
+ <option value="1 4"> 1er disco - 4ª particion </option>
+ </select>
+ <br />
+ Elige el metodo de transferencia
+ <select name="idmetodo" id="idmetodo" style="WIDTH:220";">
+ <option value="MULTICAST"> MULTICAST </option>
+ <option value="UNICAST"> UNICAST </option>
+ </select>
+ <br />
Elige herramienta de clonacion:
<select name="tool" id="tool" style="WIDTH:220";">
<option value="partclone"> partclone </option>
@@ -24,15 +38,9 @@
<option value="lzop"> lzop </option>
<option value="gzip"> gzip </option>
</select>
- <br />
-
- <br />
- Elige el metodo de transferencia
- <select name="idmetodo" id="idmetodo" style="WIDTH:220";">
- <option value="MULTICAST"> MULTICAST </option>
- <option value="UNICAST"> UNICAST </option>
- </select>
+ <br />
<br />
+
</td>
<td class="op_mcast">
diff --git a/admin/WebConsole/asistentes/jscripts/asistentes.js b/admin/WebConsole/asistentes/jscripts/asistentes.js
index 3dd08014..a8ab24d8 100644
--- a/admin/WebConsole/asistentes/jscripts/asistentes.js
+++ b/admin/WebConsole/asistentes/jscripts/asistentes.js
@@ -19,7 +19,7 @@ switch (form.idmetodo.value)
break;
}
//form.codigo.value="cloneRemoteFromMaster " + form.ipMaster.value + " 1 " + form.PartOrigen.value + " " + form.mcastpuerto.value + ":" + form.mcastmodo.value + ":" + form.mcastdireccion.value + ":" + form.mcastvelocidad.value + "M:" + form.mcastnclien.value + ":" + form.mcastseg.value + " 1 " + form.PartOrigen.value + " " + form.tool.value + " " + form.compresor.value;
-form.codigo.value="cloneRemoteFromMaster " + form.ipMaster.value + " 1 " + form.PartOrigen.value + " " + protocol + " 1 " + form.PartOrigen.value + " " + form.tool.value + " " + form.compresor.value;
+form.codigo.value="cloneRemoteFromMaster " + form.ipMaster.value + " " + form.source.value + " " + protocol + " " + form.targetpart.value + " " + form.tool.value + " " + form.compresor.value;
}
diff --git a/admin/WebConsole/asistentes/xajax.server.php b/admin/WebConsole/asistentes/xajax.server.php
index 9e0fafa6..f7efb0c7 100644
--- a/admin/WebConsole/asistentes/xajax.server.php
+++ b/admin/WebConsole/asistentes/xajax.server.php
@@ -18,8 +18,12 @@ function ListarOrigenMaster($ip){
$objResponse = new xajaxResponse();
$SelectHtml=" ";
+ $SelectHtml='<select name="source"> ';
+
$cmd=CreaComando($cadenaconexion);
-
+ $rs=new Recordset;
+
+ //Primera consulta: Particiones del MASTER potencialmente clonables.
$cmd->texto='SELECT ordenadores_particiones.numpar as PART,nombresos.nombreso as OS
FROM ordenadores_particiones INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
INNER JOIN nombresos ON ordenadores_particiones.idnombreso=nombresos.idnombreso
@@ -28,30 +32,78 @@ function ListarOrigenMaster($ip){
AND tipospar.clonable>0
AND ordenadores_particiones.idnombreso>0
ORDER BY ordenadores_particiones.numpar';
-
- $rs=new Recordset;
+
$rs->Comando=&$cmd;
-
-
-
+
if ($rs->Abrir()){
$cantRegistros=$rs->numeroderegistros;
if($cantRegistros>0){
- $SelectHtml='<select name="PartOrigen"> <option value="">--Particion a Enviar--</option>';
- $rs->Primero();
+ $rs->Primero();
while (!$rs->EOF){
- $SelectHtml.='<OPTION value="'.$rs->campos["PART"].'"';
+ $SelectHtml.='<OPTION value=" 1 '.$rs->campos["PART"].'"';
$SelectHtml.='>';
- $SelectHtml.= $rs->campos["OS"].'</OPTION>';
+ $SelectHtml.='PART: '. $rs->campos["OS"].'</OPTION>';
$rs->Siguiente();
}
}
else
- {
+ {
$objResponse->alert("Este equipo No tiene particiones clonables.");
}
$rs->Cerrar();
}
+
+ //Segunda consulta: Imagenes del MASTER registradas como si fuese un repo.
+ $cmd->texto='SELECT *,repositorios.ip as iprepositorio FROM imagenes
+INNER JOIN repositorios ON repositorios.idrepositorio=imagenes.idrepositorio
+where repositorios.ip="' .$ip .'"';
+
+ $rs->Comando=&$cmd;
+
+ if ($rs->Abrir()){
+ $cantRegistros=$rs->numeroderegistros;
+ if($cantRegistros>0){
+ $rs->Primero();
+ while (!$rs->EOF){
+ $SelectHtml.='<OPTION value=" CACHE /'.$rs->campos["nombreca"].'"';
+ $SelectHtml.='>';
+ $SelectHtml.='IMG-CACHE: ' . $rs->campos["nombreca"].'</OPTION>';
+ $rs->Siguiente();
+ }
+ }
+ else
+ {
+ $objResponse->alert("Este equipo No tiene imagenes registradas en la cache.");
+ }
+ $rs->Cerrar();
+ }
+
+//Tercera consulta: Imagenes del REPO, que el MASTER se encargara de enivarlas
+ $cmd->texto='SELECT *,repositorios.ip as iprepositorio FROM imagenes
+INNER JOIN repositorios ON repositorios.idrepositorio=imagenes.idrepositorio
+where repositorios.idrepositorio=(select idrepositorio from ordenadores where ordenadores.ip="' .$ip .'")';
+
+
+ $rs->Comando=&$cmd;
+
+ if ($rs->Abrir()){
+ $cantRegistros=$rs->numeroderegistros;
+ if($cantRegistros>0){
+ $rs->Primero();
+ while (!$rs->EOF){
+ $SelectHtml.='<OPTION value=" REPO /'.$rs->campos["nombreca"].'"';
+ $SelectHtml.='>';
+ $SelectHtml.='IMG-REPO: ' . $rs->campos["nombreca"].'</OPTION>';
+ $rs->Siguiente();
+ }
+ }
+ else
+ {
+ $objResponse->alert("Este equipo No tiene acceso a ninguna imagen del REPO asignado.");
+ }
+ $rs->Cerrar();
+ }
+
$SelectHtml.= '</SELECT>';
diff --git a/client/engine/Image.lib b/client/engine/Image.lib
index 399e3da1..c85354a1 100755
--- a/client/engine/Image.lib
+++ b/client/engine/Image.lib
@@ -457,6 +457,7 @@ touch $IMGDIR/$(basename "${!#}").lock
#@exception OG_ERR_NOTFOUND fichero de imagen o partición no detectados.
#@exception OG_ERR_LOCKED partición bloqueada por otra operación.
#@exception OG_ERR_IMAGE error al restaurar la imagen del sistema.
+#@exception OG_ERR_IMGSIZEPARTITION Tamaño de la particion es menor al tamaño de la imagen.
#@todo Comprobar incongruencias partición-imagen, control de errores, definir parámetros, caché/repositorio, etc.
#@version 0.1 - Integracion para Opengnsys - HIDRA:RestaurarImagen{EXT3, NTFS}.sh; EAC: RestorePartitionFromImage() en Deploy.lib
#@author Ramon Gomez, ETSII Universidad de Sevilla
@@ -490,7 +491,7 @@ IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE")
IMGSIZE=$(ogGetImageSize "$1" "$2")
PARTSIZE=$(ogGetPartitionSize $3 $4)
if [ $IMGSIZE -gt $PARTSIZE ]; then
- ogRaiseError $OG_ERR_PARTITION "$IMGSIZE > $PARTSIZE"
+ ogRaiseError $OG_ERR_IMGSIZEPARTITION "$IMGSIZE > $PARTSIZE"
return $?
fi
diff --git a/client/engine/Protocol.lib b/client/engine/Protocol.lib
index 96073ad2..8fa1d85c 100755
--- a/client/engine/Protocol.lib
+++ b/client/engine/Protocol.lib
@@ -2,15 +2,18 @@
#/**
#@file Protocol.lib
#@brief Librería o clase Protocol
-#@class FileTransfer
+#@class Protocol
#@brief Funciones para transmisión de datos
-#@version 0.91
+#@version 1.0
#@warning License: GNU GPLv3+
#*/
+
+##################### FUNCIONES UNICAST ################
+
#/**
# ogUcastSyntax
-#@brief Función para generar la instrucción de ejucucion la transferencia de datos unicast
+#@brief Función para generar la instrucción de transferencia de datos unicast
#@param 1 Tipo de operación [ SENDPARTITION RECEIVERPARTITION SENDFILE RECEIVERFILE ]
#@param 2 Sesion Unicast
#@param 3 Dispositivo (opción PARTITION) o fichero(opción FILE) que será enviado.
@@ -18,16 +21,16 @@
#@param 5 Tools de compresion (opcion PARTITION)
#@return instrucción para ser ejecutada.
#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_UCASTSYNTAXT formato de la sesion unicast incorrecta.
#@note Requisitos: mbuffer
-#@todo
+#@todo: controlar que mbuffer esta disponible para los clientes.
#@version 1.0 -
#@author Antonio Doblas Viso, Universidad de Málaga
#@date 2011/03/09
#*/ ##
-#/**
-#
+
+
-##################### FUNCIONES UNICAST ################
function ogUcastSyntax ()
{
@@ -50,7 +53,7 @@ if [ "$*" == "help" -o "$2" == "help" ]; then
fi
PERROR=0
-#TODO: controlar que mbuffer esta disponible para los clientes.
+
# Error si no se reciben $PARM parámetros.
@@ -99,14 +102,13 @@ DEVICE=$3
if [ "$PARM" == "5" ]
then
# 4 param check
- ogCheckStringInGroup "$4" "partclone partimage ntfsclone" || ogRaiseError $OG_ERR_NOTFOUND " herramienta $4 no soportada" || PERROR=10 #return $?
+ ogCheckStringInGroup "$4" "partclone PARTCLONE partimage PARTIMAGE ntfsclone NTFSCLONE" || ogRaiseError $OG_ERR_NOTFOUND " herramienta $4 no soportada" || PERROR=10 #return $?
TOOL=$4
- ogCheckStringInGroup "$5" "lzop gzip 0 1" || ogRaiseError $OG_ERR_NOTFOUND " compresor $5 no valido" || PERROR=11 #return $?
+ ogCheckStringInGroup "$5" "lzop gzip LZOP GZIP 0 1" || ogRaiseError $OG_ERR_NOTFOUND " compresor $5 no valido" || PERROR=11 #return $?
LEVEL=$5
fi
-
-[ "$PERROR" -gt "0" ] && return 1
+[ "$PERROR" == "0" ] || ogRaiseError $OG_ERR_UCASTSYNTAXT " $PERROR" || return $?
# Generamos la instrucción base de unicast -Envio,Recepcion-
SYNTAXSERVER="mbuffer $ADDRESS"
@@ -124,10 +126,10 @@ SENDPARTITION)
echo "$SYNTAXCLIENT | $COMPRESSOR | $TOOLS "
;;
SENDFILE)
- echo "$SYNTAXSERVER --file $3"
+ echo "$SYNTAXSERVER -i $3"
;;
RECEIVERFILE)
- echo "$SYNTAXCLIENT --file $3"
+ echo "$SYNTAXCLIENT -i $3"
;;
*)
;;
@@ -138,23 +140,26 @@ esac
#/**
# ogUcastSendPartition
#@brief Función para enviar el contenido de una partición a multiples particiones remotas usando UNICAST.
-#@param
-#@param
-#@param
+#@param 1 disk
+#@param 2 partition
+#@param 3 sesionUcast
+#@param 4 tool image
+#@param 5 tool compresor
#@return
-#@exception
+#@exception $OG_ERR_FORMAT
+#@exception $OG_ERR_UCASTSENDPARTITION
#@note
-#@todo: ogIsLocked siempre devuelve 1. crear ticket
-#@version 0.1 - Integración para OpenGNSys.
-#@author
-#@date
+#@todo: ogIsLocked siempre devuelve 1
+#@version 1.0 -
+#@author Antonio Doblas Viso, Universidad de Málaga
+#@date 2011/03/09
#*/ ##
-ogUcastSendPartition ()
+function ogUcastSendPartition ()
{
# Variables locales
-local PART COMMAND
+local PART COMMAND RETVAL
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -173,28 +178,37 @@ ogUnmount $1 $2
#generamos la instrucción a ejecutar.
COMMAND=`ogUcastSyntax SENDPARTITION "$3" $PART $4 $5`
-echo $COMMAND
-eval $COMMAND
+RETVAL=$?
+
+if [ "$RETVAL" -gt "0" ]
+then
+ return $RETVAL
+else
+ echo $COMMAND
+ eval $COMMAND || ogRaiseError $OG_ERR_UCASTSENDPARTITION " "; return $?
+fi
+
}
#/**
# ogUcastReceiverPartition
#@brief Función para recibir directamente en la partición el contenido de un fichero imagen remoto enviado por UNICAST.
-#@param
-#@param
-#@param
+#@param 1 disk
+#@param 2 partition
+#@param 3 session unicast
#@return
-#@exception
+#@exception OG_ERR_FORMAT
+#@exception OG_ERR_UCASTRECEIVERPARTITION
#@note
#@todo:
-#@version 0.1 - Integración para OpenGNSys.
-#@author
-#@date
+#@version 1.0 - Integración para OpenGNSys.
+#@author Antonio Doblas Viso, Universidad de Málaga
+#@date 2011/03/09
#*/ ##
-ogUcastReceiverPartition ()
+function ogUcastReceiverPartition ()
{
# Variables locales
-local PART COMMAND
+local PART COMMAND RETVAL
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -210,14 +224,100 @@ PART=$(ogDiskToDev "$1" "$2") || return $?
#ogIsLocked $1 $2 || ogRaiseError $OG_ERR_LOCKED "$1,$2" || return $?
ogUnmount $1 $2
+
#generamos la instrucción a ejecutar.
COMMAND=`ogUcastSyntax RECEIVERPARTITION "$3" $PART $4 $5`
-echo $COMMAND
-eval $COMMAND
+RETVAL=$?
+
+if [ "$RETVAL" -gt "0" ]
+then
+ return $RETVAL
+else
+ echo $COMMAND
+ eval $COMMAND || ogRaiseError $OG_ERR_UCASTRECEIVERPARTITION " "; return $?
+fi
}
+#/**
+# ogUcastSendFile [ str_repo | int_ndisk int_npart ] /Relative_path_file sessionMulticast
+#@brief Envía un fichero por unicast ORIGEN(fichero) DESTINO(sessionmulticast)
+#@param (2 parámetros) $1 path_aboluto_fichero $2 sesionMcast
+#@param (3 parámetros) $1 Contenedor REPO|CACHE $2 path_absoluto_fichero $3 sesionMulticast
+#@param (4 parámetros) $1 disk $2 particion $3 path_absoluto_fichero $4 sesionMulticast
+#@return
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception $OG_ERR_NOTFOUND
+#@exception OG_ERR_UCASTSENDFILE
+#@note Requisitos:
+#@version 1.0 - Definición de Protocol.lib
+#@author Antonio Doblas Viso, Universidad de Málaga
+#@date 2010/05/09
+#*/ ##
+#
+
+function ogUcastSendFile ()
+{
+# Variables locales.
+local ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE
+
+
+#ARGS usado para controlar ubicación de la sesion multicast
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME [str_REPOSITORY] [int_ndisk int_npart] /Relative_path_file sesionMcast(puerto:ip:ip:ip)" \
+ "$FUNCNAME 1 1 /aula1/winxp.img 8000:172.17.36.11:172.17.36.12" \
+ "$FUNCNAME REPO /aula1/ubuntu.iso sesionUcast" \
+ "$FUNCNAME CACHE /aula1/winxp.img sesionUcast" \
+ "$FUNCNAME /opt/opengnsys/images/aula1/hd500.vmx sesionUcast"
+ return
+fi
+
+ARGS="$@"
+case "$1" in
+ /*) # Camino completo. */ (Comentrio Doxygen)
+ SOURCE=$(ogGetPath "$1")
+ ARG=2
+ DEVICE="$1"
+ ;;
+ [1-9]*) # ndisco npartición.
+ SOURCE=$(ogGetPath "$1" "$2" "$3")
+ ARG=4
+ DEVICE="$1 $2 $3"
+ ;;
+ *) # Otros: repo, cache, cdrom (no se permiten caminos relativos).
+ SOURCE=$(ogGetPath "$1" "$2")
+ ARG=3
+ DEVICE="$1 $2 "
+ ;;
+esac
+
+
+# Error si no se reciben los argumentos ARG necesarios según la opcion.
+[ $# == "$ARG" ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+# Comprobar fichero origen
+ogGetPath $SOURCE &> /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file $DEVICE not found" || return $?
+
+
+
+SESSION=${!ARG}
+
+#generamos la instrucción a ejecutar.
+COMMAND=`ogUcastSyntax "SENDFILE" "$SESSION" "$SOURCE"`
+RETVAL=$?
+
+if [ "$RETVAL" -gt "0" ]
+then
+ return $RETVAL
+else
+ echo $COMMAND
+ eval $COMMAND || ogRaiseError $OG_ERR_UCASTSENDFILE " "; return $?
+fi
+
+}
+
#/**
@@ -230,13 +330,14 @@ eval $COMMAND
#@param 5 Tools de compresion (opcion PARTITION)
#@return instrucción para ser ejecutada.
#@exception OG_ERR_FORMAT formato incorrecto.
-#@note Requisitos: upd-cast 2009
+#@exception OG_ERR_NOTEXEC
+#@exception OG_ERR_MCASTSYNTAXT
+#@note Requisitos: upd-cast 2009 o superior
#@todo localvar check versionudp
-#@version 0.91 - Definición de FileTransfer
+#@version 1.0 -
#@author Antonio Doblas Viso, Universidad de Málaga
#@date 2010/05/09
#*/ ##
-#/**
#
@@ -263,7 +364,7 @@ PERROR=0
#si no tenemos updcast o su version superior 2009 udpcast error.
ISUDPCAST=$(udp-receiver --help 2>&1)
-echo $ISUDPCAST | grep start-timeout > /dev/null || ogRaiseError $OG_ERR_FORMAT "upd-cast no existe o version antigua -requerida 2009-"|| return $?
+echo $ISUDPCAST | grep start-timeout > /dev/null || ogRaiseError $OG_ERR_NOTEXEC "upd-cast no existe o version antigua -requerida 2009-"|| return $?
# Error si no se reciben $PARM parámetros.
@@ -311,14 +412,17 @@ DEVICE=$3
if [ "$PARM" == "5" ]
then
# 4 param check
- ogCheckStringInGroup "$4" "partclone partimage ntfsclone" || ogRaiseError $OG_ERR_NOTFOUND " herramienta $4 no soportada" || PERROR=10 #return $?
+ ogCheckStringInGroup "$4" "partclone PARTCLONE partimage PARTIMAGE ntfsclone NTFSCLONE" || ogRaiseError $OG_ERR_NOTFOUND " herramienta $4 no soportada" || PERROR=10 #return $?
TOOL=$4
- ogCheckStringInGroup "$5" "lzop gzip 0 1" || ogRaiseError $OG_ERR_NOTFOUND " compresor $5 no valido" || PERROR=11 #return $?
+ ogCheckStringInGroup "$5" "lzop LZOP gzip GZIP 0 1" || ogRaiseError $OG_ERR_NOTFOUND " compresor $5 no valido" || PERROR=11 #return $?
LEVEL=$5
fi
-[ "$PERROR" -gt "0" ] && return 1
+if [ "$PERROR" != "0" ]; then
+ ogRaiseError $OG_ERR_MCASTSYNTAXT " $PERROR"; return $?
+fi
+
# Valores estandar no configurables.
CERROR="8x8/128"
@@ -327,7 +431,7 @@ CERROR="8x8/128"
which mbuffer > /dev/null && MBUFFER=" --pipe 'mbuffer -q -m 20M' "
# Generamos la instrucción base de multicast -Envio,Recepcion-
-SYNTAXSERVER="udp-sender $MBUFFER --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS --max-wait $MAXTIME "
+SYNTAXSERVER="udp-sender $MBUFFER --nokbd --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS --max-wait $MAXTIME --autostart $MAXTIME --log /tmp/mcast.log"
SYNTAXCLIENT="udp-receiver $MBUFFER --portbase $PORTBASE "
@@ -362,20 +466,23 @@ esac
#@param (4 parámetros) $1 disk $2 particion $3 path_absoluto_fichero $4 sesionMulticast
#@return
#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception $OG_ERR_NOTFOUND
+#@exception OG_ERR_MCASTSENDFILE
#@note Requisitos:
-#@version 0.91 - Definición de Protocol.lib
+#@version 1.0 - Definición de Protocol.lib
#@author Antonio Doblas Viso, Universidad de Málaga
#@date 2010/05/09
#*/ ##
-#/**
#
function ogMcastSendFile ()
{
# Variables locales.
-local ARGS SOURCE TARGET COMMAND DEVICE
-#ARGS usado para controlar ubicación de la sesion multicast
+local ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE
+#LOGFILE="/tmp/mcast.log"
+
+#ARGS usado para controlar ubicación de la sesion multicast
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME [str_REPOSITORY] [int_ndisk int_npart] /Relative_path_file sesionMcast" \
@@ -412,11 +519,26 @@ esac
# Comprobar fichero origen
ogGetPath $SOURCE &> /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file $DEVICE not found" || return $?
+# eliminamos ficheros antiguos de log
+#rm $LOGFILE
+
SESSION=${!ARG}
-# llamando a la funcion con param1 session $SESSION y param2 $SOURCE
+
+
+
+#generamos la instrucción a ejecutar.
COMMAND=`ogMcastSyntax "SENDFILE" "$SESSION" "$SOURCE"`
-echo $COMMAND
-eval $COMMAND
+RETVAL=$?
+
+if [ "$RETVAL" -gt "0" ]
+then
+ return $RETVAL
+else
+ echo $COMMAND
+ eval $COMMAND || ogRaiseError $OG_ERR_MCASTSENDFILE " "; return $?
+ #[ -s "$LOGFILE" ] || return 21
+fi
+
}
@@ -429,15 +551,15 @@ eval $COMMAND
#@param (4 parámetros) $1 sesionMcastCLIENT $2 disk $3 particion $4 path_absoluto_fichero_destino
#@return
#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception $OG_ERR_MCASTRECEIVERFILE
#@note Requisitos:
-#@version 0.91 - Definición de Protocol.lib
+#@version 1.0 - Definición de Protocol.lib
#@author Antonio Doblas Viso, Universidad de Málaga
#@date 2010/05/09
#*/ ##
-#/**
#
-ogMcastReceiverFile ()
+function ogMcastReceiverFile ()
{
# Variables locales.
@@ -477,30 +599,41 @@ TARGETFILE=`basename ${!ARG}`
#generamos la instrucción a ejecutar.
COMMAND=`ogMcastSyntax RECEIVERFILE "$1" $TARGETDIR/$TARGETFILE `
-echo $COMMAND
-eval $COMMAND
+RETVAL=$?
+
+if [ "$RETVAL" -gt "0" ]
+then
+ return $RETVAL
+else
+ echo $COMMAND
+ eval $COMMAND || ogRaiseError $OG_ERR_MCASTRECEIVERFILE " "; return $?
+ #[ -s "$LOGFILE" ] || return 21
+fi
}
#/**
# ogMcastSendPartition
#@brief Función para enviar el contenido de una partición a multiples particiones remotas.
-#@param
-#@param
-#@param
+#@param 1 disk
+#@param 2 partition
+#@param 3 session multicast
+#@param 4 tool clone
+#@param 5 tool compressor
#@return
-#@exception
+#@exception OG_ERR_FORMAT
+#@exception OG_ERR_MCASTSENDPARTITION
#@note
#@todo: ogIsLocked siempre devuelve 1. crear ticket
-#@version 0.1 - Integración para OpenGNSys.
-#@author
-#@date
+#@version 1.0 - Definición de Protocol.lib
+#@author Antonio Doblas Viso, Universidad de Málaga
+#@date 2010/05/09
#*/ ##
-ogMcastSendPartition ()
+function ogMcastSendPartition ()
{
# Variables locales
-local PART COMMAND
+local PART COMMAND RETVAL
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -516,31 +649,41 @@ PART=$(ogDiskToDev "$1" "$2") || return $?
#ogIsLocked $1 $2 || ogRaiseError $OG_ERR_LOCKED "$1,$2" || return $?
ogUnmount $1 $2
-
#generamos la instrucción a ejecutar.
COMMAND=`ogMcastSyntax SENDPARTITION "$3" $PART $4 $5`
-echo $COMMAND
-eval $COMMAND
+RETVAL=$?
+
+if [ "$RETVAL" -gt "0" ]
+then
+ return $RETVAL
+else
+ echo $COMMAND
+ eval $COMMAND || ogRaiseError $OG_ERR_MCASTSENDPARTITION " "; return $?
+fi
+
+
}
#/**
# ogMcastReceiverPartition
#@brief Función para recibir directamente en la partición el contenido de un fichero imagen remoto enviado por multicast.
-#@param
-#@param
-#@param
+#@param 1 disk
+#@param 2 partition
+#@param 3 session multicast
+#@param 4 tool clone
+#@param 5 tool compressor
#@return
-#@exception
+#@exception $OG_ERR_FORMAT
#@note
#@todo:
-#@version 0.1 - Integración para OpenGNSys.
-#@author
-#@date
+#@version 1.0 - Definición de Protocol.lib
+#@author Antonio Doblas Viso, Universidad de Málaga
+#@date 2010/05/09
#*/ ##
-ogMcastReceiverPartition ()
+function ogMcastReceiverPartition ()
{
# Variables locales
-local PART COMMAND
+local PART COMMAND RETVAL
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
@@ -558,8 +701,16 @@ ogUnmount $1 $2
#generamos la instrucción a ejecutar.
COMMAND=`ogMcastSyntax RECEIVERPARTITION "$3" $PART $4 $5`
-echo $COMMAND
-eval $COMMAND
+RETVAL=$?
+
+if [ "$RETVAL" -gt "0" ]
+then
+ return $RETVAL
+else
+ echo $COMMAND
+ eval $COMMAND || ogRaiseError $OG_ERR_MCASTSENDPARTITION " "; return $?
+fi
+
}
@@ -598,7 +749,7 @@ eval $COMMAND
#mode=leecher -> NO seedear mientras descarga
#time tiempo que una vez descargada la imagen queremos dejar al cliente como seeder.
-ogTorrentStart ()
+function ogTorrentStart ()
{
# Variables locales.
@@ -737,7 +888,7 @@ cd /tmp
#@date
#*/ ##
-ogCreateTorrent ()
+function ogCreateTorrent ()
{
# Variables locales.
local ARGS ARG SOURCE EXT IPTORRENT
diff --git a/client/engine/Protocol.lib.testing b/client/engine/Protocol.lib.testing
index 73a5e63a..8186ed7b 100755
--- a/client/engine/Protocol.lib.testing
+++ b/client/engine/Protocol.lib.testing
@@ -119,7 +119,7 @@ CERROR="8x8/128"
which mbuffer > /dev/null && MBUFFER=" --pipe 'mbuffer -q -m 20M' "
# Generamos la instrucción base de multicast -Envio,Recepcion-
-SYNTAXSERVER="udp-sender $MBUFFER --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS --max-wait $MAXTIME "
+SYNTAXSERVER="udp-sender $MBUFFER --nokbd --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS --max-wait $MAXTIME "
SYNTAXCLIENT="udp-receiver $MBUFFER --portbase $PORTBASE "
diff --git a/client/engine/System.lib b/client/engine/System.lib
index 9973b596..7dbe6422 100755
--- a/client/engine/System.lib
+++ b/client/engine/System.lib
@@ -74,7 +74,24 @@ case "$CODE" in
$OG_ERR_IMAGE) MSG="$MSG_ERR_IMAGE \"$2\"" ;;
$OG_ERR_NOTOS) MSG="$MSG_ERR_NOTOS \"$2\"" ;;
$OG_ERR_NOTEXEC) MSG="$MSG_ERR_NOTEXEC \"$2\"" ;;
- *) MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;;
+ $OG_ERR_NOTWRITE) MSG="$MSG_ERR_NOTWRITE \"$2\"" ;;
+ $OG_ERR_NOTCACHE) MSG="$MSG_ERR_NOTCACHE \"$2\"" ;;
+ $OG_ERR_CACHESIZE) MSG="$MSG_ERR_CACHESIZE \"$2\"" ;;
+ $OG_ERR_REDUCEFS) MSG="$MSG_ERR_REDUCEFS \"$2\"" ;;
+ $OG_ERR_EXTENDFS) MSG="$MSG_ERR_EXTENDFS \"$2\"" ;;
+ $OG_ERR_IMGSIZEPARTITION) MSG="$MSG_ERR_IMGSIZEPARTITION \"$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\"" ;;
+ $OG_ERR_UCASTRECEIVERPARTITION) MSG="$MSG_ERR_UCASTRECEIVERPARTITION \"$2\"" ;;
+ $OG_ERR_UCASTRECEIVERFILE) MSG="$MSG_ERR_UCASTRECEIVERFILE \"$2\"" ;;
+ $OG_ERR_MCASTSYNTAXT) MSG="$MSG_ERR_MCASTSYNTAXT \"$2\"" ;;
+ $OG_ERR_MCASTSENDFILE) MSG="$MSG_ERR_MCASTSENDFILE \"$2\"" ;;
+ $OG_ERR_MCASTRECEIVERFILE) MSG="$MSG_ERR_MCASTRECEIVERFILE \"$2\"" ;;
+ $OG_ERR_MCASTSENDPARTITION) MSG="$MSG_ERR_MCASTSENDPARTITION \"$2\"" ;;
+ $OG_ERR_MCASTRECEIVERPARTITION) MSG="$MSG_ERR_MCASTRECEIVERPARTITION \"$2\"" ;;
+ $OG_ERR_PROTOCOLJOINMASTER) MSG="$MSG_ERR_PROTOCOLJOINMASTER \"$2\"" ;;
+ *) MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;;
esac
# Mostrar mensaje de error y salir con el código indicado.
diff --git a/client/shared/etc/init/default.sh b/client/shared/etc/init/default.sh
index e5e1a34f..fe43dacc 100755
--- a/client/shared/etc/init/default.sh
+++ b/client/shared/etc/init/default.sh
@@ -15,6 +15,10 @@ if ! touch $OGLOGFILE 2>/dev/null; then
fi
LOGLEVEL=5
+#facilitando el entorno Og desde ssh
+cp $OPENGNSYS/etc/preinit/loadenviron.sh /etc/profile.d/
+
+
# Arranque de OpenGnSys Client.
if [ -x "$OPENGNSYS/bin/ogAdmClient" ]; then
echo "$MSG_LAUNCHCLIENT"
diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf
index a63da81a..061ccef8 100644
--- a/client/shared/etc/lang.es_ES.conf
+++ b/client/shared/etc/lang.es_ES.conf
@@ -12,6 +12,24 @@ MSG_ERR_FILESYS="Sistema de archivos desconocido o no se puede montar"
MSG_ERR_NOTOS="Sistema operativo no instalado o no detectado"
MSG_ERR_IMAGE="No se puede crear o restaurar una image de sistema"
MSG_ERR_NOTEXEC="Programa o función no ejecutable"
+MSG_ERR_NOTWRITE="No hay acceso de escritura"
+MSG_ERR_NOTCACHE="No existe particion Cache en el cliente"
+MSG_ERR_CACHESIZE="No existe particion Cache en el cliente"
+MSG_ERR_REDUCEFS="Error al reducir el sistema de archivos"
+MSG_ERR_EXTENDFS="Error al expandir el sistema de archivos"
+MSG_ERR_IMGSIZEPARTITION="Error al restaurar: Particion mas pequeña que la imagen"
+MSG_ERR_UCASTSYNTAXT="Error en la generación de sintaxis de transferenica unicast"
+MSG_ERR_UCASTSENDPARTITION="Error en envio UNICAST de una particion"
+MSG_ERR_UCASTSENDFILE="Error en envio UNICAST de un fichero"
+MSG_ERR_UCASTRECEIVERPARTITION="Error en la recepcion UNICAST de una particion"
+MSG_ERR_UCASTRECEIVERFILE="Error en la recepcion UNICAST de un fichero"
+MSG_ERR_MCASTSYNTAXT="Error en la generación de sintaxis de transferenica multicast"
+MSG_ERR_MCASTSENDFILE="Error en envio MULTICAST de un fichero"
+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"
+
# Mensajes de avisos.
MSG_DONTMOUNT="Sistema de archivos no montado"
diff --git a/client/shared/etc/preinit/loadenviron.sh b/client/shared/etc/preinit/loadenviron.sh
index c3dae813..af891534 100755
--- a/client/shared/etc/preinit/loadenviron.sh
+++ b/client/shared/etc/preinit/loadenviron.sh
@@ -77,4 +77,27 @@ export OG_ERR_LOCKED=4 # Partición o fichero bloqueado.
export OG_ERR_IMAGE=5 # Error al crear o restaurar una imagen.
export OG_ERR_NOTOS=6 # Sin sistema operativo.
export OG_ERR_NOTEXEC=7 # Programa o función no ejecutable.
+#codigo 8-13 reservados por ogAdmClient.h
+export OG_ERR_NOTWRITE=14 # No hay acceso de escritura
+export OG_ERR_NOTCACHE=15 # No hay particion cache en cliente
+export OG_ERR_CACHESIZE=16 # No hay espacio en la cache para almacenar fichero-imagen
+export OG_ERR_REDUCEFS=17 # Error al reducir sistema archivos
+export OG_ERR_EXTENDFS=18 # Error al expandir el sistema de archivos
+
+export OG_ERR_IMGSIZEPARTITION=30 #Error al restaurar: Particion mas pequeña que la imagen.
+
+export OG_ERR_UCASTSYNTAXT=50 # Error en la generación de sintaxis de transferenica unicast
+export OG_ERR_UCASTSENDPARTITION=51 # Error en envio UNICAST de una particion
+export OG_ERR_UCASTSENDFILE=52 # Error en envio UNICAST de un fichero
+export OG_ERR_UCASTRECEIVERPARTITION=53 #Error en la recepcion UNICAST de una particion
+export OG_ERR_UCASTRECEIVERFILE=54 #Error en la recepcion UNICAST de un fichero
+export OG_ERR_MCASTSYNTAXT=55 # Error en la generacion de sintaxis de transferenica Multicast.
+export OG_ERR_MCASTSENDFILE=56 # Error en envio MULTICAST de un fichero
+export OG_ERR_MCASTRECEIVERFILE=57 #Error en la recepcion MULTICAST de un fichero
+export OG_ERR_MCASTSENDPARTITION=58 # Error en envio MULTICAST de una particion
+export OG_ERR_MCASTRECEIVERPARTITION=59 # Error en la recepcion MULTICAST de una particion
+export OG_ERR_PROTOCOLJOINMASTER=60 # Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER
+
+
+
diff --git a/client/shared/scripts/cloneRemoteFromMaster b/client/shared/scripts/cloneRemoteFromMaster
index 1a3fd070..a7a5e11b 100755
--- a/client/shared/scripts/cloneRemoteFromMaster
+++ b/client/shared/scripts/cloneRemoteFromMaster
@@ -1,43 +1,52 @@
#!/bin/bash
-# Script para la clonacion de particiones remotas.
-# (puede usarse como base para el programa de restauración de imágenes usado por OpenGnSys Admin).
-# Versión: 0.9.1, 2009/03/17, - Antonio J. Doblas Viso. Universidad de Malaga.
-# Versión: 0.9.2, 2010/07/27, - Antonio J. Doblas Viso. Universidad de Malaga.
-# Version: 0.1.0 2011/01/26, - Antonio J. Doblas Viso. Universidad de Malaga.
-TIME1=$SECONDS
-PROG="$(basename $0)"
-#if [ $# -ne 5 ]; then
- # ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG tamaño"
-# exit $?
-#fi
-
-
-#/** @function cloneremoteFromMaster: @brief Restaura una particion o imagen sobre las particiones de equipos cliente remotos
-#@param $1 str_origen admite dirección IP del equipo Master.
-#@param $2 str_origen admite int_disk str_REPO|str_CACHE
-#@param $3 str_origen admite int partorigen stre_imagen
-#@param $4 str_sesion multicast
+#/**
+# cloneremoteFromMaster
+#@brief Restaura una particion o imagen sobre las particiones de equipos cliente remotos
+#@param 1 str_origen admite dirección IP del equipo Master.
+#@param 2 str_origen admite int_disk str_REPO|str_CACHE
+#@param 3 str_origen admite int partorigen stre_imagen
+#@param 4 str_sesion multicast|unicast
#@param $5 int_disco_destino
#@param $6 init_particion_destino
+#@param $7 str_tool_clone
+#@param $8 str_tool_compresor
#@param ejemplo: cloneRemoteFromMaster 172.17.36.11 1 1 9000:full-duplex:239.194.17.36:70M:50:100 1 1 partclone lzop
#@param ejemplo: cloneRemoteFromMaster 172.17.36.11 REPO /imagen1 9000:full-duplex:239.194.17.36:70M:50:100 1 1 partclone lzop
#@param ejemplo: cloneRemoteFromMaster 172.17.36.11 CACHE /imagen1 9000:full-duplex:239.194.17.36:70M:50:100 1 1 partclone lzop
-#@return la propia de la herramienta de clonacion partimage o ntfsclone
-#
-
+#@return
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception $OG_ERR_IMGSIZEPARTITION=30 #Imagen demasiado pequeña para ser clonada
+#@exception OG_ERR_REDUCEFS=17 #error al reducir sistema de archivos.
+#@exception OG_ERR_EXTENDFS=18 #errror al expandir el sistema de archivos.
+#@exception OG_ERR_UCASTSYNTAXT=50 # Error en la generación de sintaxis de transferenica unicast
+#@exception OG_ERR_UCASTSENDPARTITION=51 # Error en envio UNICAST de una particion
+#@exception OG_ERR_UCASTSENDFILE=52 # Error en envio UNICAST de un fichero
+#@exception OG_ERR_UCASTRECEIVERPARTITION=53 #Error en la recepcion UNICAST de una particion
+#@exception OG_ERR_UCASTRECEIVERFILE=54 #Error en la recepcion UNICAST de un fichero
+#@exception OG_ERR_MCASTSYNTAXT=55 # Error en la generacion de sintaxis de transferenica Multicast.
+#@exception OG_ERR_MCASTSENDFILE=56 # Error en envio MULTICAST de un fichero
+#@exception OG_ERR_MCASTRECEIVERFILE=57 #Error en la recepcion MULTICAST de un fichero
+#@exception OG_ERR_MCASTSENDPARTITION=58 # Error en envio MULTICAST de una particion
+#@exception OG_ERR_MCASTRECEIVERPARTITION=59 # Error en la recepcion MULTICAST de una particion
+#@exception OG_ERR_PROTOCOLJOINMASTER=60 # Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER
+#@note
+#@todo:
+#@version 0.9.1 - integración con OpenGnsys
+#@author Antonio J. Doblas Viso. Universidad de Malaga.
+#@date 2009/03/17
+#@version 0.9.2 - adaptacion a OpenGnsys
+#@author Antonio J. Doblas Viso. Universidad de Malaga.
+#@date 2010/07/27
+#@version 0.1.0 - gestion unicast
+#@author Antonio J. Doblas Viso. Universidad de Malaga.
+#@date 2011/01/26
+#@version 1.0 - control de errores para el ogAdmServer
+#@author Antonio J. Doblas Viso. Universidad de Malaga.
+#@date 2011/04/24
+#*/ ##
-FOUNDSOURCE=false
-HOSTIP=`ogGetIpAddress`
-
-SESSIONMCASTSERVER=$4
-SESSIONMCASTCLIENT=`echo $4 | awk -F: '{print $1}'`
-DISKTARGET=$5
-PARTTARGET=$6
-TOOLCLONE=$7
-COMPRESOR=$8
-
TIME1=$SECONDS
PROG="$(basename $0)"
if [ $# -lt 1 ]; then
@@ -50,26 +59,15 @@ if [ $# -lt 6 ]; then
exit $?
fi
-#Chequeamos variables-constantes
-
-# check HOSTIP
+# Obtener información de los parámetros de entrada.
+HOSTIP=`ogGetIpAddress`
if [ -z "$HOSTIP" ]
then
- source /tmp/net-eth0.conf
+ source /tmp/net-eth*
HOSTIP=`ogGetIpAddress`
fi
-MODEMASTER=false
-
-
-#Chequeamos parametros.
-
-# is $1 a valid IP
MASTERIP=$1
-
-# contendor origen (disco particion o file)
-
PROTOCOL=$4
-# Controlamos si multicast o unicast.
case $PROTOCOL in
MULTICAST|multicast)
SESSIONMCASTSERVER=$5
@@ -80,88 +78,62 @@ case $PROTOCOL in
SESSIONUCASTCLIENT=`echo $5 | awk -F: '{print $1}'`:$MASTERIP
;;
esac
-
-
# contenedor destino (disco particion)
DISKTARGET=$6
PARTTARGET=$7
-
#herramienta de compresión.
TOOLCLONE=$8
COMPRESOR=$9
+pkill faucet
-###IMG=$(ogGetPath $2 $3.img)
-###echo $IMG
-
-# Check command in Master (sendFile or sendPartition)
-
+# Preparando Instrucción según sea Master o Client
case $MASTERIP in
$HOSTIP)
- ogGetPath $2 $3.img
- RC=`echo $?`
- echo "$RC comenzando control del valor del origen $2 $3"
- if [ $RC == "0" ]
- then
- echo "mode senfile"
- IMG=$(ogGetPath $2 $3.img)
- MODEMASTER=SENDFILE
+ echo "[1] Equipo Master preparando el origen de los datos a enviar"
+ ogGetPath $2 $3.img &>/dev/null; RC=$?;
+ ogDiskToDev $2 $3 &>/dev/null; RETVAL=$?;
+
+ if [ "$RC" == "0" ]; then
+ IMG=$(ogGetPath $2 $3.img); MODEMASTER=SENDFILE
+ elif [ "$RETVAL" == "0" ]; then
+ DISKSOURCE=$2; PARTSOURCE=$3; MODEMASTER=SENDPARTITION
else
- if [ $(ogDiskToDev $2 $3) ]
- then
- echo "mode sendpartitons"
- DISKSOURCE=$2
- PARTSOURCE=$3
- MODEMASTER=SENDPARTITION
- fi
- fi
-
- echo "modo " $MODEMASTER
-
- if [ "$MODEMASTER" == "false" ]
- then
- echo "cloneRemote: origen no encontrado"
- exit 1
- else
- echo "cloneRemote: sistema preparando para un $MODEMASTER"
- fi
-
+ ogRaiseError $OG_ERR_NOTFOUND "$2 $3"; exit $?
+ fi
+ echo $MODEMASTER
+ # Preparando instrucción del Master segun $MODEMASTER{SENDPARTITION SENDFILE}
+
case "$MODEMASTER" in
SENDPARTITION)
- echo "[5]: cloneRemoteFromMaster: sistema preparando como MASTER modo $MODEMASTER"
+ echo "[5] Master en modo $MODEMASTER: informacion inicial a los clientes-slaves"
+ faucet 4000 --out echo "WORKING" &
echo "[10]: Desmontando DISK:$DISKSOURCE PARTITION:$PARTSOURCE"
- ogUnmount $2 $3 || exit
+ ogUnmount $2 $3 || exit $?
+ echo "[15]: Calculando la reduccion del sistema de archivos DISK:$DISKSOURCE PARTITION:$PARTSOURCE SIZE:$SIZE"
#Obtener tamaño de la partición.
SIZE=$(ogGetPartitionSize $2 $3)
# Reducir el sistema de archvios.
- echo "[15]: Calculando la reduccion del sistema de archivos DISK:$DISKSOURCE PARTITION:$PARTSOURCE SIZE:$SIZE"
- ogReduceFs $2 $3 || exit 1
-
- #echo "salida de ogReduceFS" $?
- #if [ $? == 1 ]
- #then
- # echo "no se ha podido reducir FS"
-# exit 1
-#
+ ogReduceFs $2 $3 || exit $?
REDSIZE=$(ogGetFsSize $2 $3)
echo "[20]: Reducido el sistema de archivos a $REDSIZE $DISKSOURCE $PARTSOURCE"
if [ $REDSIZE -lt $SIZE ]; then
echo "[24] Redimensionar partición a $REDSIZE KB."
ogSetPartitionSize $2 $3 $REDSIZE
fi
- echo "[25] ofreciendo informacion a los clientes-slaves"
- faucet 4000 --out echo "$TOOLCLONE $COMPRESOR $REDSIZE" &
-
- echo "[30] Enviando $PROTOCOL "
+ echo "[25] Master en Modo $MODEMASTER: informacion de transferencia a los clientes-slaves $PROTOCOL $TOOLCLONE $COMPRESOR $REDSIZE"
+ pkill faucet
+ faucet 4000 --out echo "READY $TOOLCLONE $COMPRESOR $REDSIZE" &
+
case $PROTOCOL in
MULTICAST|multicast)
- echo ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR
- ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR
+ echo "[29] ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR"
+ ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR || RETVAL=$?
;;
UNICAST|unicast)
sleep 60
- echo "ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR"
- ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR
+ echo "[29] ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR"
+ ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR || RETVAL=$?
;;
esac
@@ -173,39 +145,55 @@ case $MASTERIP in
fi
pkill faucet
;;
- SENDFILE)
- echo "[5]: cloneRemoteFromMaster: sistema preparando como MASTER modo $MODEMASTER"
+ SENDFILE)
+ echo "[5] Master en modo $MODEMASTER: informacion inicial a los clientes-slaves"
echo "[10]: Preparando Imagen: $IMG"
TOOLCLONE=$(ogGetImageProgram $2 $3)
COMPRESOR=$(ogGetImageCompressor $2 $3)
REDSIZE=$(ogGetImageSize $2 $3)
- echo "[25] ofreciendo informacion a los clientes-slaves: $TOOLCLONE $COMPRESOR $REDSIZE"
- faucet 4000 --out echo "$TOOLCLONE $COMPRESOR $REDSIZE" &
-
- echo "[30] Enviando $PROTOCOL:"
- echo "ogMcastSendFile $2 $3.img $SESSIONMCASTSERVER "
- ogMcastSendFile $2 $3.img $SESSIONMCASTSERVER
-
+ echo "[25] Master en Modo $MODEMASTER: informacion de transferencia a los clientes-slaves $PROTOCOL $TOOLCLONE $COMPRESOR $REDSIZE"
+ faucet 4000 --out echo "READY $TOOLCLONE $COMPRESOR $REDSIZE" &
+ case $PROTOCOL in
+ MULTICAST|multicast)
+ echo "[29] ogMcastSendFile $2 $3.img $SESSIONMCASTSERVER "
+ ogMcastSendFile $2 $3.img $SESSIONMCASTSERVER || RETVAL=$?
+ ;;
+ UNICAST|unicast)
+ sleep 60
+ echo "[29] ogUcastSendFile $2 $3.img $SESSIONUCASTSERVER"
+ ogUcastSendFile $2 $3.img $SESSIONUCASTSERVER || RETVAL=$?
+ ;;
+ esac
pkill faucet
- ;;
+ ;;
esac
- pkill faucet
+ #exit $RETVAL
+ exit 0
+ # FIN Preparando instrucción del Master segun $MODEMASTER{SENDPARTITION SENDFILE}
;;
*)
- echo "[5]: cloneRemoteFromMaster: sistema preparando como CLIENTE modo $MODEMASTER"
- ogUnmount $DISKTARGET $PARTTARGET
- echo "[24] Cliente intentando conectar con el master $MASTERIP"
- echo -n "[25] Buscando informacion extra sobre la clonacion: "
- # While para esperar al servidor
- while [ -z "$INFOEXTRA" ]
+ echo "[1] Equipo -Client- preparando para recibir datos"
+ ogUnmount $DISKTARGET $PARTTARGET || exit $?
+ echo -n "[25] Buscando informacion extra sobre la clonacion con el master $MASTERIP: "
+ sleep 10
+ TIMEWAITMASTER=120
+ TIMEWAITING=0
+ GETINFO="NONE"
+ while [ "${GETINFO}" != "OK" ]
do
INFOEXTRA=`hose $MASTERIP 4000 --in cat 2>/dev/null`
- sleep 10
- echo -n "."
+ sleep 10; echo -n "."
+ #Si no consigue conectar con Master, comienza el timeout $TIMEWAITMASTER para abortar
+ [ -z "$INFOEXTRA" ] && let TIMEWAITMASTER=$TIMEWAITMASTER-10
+ [ "$TIMEWAITMASTER" -gt "0" ] || ogRaiseError $OG_ERR_PROTOCOLJOINMASTER " " || exit $?
+ #Si primer parametro desde el server es READY, salimos del bucle
+ GETINFO=$(echo $INFOEXTRA | awk '{print $1}')
+ [ "$GETINFO" == "READY" ] && GETINFO=OK
done
- TOOLCLONE=$(echo $INFOEXTRA | awk '{print $1}')
- COMPRESOR=$(echo $INFOEXTRA | awk '{print $2}')
- SIZEIMAGE=$(echo $INFOEXTRA | awk '{print $3}')
+ echo $INFOEXTRA
+ TOOLCLONE=$(echo $INFOEXTRA | awk '{print $2}')
+ COMPRESOR=$(echo $INFOEXTRA | awk '{print $3}')
+ SIZEIMAGE=$(echo $INFOEXTRA | awk '{print $4}')
echo -n "[25] $INFOEXTRA = herramienta= $TOOLCLONE compresor= $COMPRESOR size= $SIZEIMAGE "
# comprobamos que el tamaño de a imagen es menor que la del cliente.
SIZEPARTTARGET=$(ogGetPartitionSize $DISKTARGET $PARTTARGET)
@@ -215,11 +203,11 @@ case $MASTERIP in
case $PROTOCOL in
MULTICAST|multicast)
echo ogMcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONMCASTCLIENT $TOOLCLONE $COMPRESOR
- ogMcastReceiverPartition "$DISKTARGET" "$PARTTARGET" "$SESSIONMCASTCLIENT" "$TOOLCLONE" "$COMPRESOR"
+ ogMcastReceiverPartition "$DISKTARGET" "$PARTTARGET" "$SESSIONMCASTCLIENT" "$TOOLCLONE" "$COMPRESOR" || exit $?
;;
UNICAST|unicast)
echo ogUcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONUCASTCLIENT $TOOLCLONE $COMPRESOR
- ogUcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONUCASTCLIENT $TOOLCLONE $COMPRESOR
+ ogUcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONUCASTCLIENT $TOOLCLONE $COMPRESOR || exit $?
;;
esac
@@ -234,9 +222,8 @@ case $MASTERIP in
ogSetWindowsName $DISKTARGET $PARTTARGET "$HOST"
fi
else
- echo -n "[25] $INFOEXTRA = herramienta= $TOOLCLONE compresor= $COMPRESOR size= $SIZEIMAGE "
- echo -n "[26] ERROR tamanio particion= $SIZEPARTTARGET tamanio de la imagen= $SIZEIMAGE"
- exit 1
+ # Si el tamaño de los datos recibidos es más grande que la particion destino
+ ogRaiseError $OG_ERR_IMGSIZEPARTITION "ERROR tamanio particion= $SIZEPARTTARGET tamanio de la imagen= $SIZEIMAGE"; exit $?
fi
;;
esac
diff --git a/client/shared/scripts/createImage b/client/shared/scripts/createImage
index 8e98113a..c0b2a036 100755
--- a/client/shared/scripts/createImage
+++ b/client/shared/scripts/createImage
@@ -1,6 +1,26 @@
#!/bin/bash
-# createImage - Scirpt de ejemplo para crear una imagen de un sistema de archivos.
-# (puede usarse como base para el programa de creación de imágenes usado por OpenGnSys Admin).
+
+#/**
+# createImage
+#@brief Scirpt de ejemplo para crear una imagen de un sistema de archivos.
+#@brief (puede usarse como base para el programa de creación de imágenes usado por OpenGnSys Admin).
+#@param 1 disco
+#@param 2 particion
+#@param 3 REPO|CACHE
+#@param 4 imagen
+#@return
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTCACHE #si cache no existe.
+#@exception OG_ERR_REDUCEFS #error al reducir sistema de archivos.
+#@exception OG_ERR_EXTENDFS #errror al expandir el sistema de archivos.
+#@note
+#@todo:
+#@version 1.0 - control de errores para el ogAdmServer
+#@author
+#@date
+#*/ ##
+
+
TIME1=$SECONDS
PROG="$(basename $0)"
@@ -17,7 +37,7 @@ IMGEXT="img"
# Si el repositorio es CACHE comprobamos que exista
if [ "$3" == "CACHE" -o "$3" == "cache" ]; then
if ! $(ogFindCache >/dev/null); then
- ogRaiseError $OG_ERR_NOTFOUND "CACHE"
+ ogRaiseError $OG_ERR_NOTCACHE "$MSG_ERR_NOTCACHE"
exit $?
fi
fi
@@ -47,7 +67,7 @@ ogUnmount $1 $2
ogCheckFs $1 $2
echo "[30]: Reducir sistema de archivos."
-ogReduceFs $1 $2 || exit 1
+ogReduceFs $1 $2 || $(ogRaiseError $OG_ERR_REDUCEFS "$1 $2"; exit $?)
# Crear la imagen.
echo "[40] Crear imagen."
@@ -55,7 +75,8 @@ ogCreateImage $1 "$2" $3 $4 "$IMGPROG" "$IMGCOMP" || exit $?
#ogCreateImage $1 "$2" $3 $4 || exit $?
echo "[90] Extender sistema de archivos."
-ogExtendFs $1 $2
+ogExtendFs $1 $2 || $(ogRaiseError $OG_ERR_EXTENDFS "$1 $2"; exit $?)
+
TIME=$[SECONDS-TIME1]
echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s"
diff --git a/doc/CHANGELOG.es.txt b/doc/CHANGELOG.es.txt
index 4d0b7889..9a39fe56 100644
--- a/doc/CHANGELOG.es.txt
+++ b/doc/CHANGELOG.es.txt
@@ -11,7 +11,7 @@ Tickets resueltos en módulo OpenGnSys Cloning Engine:
#286 Parámetro debug para el engine
#291 Creación de imagenes desde el modo user
#298 Tratamientos de bloqueos de imágenes para solucionar problemas de concurrencia (mejora)
-#305 Integración engine version 1.0
+#305 Integración engine versión 1.0
#309 Integración create/restoreImage Trunk y Testing: extensión .img
#337 Scripts cliente: reboot|poweroff sleep antes de llamar a Busybox (no se resolverá)
#342 ogGetImageInfo() Partclone size MB GB
@@ -23,13 +23,14 @@ Tickets resueltos en módulo OpenGnSys Cloning Engine:
Tickets resueltos en módulo OpenGnSys Client:
#93 Gestionar una estructura de directorios Linux debootstrap para enlazarlo al Initrd
+#115 ogAdmClient no lee correctamente el fichero de configuración
#131 Generar paquetes deb para el cliente (no se resolverá)
#162 Optimizar el uso del fichero-disco con particiones para su uso en entorno virtualizado (mejora)
#163 Incluir en el cliente la clave autorizada rsa ssh del servidor
#189 Añadir las variables de entorno y Engine en las consolas tty2-tty7 y remotas
#243 Browser incluye terminal con letra monospace y barra de estado en UTF-8 (mejora)
#288 Integración modulo netboot
-#294 Integración activacion wol del cliente
+#294 Integración activación Wake On LAN del cliente
#303 Integración proceso arranque cliente versión 1.0
#304 Integración interface adm versión 1.0
#314 SMB punto acceso 2nd FileSystem del cliente [tftpboot] [ogboot]
@@ -45,6 +46,7 @@ Tickets resueltos en módulo OpenGnSys Server:
Tickets resueltos en módulo OpenGnSys Repository Server:
#188 Al restaurar por torrent el BitFile no se crea siempre
#300 Integración binarios del repo
+#384 Se ha portado una versión antigua del script sendFileMcast
Tickets resueltos en módulo OpenGnSys Web Admin Console:
#126 Integración de consola Web con bittorent (mejora)
@@ -54,11 +56,13 @@ Tickets resueltos en módulo OpenGnSys Web Admin Console:
#258 Error al eliminar un perfil de software
#266 Información unidades en tamaño de la caché
#268 Erratas en texto de formularios
-#301 Integración modulos web versión 1.0
-#302 Integración base de datos version 1.0
-#306 Asistente Clonacion Particiones Remotas no genera código
+#301 Integración módulos web versión 1.0
+#302 Integración base de datos versión 1.0
+#306 Asistente Clonación Particiones Remotas no genera código
#307 Asistente Deploy de Imagenes no muestra nombres de imágenes
+#308 Asistente Deploy de Imagenes - multicast: no lanza el repo
#310 Instalar: no genera las propiedades del repositorio por defecto en la consola (duplicado de #248)
+#315 OpenGnSys distribuido: CloneRemoteFromPartition en Unicast
#338 Validación de formularios de la consola web
#339 Añadir opción de apagado en cliente sin menú asociado (mejora)
#349 Botón de confirmación en gestor de arranque
@@ -68,12 +72,13 @@ Tickets resueltos en módulo OpenGnSys Web Admin Console:
Tickets resueltos en módulo OpenGnSys Installer:
#299 Instalador para la versión 1.0
-#312 instalador: torrent-tracker no se se instala
+#312 Instalador: torrent-tracker no se se instala
#313 Instalador: no genera la estrucutra para el cliente
#316 Error en opengnsys_update.sh al copiar archivos de servicios
#335 Error en opengnsys_update.sh al descomprimir cliente
#361 Actualizador debe aplicar cambios en la estructura de base de datos
#365 Comprobar conectividad http y svn en el instalador
+#366 Fichero interfaceAdm/CambiarAcceso no se instala con los correspondientes permisos para el grupo
Tickets genéricos resueltos:
#362 Convertir versión 1.0 en rama principal de desarrollo
@@ -91,7 +96,7 @@ Tickets resueltos en módulo OpenGnSys Cloning Engine:
#276 Error de CRC al restaurar imágenes con Partclone
#292 Error de CRC al restaurar o crear imagen (duplicado de #276)
#290 ogReduceFs en Ext[234]
-#293 createImageTesting incluye el redimensionado de la particion origen pero luego no la expande
+#293 createImageTesting incluye el redimensionado de la partición origen pero luego no la expande
#297 Error al detectar tipo de partición Linux marcada como activa
Tickets resueltos en módulo OpenGnSys Client:
@@ -118,7 +123,7 @@ Tickets resueltos en módulo OpenGnSys Web Admin Console:
#254 Consola Web: particionar y formatear
#259 Consola Web: información de un repositorio
#282 Gestión web de log
-#283 Gestor de activacion/desactivacion modulos web
+#283 Gestor de activación/desactivación módulos web
#284 Modulo web: propiedades aula/equipos combo box para elementos netboot
#285 Modulo web: propiedades aula/equipos combo box para elementos netboot
@@ -136,7 +141,7 @@ Lista de cambios incluidos en OpenGnSys 0.9.2
Tickets resueltos en módulo OpenGnSys Cloning Engine:
#159 No reconoce Ubuntu 10.04
-#165 funcion torrent no migrada correctamente desde el branch
+#165 Función torrent no migrada correctamente desde el branch
#166 Errores Particionando y Formateando
#172 Protocol.lib Error control nº parámetros sesión multicast de cliente
#178 Adaptar funciones de generación y restauración de imágenes monolíticas
@@ -208,9 +213,9 @@ Tickets resueltos en módulo OpenGnSys Cloning Engine:
#17 Arrancar Windows Vista
#38 Documentar codigo shell scripts linux con doxygen
#50 Ayuda en las funciones
-#52 funcion generacion documentacion doxygen para bash
+#52 Función generación documentación Doxygen para BASH
#58 Utilizar formato de ayuda y función ogHelp
-#61 ogListPartitions muestra el tipo de sistemas de archivos de la particion y no el tipo de particion en cuestión
+#61 ogListPartitions muestra el tipo de sistemas de archivos de la particion y no el tipo de partición en cuestión
#71 ogListPartitions falla con partición extendida
#73 Mensajes de error en particiones vacías
#75 Arrancar sistemas Linux en partición distinta a la original
@@ -222,8 +227,8 @@ Tickets resueltos en módulo OpenGnSys Cloning Engine:
#101 trunk Disk.lib error linea 445
#109 ogSetPartitionId no modifica bien el identificador de la partición
#110 ogCreatePartitions no llama a ogTypeToId
-#111 ogFormatFS no reconoce el tipo de partiticion CACHE
-#121 ogCreatePartitions revision 813
+#111 ogFormatFS no reconoce el tipo de partitición CACHE
+#121 ogCreatePartitions revisión 813
Tickets resueltos en módulo OpenGnSys Client:
#11 Páginas de inicio estilo rembo
@@ -232,7 +237,7 @@ Tickets resueltos en módulo OpenGnSys Client:
#41 Usar kernel 2.6.30 o superior en los clientes (mejora)
#55 Incluir tune2fs y resize2fs en cliente Initrd
#56 Montar particiones ReiserFS en cliente Initrd
-#59 añadir mkfs para los sitemas ext al cliente initrd
+#59 Añadir mkfs para los sitemas Ext al cliente initrd
#60 default de preinit no inicia el sistema
#67 Cliente QT no importa NFS
#68 Cliente no encuentra el subdirectorio de logs
@@ -240,13 +245,13 @@ Tickets resueltos en módulo OpenGnSys Client:
#84 oginit considera siempre al servidor dhcp como si fuese el servidor opengnsys
#105 El browser del cliente no detecta algunos ratones
#106 Añadir al busybox del initrd soporte de configuración de red (no se resolverá)
-#118 Funcion ogGetIpAddress no obtiene la ip adecuadamente
+#118 Función ogGetIpAddress no obtiene la ip adecuadamente
Tickets resueltos en módulo OpenGnSys Web Admin Console:
#10 Consola no detecta bien el inventario de hardware
#19 Integrar las bases de datos (tarea)
#20 Creación de scripts de instalación (no se ressolverá)
-#25 Interfaz web: Problemas con la creacion de entidades
+#25 Interfaz web: Problemas con la creación de entidades
#34 Unificar codificación de caracteres en interfaz web
#42 Error en menú opciones ordenador (tarea)
#54 Gestión de usuarios
@@ -277,7 +282,7 @@ Tickets resueltos en módulo OpenGnSys Installer:
#95 Petición de clave rootMySQL en reintento de instalación tar.gz
#102 Fallo en el instalador
#103 ogAdmClient.cfg no compatible con el instalacion (lineas en blanco al final)
-#104 el instalador no configura bien el dhcp, nfs-export
+#104 El instalador no configura bien el dhcp, nfs-export
#107 Actualizador da error si no se ha eliminado el directorio de /tmp
#123 Creación de usuarios por defecto en el instalador
diff --git a/doc/VERSION.txt b/doc/VERSION.txt
index 79c512fa..0b7640f7 100644
--- a/doc/VERSION.txt
+++ b/doc/VERSION.txt
@@ -1 +1 @@
-OpenGnSys 1.0
+OpenGnSys 1.0.1
diff --git a/installer/opengnsys_installer.sh b/installer/opengnsys_installer.sh
index 1c668b5c..6dd373cd 100755
--- a/installer/opengnsys_installer.sh
+++ b/installer/opengnsys_installer.sh
@@ -44,8 +44,8 @@ if [ -d "$PROGRAMDIR/../installer" ]; then
USESVN=0
else
USESVN=1
- SVN_URL="http://$OPENGNSYS_SERVER/svn/branches/version1.0/"
fi
+SVN_URL="http://$OPENGNSYS_SERVER/svn/branches/version1.0/"
WORKDIR=/tmp/opengnsys_installer
mkdir -p $WORKDIR
@@ -711,11 +711,8 @@ function smbConfigure()
errorAndLog "${FUNCNAME}(): error while configure Samba"
return 1
fi
- # Crear usuario de acceso a los recursos y establecer permisos.
- useradd $OPENGNSYS_CLIENT_USER 2>/dev/null
+ # Crear clave para usuario de acceso a los recursos.
echo -ne "$OPENGNSYS_CLIENT_PASSWD\n$OPENGNSYS_CLIENT_PASSWD\n" | smbpasswd -a -s $OPENGNSYS_CLIENT_USER
- chmod -R 775 $INSTALL_TARGET/{log/clients,images,tftpboot/pxelinux.cfg}
- chown -R :$OPENGNSYS_CLIENT_USER $INSTALL_TARGET/{log/clients,images,tftpboot/pxelinux.cfg}
echoAndLog "${FUNCNAME}(): Added Samba configuration."
return 0
@@ -835,17 +832,17 @@ function makeDoxygenFiles()
# Crea la estructura base de la instalación de opengnsys
-function openGnsysInstallCreateDirs()
+function createDirs()
{
if [ $# -ne 1 ]; then
errorAndLog "${FUNCNAME}(): invalid number of parameters"
exit 1
fi
- local path_opengnsys_base=$1
+ local path_opengnsys_base="$1"
+ # Crear estructura de directorios.
echoAndLog "${FUNCNAME}(): creating directory paths in $path_opengnsys_base"
-
mkdir -p $path_opengnsys_base
mkdir -p $path_opengnsys_base/bin
mkdir -p $path_opengnsys_base/client
@@ -853,17 +850,38 @@ function openGnsysInstallCreateDirs()
mkdir -p $path_opengnsys_base/etc
mkdir -p $path_opengnsys_base/lib
mkdir -p $path_opengnsys_base/log/clients
+ ln -fs $path_opengnsys_base/log /var/log/opengnsys
mkdir -p $path_opengnsys_base/sbin
mkdir -p $path_opengnsys_base/www
mkdir -p $path_opengnsys_base/images
ln -fs /var/lib/tftpboot $path_opengnsys_base
- ln -fs $path_opengnsys_base/log /var/log/opengnsys
-
+ mkdir -p $path_opengnsys_base/tftpboot/pxelinux.cfg
if [ $? -ne 0 ]; then
errorAndLog "${FUNCNAME}(): error while creating dirs. Do you have write permissions?"
return 1
fi
+ # Crear usuario ficticio.
+ if id -u $OPENGNSYS_CLIENT_USER &>/dev/null; then
+ echoAndLog "${FUNCNAME}(): user \"$OPENGNSYS_CLIENT_USER\" is already created"
+ else
+ echoAndLog "${FUNCNAME}(): creating OpenGnSys user"
+ useradd $OPENGNSYS_CLIENT_USER 2>/dev/null
+ if [ $? -ne 0 ]; then
+ errorAndLog "${FUNCNAME}(): error creating OpenGnSys user"
+ return 1
+ fi
+ fi
+
+ # Establecer los permisos básicos.
+ echoAndLog "${FUNCNAME}(): setting directory permissions"
+ chmod -R 775 $path_opengnsys_base/{log/clients,images,tftpboot/pxelinux.cfg}
+ chown -R :$OPENGNSYS_CLIENT_USER $path_opengnsys_base/{log/clients,images,tftpboot/pxelinux.cfg}
+ if [ $? -ne 0 ]; then
+ errorAndLog "${FUNCNAME}(): error while setting permissions"
+ return 1
+ fi
+
echoAndLog "${FUNCNAME}(): directory paths created"
return 0
}
@@ -1129,10 +1147,17 @@ function openGnsysConfigure()
function installationSummary()
{
+ # Crear fichero de versión y revisión, si no existe.
+ local VERSIONFILE="$INSTALL_TARGET/doc/VERSION.txt"
+ local REVISION=$(LANG=C svn info $SVN_URL|awk '/Revision:/ {print "r"$2}')
+ [ -f $VERSIONFILE ] || echo "OpenGnSys" >$VERSIONFILE
+ perl -pi -e "s/($| r[0-9]*)/ $REVISION/" $VERSIONFILE
+
+ # Mostrar información.
echo
echoAndLog "OpenGnSys Installation Summary"
echo "=============================="
- echoAndLog "Project version: $(cat $INSTALL_TARGET/doc/VERSION.txt 2>/dev/null)"
+ echoAndLog "Project version: $(cat $VERSIONFILE 2>/dev/null)"
echoAndLog "Installation directory: $INSTALL_TARGET"
echoAndLog "Repository directory: $INSTALL_TARGET/images"
echoAndLog "DHCP configuration file: /etc/dhcp3/dhcpd.conf"
@@ -1195,7 +1220,7 @@ if [ $? -ne 0 ]; then
fi
# Arbol de directorios de OpenGnSys.
-openGnsysInstallCreateDirs ${INSTALL_TARGET}
+createDirs ${INSTALL_TARGET}
if [ $? -ne 0 ]; then
errorAndLog "Error while creating directory paths!"
exit 1
diff --git a/installer/opengnsys_update.sh b/installer/opengnsys_update.sh
index f3159d59..79ac7857 100755
--- a/installer/opengnsys_update.sh
+++ b/installer/opengnsys_update.sh
@@ -36,9 +36,9 @@ if [ -d "$PROGRAMDIR/../installer" ]; then
USESVN=0
else
USESVN=1
- SVN_URL=http://$OPENGNSYS_SERVER/svn/branches/version1.0
DEPS="$DEPS subversion"
fi
+SVN_URL="http://$OPENGNSYS_SERVER/svn/branches/version1.0/"
WORKDIR=/tmp/opengnsys_update
mkdir -p $WORKDIR
@@ -357,8 +357,8 @@ function makeDoxygenFiles()
# Crea la estructura base de la instalación de opengnsys
function createDirs()
{
+ # Crear estructura de directorios.
echoAndLog "${FUNCNAME}(): creating directory paths in ${INSTALL_TARGET}"
-
mkdir -p ${INSTALL_TARGET}
mkdir -p ${INSTALL_TARGET}/bin
mkdir -p ${INSTALL_TARGET}/client
@@ -366,17 +366,38 @@ function createDirs()
mkdir -p ${INSTALL_TARGET}/etc
mkdir -p ${INSTALL_TARGET}/lib
mkdir -p ${INSTALL_TARGET}/log/clients
+ ln -fs ${INSTALL_TARGET}/log /var/log/opengnsys
mkdir -p ${INSTALL_TARGET}/sbin
mkdir -p ${INSTALL_TARGET}/www
mkdir -p ${INSTALL_TARGET}/images
ln -fs /var/lib/tftpboot ${INSTALL_TARGET}
- ln -fs ${INSTALL_TARGET}/log /var/log/opengnsys
-
+ mkdir -p ${INSTALL_TARGET}/tftpboot/pxelinux.cfg
if [ $? -ne 0 ]; then
errorAndLog "${FUNCNAME}(): error while creating dirs. Do you have write permissions?"
return 1
fi
+ # Crear usuario ficticio.
+ if id -u $OPENGNSYS_CLIENTUSER &>/dev/null; then
+ echoAndLog "${FUNCNAME}(): user \"$OPENGNSYS_CLIENTUSER\" is already created"
+ else
+ echoAndLog "${FUNCNAME}(): creating OpenGnSys user"
+ useradd $OPENGNSYS_CLIENTUSER 2>/dev/null
+ if [ $? -ne 0 ]; then
+ errorAndLog "${FUNCNAME}(): error creating OpenGnSys user"
+ return 1
+ fi
+ fi
+
+ # Establecer los permisos básicos.
+ echoAndLog "${FUNCNAME}(): setting directory permissions"
+ chmod -R 775 $INSTALL_TARGET/{log/clients,images,tftpboot/pxelinux.cfg}
+ chown -R :$OPENGNSYS_CLIENTUSER $INSTALL_TARGET/{log/clients,images,tftpboot/pxelinux.cfg}
+ if [ $? -ne 0 ]; then
+ errorAndLog "${FUNCNAME}(): error while setting permissions"
+ return 1
+ fi
+
echoAndLog "${FUNCNAME}(): directory paths created"
return 0
}
@@ -517,6 +538,24 @@ function updateClient()
echoAndLog "${FUNCNAME}(): Client update successfully"
}
+# Resumen de actualización.
+function updateSummary()
+{
+ # Actualizar fichero de versión y revisión.
+ local VERSIONFILE="$INSTALL_TARGET/doc/VERSION.txt"
+ local REVISION=$(LANG=C svn info $SVN_URL|awk '/Revision:/ {print "r"$2}')
+
+ [ -f $VERSIONFILE ] || echo "OpenGnSys" >$VERSIONFILE
+ perl -pi -e "s/($| r[0-9]*)/ $REVISION/" $VERSIONFILE
+
+ echo
+ echoAndLog "OpenGnSys Update Summary"
+ echo "========================"
+ echoAndLog "Project version: $(cat $VERSIONFILE)"
+ echo
+}
+
+
#####################################################################
####### Proceso de actualización de OpenGnSys
@@ -616,6 +655,9 @@ if [ -f /tmp/dstate ]; then
rm -f /tmp/dstate
fi
+# Mostrar resumen de actualización.
+updateSummary
+
#rm -rf $WORKDIR
echoAndLog "OpenGnSys update finished at $(date)"
diff --git a/repoman/bin/sendFileMcast b/repoman/bin/sendFileMcast
index b1c124f1..39f6a947 100755
--- a/repoman/bin/sendFileMcast
+++ b/repoman/bin/sendFileMcast
@@ -61,7 +61,6 @@ CERROR="8x8/128"
which mbuffer &> /dev/null && MBUFFER="--pipe 'mbuffer -m 20M'"
##### ADV v. 1.0 23/02/2011
#version 0.10 # udp-sender $MBUFFER --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 1 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG"
-#/opt/opengnsys/bin/udp-sender $MBUFFER --nokbd --retries-until-drop 65 --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 1 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG" --log /opt/opengnsys/log/ogAdmRepoMcast.log
-/opt/opengnsys/bin/udp-sender $MBUFFER --nokbd --retries-until-drop 65 --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 1 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG"
+$OGBIN/udp-sender $MBUFFER --nokbd --retries-until-drop 65 --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 1 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG"
##### ADV v. 1.0 23/02/2011