summaryrefslogtreecommitdiffstats
path: root/repoman
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2014-06-18 10:42:24 +0000
committerramon <ramongomez@us.es>2014-06-18 10:42:24 +0000
commit1602040392ece97f3876f6b756158141a41cac3a (patch)
treedd933aa35b10a8dcb8bfc98c21f51de309f56cad /repoman
parent51c2318a7174de452b9ebd41dde9335a97b94e3f (diff)
Versión 1.0.5, #616: Integrar código de la versión 1.0.5 en rama principal.
git-svn-id: https://opengnsys.es/svn/trunk@4309 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'repoman')
-rw-r--r--repoman/README.es.txt1
-rwxr-xr-xrepoman/bin/deleteimage78
-rwxr-xr-xrepoman/bin/deletepreimage62
-rwxr-xr-xrepoman/bin/opengnsys.cron31
-rwxr-xr-xrepoman/bin/sendFileMcast2
-rwxr-xr-xrepoman/bin/torrent-creator6
-rw-r--r--repoman/etc/rsyncd.conf.tmpl14
-rw-r--r--repoman/etc/rsyncd.secrets.tmpl1
8 files changed, 168 insertions, 27 deletions
diff --git a/repoman/README.es.txt b/repoman/README.es.txt
index cfcf31b4..c71a23d2 100644
--- a/repoman/README.es.txt
+++ b/repoman/README.es.txt
@@ -5,5 +5,6 @@ OpenGnSys Repository Manager RREADME
Este directorio contiene la estructura de datos del repositorio de datos de OpenGnSys.
- bin binarios y scripts de gestión del repositorio.
+- etc ficheros o plantillas de configuración del repositorio.
diff --git a/repoman/bin/deleteimage b/repoman/bin/deleteimage
index c65277a8..3807b841 100755
--- a/repoman/bin/deleteimage
+++ b/repoman/bin/deleteimage
@@ -1,13 +1,17 @@
#!/bin/bash
-# deleteimage [ -d | -r ] str_image
+# deleteimage [ -b | -r | -i ] str_image
#@file deleteimage
#@brief Borra del repositorio los ficheros de una imagen.
-#@param -d Elimina también la copia de seguridad de la imagen (opcional).
+#@param -b Elimina también la copia de seguridad de la imagen (opcional).
#@param -r Recupera la copia de seguridad de la imagen (opcional).
+#@param -i Elimina imagen Incremental o Basica
#@param str_image Nombre canónico de la imagen, sin extensión.
-#@version 1.0.5
-#@date 2013-03-06
-#@author Ramón Gómez, ETSII Universidad de Sevilla
+#@version 1.0 - Versión inicial.
+#@date 2012-10-14
+#@author Ramón Gómez, ETSII Univ. Sevilla
+#@version 1.2 - Eliminar imagen incremental.
+#@date 2013-07-17
+#@author Alberto García, Univ. Málaga
PROG=$(basename $0)
@@ -15,39 +19,40 @@ OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
OGIMG=$OPENGNSYS/images
IMGEXT="img"
BAKEXT="ant"
-
+DIFFEXT="diff"
+
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
cat << EOT
$PROG: Borra los ficheros de una imagen del repositorio.
-Formato: $PROG [ -d | -r ] str_image
- -d Elimina también la copia de seguridad de la imagen.
+Formato: $PROG [ -b | -r | -i | -d ] str_image
+ -b Elimina también la copia de seguridad de la imagen.
-r Recupera la copia de seguridad de la imagen.
+ -i Elimina imagen Incremental o Basica
+ -d Elimina Directorios
Ejemplo: $PROG imagen1
EOT
exit 0
fi
+
# Procesar parámetros
-while getopts dr OPTION; do
+while getopts brid OPTION; do
case $OPTION in
- d) DELETEBACKUP=1 ;;
+ b) DELETEBACKUP=1 ;;
r) RECOVERBACKUP=1 ;;
+ i) DELETEINCREMEN=1 ;;
+ d) DELETEDIRECTORIO=1 ;;
*) ERR=1 ;;
esac
shift $((OPTIND-1))
done
-[ -n "$DELETEBACKUP" ] && [ -n "$RECOVERBACKUP" ] && ERR=1
+
+[ -n "$DELETEBACKUP" ] && [ -n "$RECOVERBACKUP" ] && [ -n "$DELETEINCREMEN" ] && [ -n "$DELETEDIRECTORIO" ] && ERR=1
if [ $# != 1 -o -n "$ERR" ]; then
- echo "$PROG Error: Formato: $PROG [ -b | -r ] str_image"
+ echo "$PROG Error: Formato: $PROG [ -b | -r | -i | -d ] str_image"
exit 1
fi
-# Fichero principal de la imagen.
-IMGFILE="$OGIMG/$1.$IMGEXT"
-
-# Eliminar ficheros de la imagen.
-rm -f $IMGFILE && rm -f $IMGFILE.{sum,torrent}
-
# Recuperar copia de seguridad de la imagen.
if [ -n "$RECOVERBACKUP" ]; then
mv -f $IMGFILE.$BAKEXT $IMGFILE && \
@@ -60,3 +65,40 @@ if [ -n "$DELETEBACKUP" ]; then
rm -f $IMGFILE.$BAKEXT && rm -f $IMGFILE.{sum,torrent}.$BAKEXT
fi
+# Borrar directorio de imagen
+IMGFILECA="$OGIMG/$1"
+if [ -n "$DELETEINCREMEN" ];then
+rm -R $IMGFILECA && exit
+fi
+
+# Si el Nombre canonico es un directorio eliminamos
+# o si la opcion es i tambien eliminamos
+IMGFILECA="$OGIMG/$1"
+if [ -n "$DELETEDIRECTORIO" ]; then
+rm -R $IMGFILECA && exit
+
+# Si el Nomobre canonico NO es un directorio
+else
+ # Comprobamos si es un archivo backup .ant
+ NOMBREANT=$(echo $1 | awk -F. '{print $1}')
+ if [ $1 == "$NOMBREANT.$BAKEXT" ]; then
+ IMGFILE="$OGIMG/$NOMBREANT.$IMGEXT.$BAKEXT"
+ # Eliminar fichero de seguridad .img.ant
+ rm -f $IMGFILE
+ else
+ # Comprobamos si es un archivo diferencial .diff
+ NOMBREDIF="$OGIMG/$1.$IMGEXT.$DIFFEXT"
+ if [ -f $NOMBREDIF ]; then
+ IMGFILE="$OGIMG/$1.$IMGEXT.$DIFFEXT"
+ # Eliminar fichero diferencial .diff .torrent .sum
+ rm -f $IMGFILE && rm -f $IMGFILE.{sum,torrent}
+
+ else
+ # Fichero principal de la imagen.
+ IMGFILE="$OGIMG/$1.$IMGEXT"
+ # Eliminar ficheros de la imagen.
+ rm -f $IMGFILE && rm -f $IMGFILE.{sum,torrent}
+ fi
+ fi
+
+fi \ No newline at end of file
diff --git a/repoman/bin/deletepreimage b/repoman/bin/deletepreimage
new file mode 100755
index 00000000..85883aea
--- /dev/null
+++ b/repoman/bin/deletepreimage
@@ -0,0 +1,62 @@
+#!/bin/bash
+# Eliminar las imagenees del repositiro seg�raca de la consola web .img
+#Version 0.3 Ejecuci�n desde cron cada minuto.
+#echo "* * * * * root /opt/opengnsys/bin/image-delete" > /etc/cron.d/imagedelete
+
+# Comprobar si el proceso ya est� en ejecuci�n.on.
+PROG=$(basename $0)
+[ "$(pgrep "$PROG")" != "$$" ] && exit
+
+# Variables.
+OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
+PATH=$PATH:$OPENGNSYS/bin
+OGIMG="$OPENGNSYS/images"
+REPOCFG="$OPENGNSYS/etc/ogAdmRepo.cfg"
+LOGFILE="$OPENGNSYS/log/$PROG.log"
+
+# Error si no est� bien configurado el repositorio de im�genes.nes.
+[ -d $OGIMG -a -f $REPOCFG ] || exit 1
+
+# Procesar ficheros de im�genes.s.
+trap 'echo "`date` : Proceso interrumpido" >> $LOGFILE; exit ' 1 2 3 6 9 15
+
+#TODO en LOCAL: si existe algun fichero *.delete lo movemos al repositorio
+ls /opt/opengnsys/www/tmp/*.delete &>/dev/null || exit
+#[ -f /opt/opengnsys/www/tmp/*.delete ] &&
+mv /opt/opengnsys/www/tmp/*.* /opt/opengnsys/images/
+
+#TODO: iniciar blucle siempre y cuando haya algun delete
+ls /opt/opengnsys/images/*.delete &>/dev/null || exit
+
+for IMG in `ls /opt/opengnsys/images/*.delete`; do
+ ## Obtenemos el nombre de la imagen
+ DELETEIMAGE=$(echo $IMG | awk -F"." '{print $1}' | awk -F"/opt/opengnsys/images/" '{print $2}')
+
+ # Borramos marca .delete para que el proximo cron no trabaje sobre este conjunto.
+ [ -f $IMG ] && rm $IMG
+
+ ## Comprobamos si es un Directorio .delete
+ DELETEdir=$(echo $IMG | awk -F"." '{print $2}') ## .delete
+ DELETEant=$(echo $IMG | awk -F"." '{print $3}') ## .ant
+ DELETEdiff=$(echo $IMG | awk -F"." '{print $3}') ## .diff
+ ## Si NO es ninguno es un img
+
+ ## se llama al escript de borrado de imagen.
+ ## Si es un Directorio Borramos
+ if [[ $DELETEdir == "delete" ]]; then
+ /opt/opengnsys/bin/deleteimage -d $DELETEIMAGE
+
+ # Si es un Imagen Backup Borramos
+ elif [[ $DELETEant == "ant" ]]; then
+ DELETEIMAGE=$DELETEIMAGE".ant"
+ /opt/opengnsys/bin/deleteimage $DELETEIMAGE
+
+ # Si es un Imagen diff Borramos
+ elif [[ $DELETEdiff == "diff" ]]; then
+ /opt/opengnsys/bin/deleteimage $DELETEIMAGE
+
+ # Si no es una de las anteriores lo que queda es img
+ else
+ /opt/opengnsys/bin/deleteimage $DELETEIMAGE
+ fi
+done \ No newline at end of file
diff --git a/repoman/bin/opengnsys.cron b/repoman/bin/opengnsys.cron
index 76236f73..be5a0508 100755
--- a/repoman/bin/opengnsys.cron
+++ b/repoman/bin/opengnsys.cron
@@ -1,20 +1,39 @@
#!/bin/bash
-# Comprobamos si los servicios de opengnsys están levantado y si no es así los iniciamos.
+# opengnsys.cron - Script para comprobar si los servicios de OpenGnSys están levantados
+# e iniciarlos automáticamente.
+# Nota: este script debe ser lanzado por Cron cada minuto.
+
+
# Variables.
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
LOGDIR="$OPENGNSYS/log"
DEFAULTFILE=/etc/default/opengnsys
+typeset -i OGCPU # % uso CPU
# Comprobar servicios que deben estar activos.
[ -f $DEFAULTFILE ] && source $DEFAULTFILE
-# Si un servicio debe estar activo y no se está ejecutando, reiniciar OpenGnSys.
-if [ "$RUN_OGADMSERVER" == "yes" -a $(pgrep ogAdmServer | wc -w) == 0 ]; then
- date +"%d/%m/%Y %T ERROR: El servicio ogAdmServer estaba caido, se reinicia" >> $LOGDIR/ogAdmServer.log
- /etc/init.d/opengnsys restart
+# Salir si no se debe ejecutar la revisión en el cron.
+[ "$RUN_CRONJOB" == "no" ] && exit
+
+# Comprobar si está activo el servidor OpenGnSys.
+if [ "$RUN_OGADMSERVER" == "yes" ]; then
+ # Parar procesos ogAdmServer si consume más de 90% de CPU.
+ OGPID=$(pgrep ogAdmServer)
+ OGCPU=$(top -b -n 1 -p $OGPID 2>/dev/null | awk -v p=$OGPID '$1~p {printf "%d",$9}')
+ if [ $OGCPU -gt 90 ]; then
+ date +"%d/%m/%Y %H:%M AVISO: ogAdmServer (PID=$OGPID) parado, consumiendo $OGCPU % de CPU" >> $LOGDIR/ogAdmServer.log
+ kill -9 $OGPID
+ fi
+ # Reiniciar servicios si proceso ogAdmServer está caído.
+ if ! pgrep ogAdmServer >/dev/null; then
+ date +"%d/%m/%Y %H:%M ERROR: El servicio ogAdmServer estaba caido, se reinicia" >> $LOGDIR/ogAdmServer.log
+ /etc/init.d/opengnsys restart
+ fi
fi
+# Reiniciar servicios si es repositorio y proceso ogAdmRepo está caído.
if [ "$RUN_OGADMREPO" == "yes" -a $(pgrep ogAdmRepo | wc -w) == 0 ]; then
- date +"%d/%m/%Y %T ERROR: El servicio ogAdmRepo estaba caido, se reinicia" >> $LOGDIR/ogAdmRepo.log
+ date +"%d/%m/%Y %H:%M ERROR: El servicio ogAdmRepo estaba caido, se reinicia" >> $LOGDIR/ogAdmRepo.log
/etc/init.d/opengnsys restart
fi
diff --git a/repoman/bin/sendFileMcast b/repoman/bin/sendFileMcast
index ec4d7aa6..ac6446d8 100755
--- a/repoman/bin/sendFileMcast
+++ b/repoman/bin/sendFileMcast
@@ -57,5 +57,5 @@ CERROR="8x8/128"
# Envío de fichero por Multicast.
# Se desabilita el uso de mbuffer: eesta versión del upd-sender no la admite.
#which mbuffer &> /dev/null && MBUFFER="--pipe 'mbuffer -m 20M'"
-$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"
+$OGBIN/udp-sender $MBUFFER --nokbd --retries-until-drop 65 --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG"
diff --git a/repoman/bin/torrent-creator b/repoman/bin/torrent-creator
index 61765ed5..e890a958 100755
--- a/repoman/bin/torrent-creator
+++ b/repoman/bin/torrent-creator
@@ -25,7 +25,7 @@ pushd $OGIMG >/dev/null
# Procesar ficheros de imágenes.
trap 'echo "`date` : Proceso interrumpido" >> $LOGFILE; exit ' 1 2 3 6 9 15
-for IMG in *.{img,pgz}; do
+for IMG in *.{img,pgz,diff}; do
# Saltar al siguiente si la imagen está bloqueada o si no existe el fichero.
LOCKFILE="$IMG.lock"
if [ -f "$LOCKFILE" -o ! -f "$IMG" ]; then
@@ -46,13 +46,15 @@ for IMG in *.{img,pgz}; do
rm -f "$TORRENT" "$SUMFILE"
DATASUM=$(tail -c1M "$IMG" | md5sum -b | cut -f1 -d" ")
echo $DATASUM > "$SUMFILE"
- nice -8 ctorrent -t "$IMG" -u $TRACKERURL -s "$TORRENT" -c $DATASUM 2>/dev/null
+ nice -8 ctorrent -t "$IMG" -u $TRACKERURL -s "$TORRENT" -c $DATASUM -l 4194304 2>/dev/null
rm -f "$LOCKFILE"
if [ -f "$TORRENT" ]; then
echo "`date` : Fin creación de fichero $TORRENT" >> $LOGFILE
else
echo "`date` : ERROR en creación de fichero $TORRENT" >> $LOGFILE
fi
+ # Modificación realizada en la corrección temporal de la incidencia #535
+ break
done
popd >/dev/null
diff --git a/repoman/etc/rsyncd.conf.tmpl b/repoman/etc/rsyncd.conf.tmpl
new file mode 100644
index 00000000..303893a1
--- /dev/null
+++ b/repoman/etc/rsyncd.conf.tmpl
@@ -0,0 +1,14 @@
+max connections = 0
+log file = /var/log/rsync.log
+timeout = 300
+
+ [ogimages]
+ comment = Carpeta de imagenes
+ path = /opt/opengnsys/images
+ read only = no
+ list = yes
+ uid = root
+ gid = root
+ auth users = CLIENTUSER
+ secrets file = /etc/rsyncd.secrets
+
diff --git a/repoman/etc/rsyncd.secrets.tmpl b/repoman/etc/rsyncd.secrets.tmpl
new file mode 100644
index 00000000..92a79be6
--- /dev/null
+++ b/repoman/etc/rsyncd.secrets.tmpl
@@ -0,0 +1 @@
+CLIENTUSER:CLIENTPASSWORD