diff options
-rwxr-xr-x | admin/Interface/CambiarAcceso | 2 | ||||
-rwxr-xr-x | admin/Interface/CrearImagenBasica | 16 | ||||
-rwxr-xr-x | admin/Interface/CrearSoftIncremental | 18 | ||||
-rwxr-xr-x | admin/Sources/Services/ogAdmRepoAux | 19 | ||||
-rwxr-xr-x | client/engine/Rsync.lib | 2 | ||||
-rwxr-xr-x | client/shared/scripts/createBaseImage | 19 | ||||
-rwxr-xr-x | client/shared/scripts/createDiffImage | 22 |
7 files changed, 44 insertions, 54 deletions
diff --git a/admin/Interface/CambiarAcceso b/admin/Interface/CambiarAcceso index 64516e4f..73275eef 100755 --- a/admin/Interface/CambiarAcceso +++ b/admin/Interface/CambiarAcceso @@ -9,7 +9,7 @@ # Error si llamada no se realliza desde OpenGnSys Client. PROG=$(basename $0) CALLER=$(ogGetCaller) -if [ "$CALLER" != "CrearImagen" -a "$CALLER" != "ConsolaRemota" ]; then +if ! $(ogCheckStringInGroup "$CALLER" "CrearImagen ConsolaRemota CrearImagenBasica CrearSoftIncremental"); then ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG" exit $? fi diff --git a/admin/Interface/CrearImagenBasica b/admin/Interface/CrearImagenBasica index f89ef401..8aaf5aa8 100755 --- a/admin/Interface/CrearImagenBasica +++ b/admin/Interface/CrearImagenBasica @@ -51,13 +51,21 @@ # Registro de inicio de ejecución ogEcho log session "$MSG_INTERFACE_START $0 $*" + # Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura, + PATH=$PATH:$(dirname $0) + CLIENTIP=$(ogGetIpAddress) + [ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO + if [ "$DEST" == "REPO" -a "$boot" != "admin" ]; then + CambiarAcceso admin &>> $OGLOGFILE + RETVAL=$? + [ $RETVAL -gt 0 ] && exit $RETVAL + fi + if [ $7 -eq 1 ]; then #sincronizacion1 ogCrearImagenBasica "$@" RETVAL=$? fi - - if [ $7 -eq 2 ]; then # Sincronizacion2 @@ -72,13 +80,15 @@ [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false - [ "$4" == "0.0.0.0" ] && DEST="CACHE" || DEST="REPO" + # [ "$4" == "0.0.0.0" ] && DEST="CACHE" || DEST="REPO" createBaseImage $1 $2 $DEST "$3" RETVAL=$? fi + # Si estamos en modo user montamos el repositorio en modo lectura. + [ "$DEST" == "REPO" -a "$boot" != "admin" ] && CambiarAcceso user # Registro de fin de ejecución ogEcho log session "$MSG_INTERFACE_END $RETVAL" diff --git a/admin/Interface/CrearSoftIncremental b/admin/Interface/CrearSoftIncremental index 74edc4b5..fc29451e 100755 --- a/admin/Interface/CrearSoftIncremental +++ b/admin/Interface/CrearSoftIncremental @@ -50,6 +50,17 @@ # Registro de inicio de ejecución ogEcho log session "$MSG_INTERFACE_START $0 $*" + + # Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura, + PATH=$PATH:$(dirname $0) + CLIENTIP=$(ogGetIpAddress) + [ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO + if [ "$DEST" == "REPO" -a "$boot" != "admin" ]; then + CambiarAcceso admin &>> $OGLOGFILE + RETVAL=$? + [ $RETVAL -gt 0 ] && exit $RETVAL + fi + if [ $8 -eq 1 ]; then #sincronizacion1 ogCrearSoftIncremental "$@" @@ -71,13 +82,16 @@ [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false # REPOSITORIO: Si la ip es la del propio equipo CACHE, si no REPO - CLIENTIP=$(ogGetIpAddress) - [ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO + #CLIENTIP=$(ogGetIpAddress) + #[ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO createDiffImage $1 $2 $DEST "$3" "$5" RETVAL=$? fi + # Si estamos en modo user montamos el repositorio en modo lectura. + [ "$DEST" == "REPO" -a "$boot" != "admin" ] && CambiarAcceso user + # Registro de fin de ejecución ogEcho log session "$MSG_INTERFACE_END $RETVAL" diff --git a/admin/Sources/Services/ogAdmRepoAux b/admin/Sources/Services/ogAdmRepoAux index 1884f5d5..05bac0ce 100755 --- a/admin/Sources/Services/ogAdmRepoAux +++ b/admin/Sources/Services/ogAdmRepoAux @@ -231,7 +231,7 @@ case "$PARM1" in file $IMGFILE |grep -i -e " ext4 filesystem " 2>&1 > /dev/null || exit 0 [ -d $DIRMOUNT ] || mkdir $DIRMOUNT - mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen"; exit 1) + mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen $IMGFILE"; exit 1) # Si el espacio libre menor que 500Mb desmontamos la imagen y nos salimos AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}') @@ -259,31 +259,16 @@ case "$PARM1" in # Calculamos el tamaño final del archivo INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}') let EXTSIZE=$INTSIZE+$EDGESIZE - umount $DIRMOUNT + umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1) # Si existe dispositivo loop lo borramos. [ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE # Corto el archivo al tamaño del sistema de ficheros echo "truncate --size=\"$EXTSIZE\"k $IMGFILE" echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE" truncate --size="$EXTSIZE"k $IMGFILE - rmdir $DIRMOUNT ;; - LOCK_IMAGE) - # Bloquea el archivo de la imagen. - #1 LOCK_IMAGE - #2 Nombre_Imagen.extension - echolog "Bloqueamos imagen $REPODIR$PARM2" - touch "$REPODIR$PARM2.lock" - ;; - UNLOCK_IMAGE) - # Desloquea el archivo de la imagen. - #1 UNLOCK_IMAGE - #2 Nombre_Imagen.extension - echolog "Desbloqueamos imagen $REPODIR$PARM2" - rm -f "$REPODIR$PARM2.lock" - ;; default) echolog "Solicitud con parametros \"$PARM\" no realizada, no registrada o con errores" ;; diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib index b4811226..2c05b26f 100755 --- a/client/engine/Rsync.lib +++ b/client/engine/Rsync.lib @@ -209,7 +209,7 @@ else # Comprobamos que los ficheros de diferencias no esten vacios o salimos con error. if [ $(grep -v -e "^$" -e "^#" $IMGINFO /tmp/ogimg.ln /tmp/ogimg.rm |wc -l) -eq 0 ]; then ogRaiseError $OG_ERR_NOTDIFFERENT "$1 $2 $3 $4 $5" - return $0 + return $? fi fi diff --git a/client/shared/scripts/createBaseImage b/client/shared/scripts/createBaseImage index b3b3b4b1..4aa5acd3 100755 --- a/client/shared/scripts/createBaseImage +++ b/client/shared/scripts/createBaseImage @@ -29,13 +29,8 @@ trap "onexit $1 $2 $3 \"$4\"" 1 2 3 6 9 14 15 EXIT # Si salimos con error demontamos la imagen y desbloqueamos la imagen y la particion function onexit() { local exit_status=$? - ogUnmountImage $3 "$4" $IMGEXT &>/dev/null if [ $exit_status -ne 4 ]; then - if [ "$3" == "CACHE" -o "$3" == "cache" ]; then - ogUnlockImage "$3" "/$4.$IMGEXT" - else - hose $REPOIP 2009 --out sh -c "echo -ne UNLOCK_IMAGE \"$4.$IMGEXT\" " - fi + ogUnlockImage "$3" "/$4.$IMGEXT" ogUnlock $1 $2 fi exit $exit_status @@ -130,17 +125,10 @@ IMGFILE=${IMGDIR[$3]}/$(basename "/$4").$IMGEXT echo " " > $OGLOGCOMMAND TIME2=$SECONDS -if [ "$3" == "CACHE" -o "$3" == "cache" ]; then - ogLockImage "$3" "/$4.$IMGEXT" -else - ogEcho log session "hose $REPOIP 2009 --out sh -c echo -ne LOCK_IMAGE $4.$IMGEXT" - hose $REPOIP 2009 --out sh -c "echo -ne LOCK_IMAGE \"$4.$IMGEXT\" " -fi -exit - 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. ogEcho log session "[50] $MSG_HELP_ogCreateFileImage." +ogLockImage "$3" "/$4.$IMGEXT" ogCreateFileImage $3 "$4" $IMGEXT $SIZEREQUIRED # Creamos la lista del contenido y lo situamos en la particion a copiar. @@ -165,11 +153,12 @@ ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TI # Reducimos la imagen: solo para kernel <= 3.7, imagenes con FS ext4. (Desmonta y desbloquea la imagen) ogEcho log session "[80] $MSG_HELP_ogReduceImage: $3 /$4.$IMGEXT" ogReduceImage $3 "$4" $IMGEXT -sleep 10 +# TODO: necesaria funcion que espere a que se reduzca la imagen para continuar el script echo " " > $OGLOGCOMMAND # Comprobamos que la imagen esta bien detectacdo que es un sistema de ficheros. ogEcho log session "[95] $MSG_HELP_ogCheckSyncImage" +sleep 10 ogCheckSyncImage $3 "$4" "img" || exit $(ogRaiseError session $OG_ERR_IMAGE "$3 $4 img" ; echo $?) #resumen de la operacion diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage index 73ac893c..ef4b280f 100755 --- a/client/shared/scripts/createDiffImage +++ b/client/shared/scripts/createDiffImage @@ -33,13 +33,8 @@ function onexit() { ogUnmountImage $3 "$5" $DIFFTYPE &>/dev/null ogUnmountImage $3 "$4" $IMGEXT &>/dev/null if [ $exit_status -ne 4 ]; then - if [ "$3" == "CACHE" -o "$3" == "cache" ]; then - ogUnlockImage "$3" "/$4.$IMGEXT" &>/dev/null - ogUnlockImage "$3" "/$5.$DIFFEXT" &>/dev/null - else - hose $REPOIP 2009 --out sh -c "echo -ne UNLOCK_IMAGE \"$4.$IMGEXT\" " - hose $REPOIP 2009 --out sh -c "echo -ne UNLOCK_IMAGE \"$5.$DIFFEXT\" " - fi + ogUnlockImage "$3" "/$4.$IMGEXT" &>/dev/null + ogUnlockImage "$3" "/$5.$DIFFEXT" &>/dev/null ogUnlock $1 $2 &>/dev/null fi exit $exit_status @@ -109,13 +104,8 @@ ORIG=$(ogMount $1 $2) || exit $(ogRaiseError session $OG_ERR_PARTITION "$1 $2" DIFFDIR="$(ogGetParentPath "$3" "/$5")" DIFFFILE="$DIFFDIR/$5.$DIFFEXT" -if [ "$3" == "CACHE" -o "$3" == "cache" ]; then - ogLockImage "$3" "/$4.$IMGEXT" - ogLockImage "$3" "/$5.$DIFFEXT" -else - hose $REPOIP 2009 --out sh -c "echo -ne LOCK_IMAGE \"$4.$IMGEXT\" " - hose $REPOIP 2009 --out sh -c "echo -ne LOCK_IMAGE \"$5.$DIFFEXT\" " -fi +ogLockImage "$3" "/$4.$IMGEXT" +ogLockImage "$3" "/$5.$DIFFEXT" # Comprobar consistencia del sistema de archivos. echo " " > $OGLOGCOMMAND @@ -153,6 +143,7 @@ ogWaitMountImage $3 "$4" $IMGEXT || exit $(ogRaiseError session $OG_ERR_DONTMOUN # Creamos la informacion de la imagen. ogEcho log session "[50] $MSG_HELP_ogCreateInfoImage " ogCreateInfoImage $1 $2 $3 "$4" "${DIFFTYPE}" +[ $? -eq $OG_ERR_NOTDIFFERENT ] && exit $(ogRaiseError session $OG_ERR_NOTDIFFERENT; echo $?) #Calculamos el tamaño de la imagen: ogMount $1 $2 >/dev/null @@ -203,11 +194,12 @@ ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[ # Reducimos la imagen diferencial -> solo para kernel <= 3.7, imagenes con FS ext4 ogEcho log session "[80] $MSG_HELP_ogReduceImage: $3 /$4.$IMGEXT" ogReduceImage $3 "$5" $DIFFTYPE -sleep 10 +# TODO: necesaria funcion que espere a que se reduzca la imagen para continuar el script echo " " > $OGLOGCOMMAND # Comprobamos que la imagen esta bien ogEcho log session "[95] $MSG_HELP_ogCheckSyncImage" +sleep 10 ogCheckSyncImage $3 "$5" diff || exit $(ogRaiseError session $OG_ERR_IMAGE "$3 $5 diff"; echo $?) #resumen de la operacion |