add_python_scripts #6
|
@ -4,7 +4,6 @@ ogRepository - OpenGnsys Repository Manager
|
||||||
|
|
||||||
Este repositorio GIT contiene la estructura de datos del repositorio de imágenes de OpenGnsys.
|
Este repositorio GIT contiene la estructura de datos del repositorio de imágenes de OpenGnsys.
|
||||||
|
|
||||||
- **admin** --- Archivos de configuración de ogRepository.
|
|
||||||
- **api** ------ API de ogRepository.
|
- **api** ------ API de ogRepository.
|
||||||
- **bin** ------ Scripts en Python 3 y binarios de gestión de ogRepository.
|
- **bin** ------ Scripts en Python 3 y binarios de gestión de ogRepository.
|
||||||
- **etc** ------ Ficheros y plantillas de configuración de ogRepository.
|
- **etc** ------ Ficheros y plantillas de configuración de ogRepository.
|
||||||
|
@ -117,7 +116,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/stat
|
||||||
"udp-sender": "stopped",
|
"udp-sender": "stopped",
|
||||||
"uftp": "stopped",
|
"uftp": "stopped",
|
||||||
"bttrack": "stopped",
|
"bttrack": "stopped",
|
||||||
"btlaunchmany": "stopped"
|
"btlaunchmany.bittornado": "stopped"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,285 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
PARM=`cat`
|
|
||||||
#PARM=$@
|
|
||||||
|
|
||||||
|
|
||||||
#TODO: ticket 379
|
|
||||||
#buscar parametro de identificador de operacion.
|
|
||||||
#usar parametro de identificacion para anexarlo al nombre de log
|
|
||||||
#Comprobar si la variable está seteas.
|
|
||||||
#Si no lo está setearla.
|
|
||||||
#Si esta seteada (en progreso) salir.
|
|
||||||
|
|
||||||
|
|
||||||
TIME=$SECONDS
|
|
||||||
|
|
||||||
BASEDIR=/opt/opengnsys
|
|
||||||
PATH=$PATH:$BASEDIR/bin
|
|
||||||
REPONAME=ogAdmRepo
|
|
||||||
REPODIR="$BASEDIR/images/"
|
|
||||||
|
|
||||||
# Para las sincronizadas
|
|
||||||
# BACKUP: Define si se realiza copia de seguridad al crear una imagen (true|false).
|
|
||||||
# IMGFS: Sistema de ficheros al crear las sincronizadas tipo archivo (EXT4|BTRFS).
|
|
||||||
[ -z $OGENGINECONFIGURATE ] && source $BASEDIR/client/etc/engine.cfg
|
|
||||||
# FS segun la configuracion y la version del kernel. ext4 para < 3.7, para >= BTRFS
|
|
||||||
KERNEL=$(file -bkr /opt/opengnsys/tftpboot/ogclient/ogvmlinuz |awk '/Linux/ {for(i=1;i<=NF;i++) if($i~/version/) {v=$(i+1);printf("%d",v);sub(/[0-9]*\./,"",v);printf(".%02d",v)}}')
|
|
||||||
[ $KERNEL \< 3.07 ] && IMGFS="EXT4" || IMGFS=${IMGFS:-"BTRFS"}
|
|
||||||
|
|
||||||
# Añade registro de incidencias.
|
|
||||||
function echolog () {
|
|
||||||
logger --tag $0 --priority local0.info "$*"
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
function mountImage () {
|
|
||||||
#@param 1 image_file
|
|
||||||
#@param 2 mount_dir
|
|
||||||
#@param 3 openciones mount
|
|
||||||
[ "$3" != "" ] && OPTMOUNT=" -o $3 "
|
|
||||||
# Si está montado nada que hacer
|
|
||||||
df |grep "$2$" 2>&1 >/dev/null && return 0
|
|
||||||
# FS de la imagen segun el contenido del archivo .img
|
|
||||||
if file "$1" |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then
|
|
||||||
echolog "mount $OPTMOUNT -t ext4 $1 $2"
|
|
||||||
mount $OPTMOUNT -t ext4 $1 $2
|
|
||||||
else
|
|
||||||
echolog "mount $OPTMOUNT -o compress=lzo $1 $2"
|
|
||||||
mount $OPTMOUNT -o compress=lzo "$1" "$2"
|
|
||||||
fi
|
|
||||||
# Si esta montado da error 32, lo damos como bueno
|
|
||||||
RETVAL=$?
|
|
||||||
[ $RETVAL -eq 32 ] && RETVAL=0
|
|
||||||
return $RETVAL
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
PARM1=$(echo $PARM | cut -f1 -d" ")
|
|
||||||
PARM2=$(echo $PARM | cut -f2 -d" ")
|
|
||||||
PARM3=$(echo $PARM | cut -f3 -d" ")
|
|
||||||
PARM4=$(echo $PARM | cut -f4 -d" ")
|
|
||||||
|
|
||||||
# Determinamos el tipo de sistema de fichero de las imagenes segun el kernel que tenga
|
|
||||||
|
|
||||||
|
|
||||||
case "$PARM1" in
|
|
||||||
START_MULTICAST)
|
|
||||||
#1 START_MULTICAST
|
|
||||||
#2 fichero a enviar
|
|
||||||
#3 opciones de multicast
|
|
||||||
FILE="$PARM2"
|
|
||||||
MCASTOPT="$PARM3"
|
|
||||||
echolog "Ejecutar $(which sendFileMcast) $FILE $MCASTOPT"
|
|
||||||
sendFileMcast $FILE $MCASTOPT |logger --tag $0 --priority local0.info
|
|
||||||
case $? in
|
|
||||||
1) echolog "Parametros insuficientes"
|
|
||||||
exit 1 ;;
|
|
||||||
2) echolog "Fichero no accesible"
|
|
||||||
exit 2 ;;
|
|
||||||
3) echolog "Sesion multicast no valida"
|
|
||||||
exit 3 ;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
CREATE_IMAGE)
|
|
||||||
# Creamos/Redimensionamos el fichero de imagen y lo montamos para que se pueda escribir sobre el
|
|
||||||
#1 CREATE_IMAGE
|
|
||||||
#2 nombre imagen
|
|
||||||
#3 tipo de imagen [ img | diff ]
|
|
||||||
#4 tamaño imagen
|
|
||||||
LOOPDEVICE=$(losetup -f)
|
|
||||||
DIRMOUNT="$REPODIR/mount/$PARM2"
|
|
||||||
if [ "$PARM3" == "img" ] ; then
|
|
||||||
IMGEXT="img"
|
|
||||||
else
|
|
||||||
IMGEXT="img.diff"
|
|
||||||
DIRMOUNT="$DIRMOUNT.diff"
|
|
||||||
fi
|
|
||||||
IMGFILE="$REPODIR/$PARM2.$IMGEXT"
|
|
||||||
IMGDIR="$(dirname $IMGFILE)"
|
|
||||||
[ -d $IMGDIR ] || mkdir -p $IMGDIR
|
|
||||||
mkdir -p "$DIRMOUNT"
|
|
||||||
|
|
||||||
LOCKFILE="$IMGFILE.lock"
|
|
||||||
|
|
||||||
SIZEREQUIRED="$PARM4"
|
|
||||||
|
|
||||||
# Si existe la imagen hacemos copia de seguridad y la redimesionamos
|
|
||||||
if [ -f "$IMGFILE" ]; then
|
|
||||||
echolog "La imagen $IMGFILE ya existe."
|
|
||||||
# TODO modificar ogGetImageSize
|
|
||||||
IMGSIZE=$(ls -l --block-size=1024 $IMGFILE| cut -f5 -d" ")
|
|
||||||
|
|
||||||
if [ "$BACKUP" == "true" -o "$BACKUP" == "TRUE" -o $IMGSIZE -lt $SIZEREQUIRED ]; then
|
|
||||||
# Si la imagen esta montada la desmonto
|
|
||||||
if [ -r "$DIRMOUNT/ogimg.info" ]; then
|
|
||||||
echolog "umount $DIRMOUNT"
|
|
||||||
umount "$DIRMOUNT"
|
|
||||||
[ $? -ne 0 ] && echolog "Error: No podemos desmontar la imagen para hacer copia de seguridad o redimensionar" && exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Copia de seguridad de la imagen
|
|
||||||
if [ "$BACKUP" == "true" -o "$BACKUP" == "TRUE" ]; then
|
|
||||||
echolog "Copia de seguridad de la imagen anterior"
|
|
||||||
echolog "cp $IMGFILE $IMGFILE.ant"
|
|
||||||
cp "$IMGFILE" "$IMGFILE.ant"
|
|
||||||
echolog mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
|
|
||||||
mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Redimensionamos la imagen al tamaño necesario
|
|
||||||
if [ $IMGSIZE -lt $SIZEREQUIRED ];then
|
|
||||||
echolog "Redimensionamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
|
|
||||||
echolog "truncate --size=\">$SIZEREQUIRED\"k $IMGFILE"
|
|
||||||
truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 |logger --tag $0 --priority local0.info
|
|
||||||
# FS de la imagen segun el contenido del archivo .img
|
|
||||||
if file "$IMGFILE" |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then
|
|
||||||
losetup $LOOPDEVICE "$IMGFILE"
|
|
||||||
echolog "resize2fs -f $LOOPDEVICE"
|
|
||||||
resize2fs -f $LOOPDEVICE |logger --tag $0 --priority local0.info
|
|
||||||
else
|
|
||||||
mount -o compress=lzo "$IMGFILE" "$DIRMOUNT"
|
|
||||||
echolog "btrfs filesystem resize max $DIRMOUNT"
|
|
||||||
btrfs filesystem resize max "$DIRMOUNT" 2>&1 |logger --tag $0 --priority local0.info
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Si no existe la imagen creamos el fichero.
|
|
||||||
else
|
|
||||||
echolog "Creamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
|
|
||||||
touch "$IMGFILE"
|
|
||||||
echolog "truncate --size=\">$SIZEREQUIRED\"k $IMGFILE"
|
|
||||||
truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 |logger --tag $0 --priority local0.info
|
|
||||||
#Formateamos imagen
|
|
||||||
echo losetup $LOOPDEVICE "$IMGFILE"
|
|
||||||
losetup $LOOPDEVICE "$IMGFILE"
|
|
||||||
if [ $IMGFS == "EXT4" ] ; then
|
|
||||||
echolog " mkfs.ext4 -i 4096 -b 4096 -L ${PARM2##*\/} $LOOPDEVICE"
|
|
||||||
mkfs.ext4 -i 4096 -b 4096 -L ${PARM2##*\/} $LOOPDEVICE
|
|
||||||
else
|
|
||||||
echolog mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE
|
|
||||||
mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE #&> $OGLOGCOMMAND
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# Montamos la imagen.
|
|
||||||
mountImage "$IMGFILE" "$DIRMOUNT"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
rmdir "$DIRMOUNT"
|
|
||||||
echolog "Error al crear/redimensionar la imagen"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
#touch "$DIRMOUNT/ogimg.info"
|
|
||||||
echo "mounted"> "$LOCKFILE"
|
|
||||||
TIME2=$[SECONDS-TIME]
|
|
||||||
echolog "Fin creación/redimension de la imagen: $[TIME2/60]m $[TIME2%60]s"
|
|
||||||
# Si existe dispositivo loop lo borramos.
|
|
||||||
[ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
|
|
||||||
# TODO: comprobar que no se quede el losetup bloqueado.
|
|
||||||
|
|
||||||
;;
|
|
||||||
MOUNT_IMAGE)
|
|
||||||
# Montamos el fichero imagen para que se pueda
|
|
||||||
#1 MOUNT_IMAGE
|
|
||||||
#2 nombre imagen
|
|
||||||
#3 tipo de imagen [ img | diff ]
|
|
||||||
DIRMOUNT="$REPODIR""mount/$PARM2"
|
|
||||||
if [ "$PARM3" == "img" ] ; then
|
|
||||||
IMGEXT="img"
|
|
||||||
else
|
|
||||||
IMGEXT="img.diff"
|
|
||||||
DIRMOUNT="$DIRMOUNT.diff"
|
|
||||||
fi
|
|
||||||
IMGFILE="$REPODIR/$PARM2.$IMGEXT"
|
|
||||||
echolog "Montamos la imagen $IMGFILE "
|
|
||||||
mkdir -p "$DIRMOUNT"
|
|
||||||
mountImage "$IMGFILE" "$DIRMOUNT" ro || (echolog "Error al montar la imagen"; exit 1)
|
|
||||||
;;
|
|
||||||
UMOUNT_IMAGE)
|
|
||||||
# Desmontamos el fichero imagen.
|
|
||||||
# Si el directorio esta ocupado no se desmontará
|
|
||||||
#1 UMOUNT_IMAGE
|
|
||||||
#2 nombre imagen
|
|
||||||
#3 tipo de imagen [ img | diff ]
|
|
||||||
IMGTYPE="$PARM3"
|
|
||||||
DIRMOUNT="$REPODIR/mount/$PARM2"
|
|
||||||
if [ "$IMGTYPE" == "img" ]; then
|
|
||||||
IMGEXT="img"
|
|
||||||
else
|
|
||||||
DIRMOUNT="$DIRMOUNT.$IMGTYPE"
|
|
||||||
IMGEXT="img.diff"
|
|
||||||
fi
|
|
||||||
LOCKFILE="$REPODIR/$PARM2.$IMGEXT.lock"
|
|
||||||
echolog "Desmontamos la imagen $PARM2 $PARM3 "
|
|
||||||
umount $DIRMOUNT
|
|
||||||
rmdir $DIRMOUNT
|
|
||||||
[ -f $LOCKFILE ] && sed -i s/mounted//g $LOCKFILE
|
|
||||||
|
|
||||||
;;
|
|
||||||
REDUCE_IMAGE)
|
|
||||||
# Reduce el archivo de la imagen a tamaño datos + 500M
|
|
||||||
#1 REDUCE_IMAGE
|
|
||||||
#2 Nombre Imagen
|
|
||||||
#3 Tipo de imagen [ img |diff ]
|
|
||||||
DIRMOUNT="${REPODIR}mount/${PARM2}"
|
|
||||||
if [ "$PARM3" == "img" ] ; then
|
|
||||||
IMGEXT="img"
|
|
||||||
else
|
|
||||||
IMGEXT="img.diff"
|
|
||||||
DIRMOUNT="$DIRMOUNT.diff"
|
|
||||||
fi
|
|
||||||
IMGFILE="$REPODIR$PARM2.$IMGEXT"
|
|
||||||
LOCKFILE="$IMGFILE.lock"
|
|
||||||
[ ! -f $IMGFILE ] && echolog "Imagen $IMGFILE no existe" && exit 1
|
|
||||||
|
|
||||||
# Para imagenes EXT4 reduzco, para BTRFS solo desmonto.
|
|
||||||
if file $IMGFILE |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then
|
|
||||||
|
|
||||||
[ -d $DIRMOUNT ] || mkdir $DIRMOUNT
|
|
||||||
mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen $IMGFILE"; exit 1)
|
|
||||||
|
|
||||||
|
|
||||||
# Si el espacio libre menor que 200Mb desmontamos la imagen y nos salimos
|
|
||||||
AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}')
|
|
||||||
if [ $AVAILABLE -lt 200000 ]; then
|
|
||||||
echolog "reducir imagen REPO $PARM2 $IMGEXT. tamaño minimo, nada que hacer"
|
|
||||||
umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
|
|
||||||
else
|
|
||||||
|
|
||||||
# Calculamos la diferencia entre el tamaño interno y externo
|
|
||||||
EXTSIZE=$(ls -l --block-size=1024 $IMGFILE | cut -f5 -d" ")
|
|
||||||
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
|
|
||||||
let EDGESIZE=$EXTSIZE-$INTSIZE
|
|
||||||
|
|
||||||
echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
|
|
||||||
umount $DIRMOUNT
|
|
||||||
LOOPDEVICE=$(losetup -f)
|
|
||||||
losetup $LOOPDEVICE "$IMGFILE"
|
|
||||||
|
|
||||||
# Redimensiono sistema de ficheros
|
|
||||||
echolog "resize2fs -fpM $LOOPDEVICE "
|
|
||||||
resize2fs -fpM $LOOPDEVICE # 2>&1 |logger --tag $0 --priority local0.info
|
|
||||||
mountImage "$IMGFILE" "$DIRMOUNT"
|
|
||||||
# Calculamos el tamaño final del archivo
|
|
||||||
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
|
|
||||||
let EXTSIZE=$INTSIZE+$EDGESIZE
|
|
||||||
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
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
|
|
||||||
fi
|
|
||||||
rmdir $DIRMOUNT
|
|
||||||
echo "reduced" >$LOCKFILE
|
|
||||||
|
|
||||||
;;
|
|
||||||
default)
|
|
||||||
echolog "Solicitud con parametros \"$PARM\" no realizada, no registrada o con errores"
|
|
||||||
;;
|
|
||||||
esac
|
|
|
@ -1,15 +0,0 @@
|
||||||
# RUN_OGADMSERVER defined as OpenGnsys Admin Server
|
|
||||||
# RUN_OGADMREPO defined as OpenGnsys Repository Manager
|
|
||||||
# RUN_OGADMAGENT run task scheduler service, only if Admin Server is enabled
|
|
||||||
# RUN_BTTRACKER run Bittorrent Tracker, only if Repository is enabled
|
|
||||||
# RUN_BTSEEDER start seeding of selected torrent files, only if Repository is enabled
|
|
||||||
# BTSEEDER_PRIORITY nice priority to seed torrent files; recommended values:
|
|
||||||
# 8 for Admin Server or Repo without Torrent
|
|
||||||
# 0 for Admin Server and Repo with Torrent
|
|
||||||
# -8 for Repo with Torrent
|
|
||||||
RUN_OGADMSERVER="yes"
|
|
||||||
RUN_OGADMREPO="yes"
|
|
||||||
RUN_OGADMAGENT="yes"
|
|
||||||
RUN_BTTRACKER="yes"
|
|
||||||
RUN_BTSEEDER="yes"
|
|
||||||
BTSEEDER_PRIORITY=0
|
|
|
@ -1,224 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: opengnsys
|
|
||||||
# Required-Start:
|
|
||||||
# Required-Stop:
|
|
||||||
# Default-Start: 2 3 4 5
|
|
||||||
# Default-Stop: 1
|
|
||||||
# Short-Description: Servicios del sistema OpenGnsys
|
|
||||||
# Description: Servicios del sistema OpenGnsys
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
#
|
|
||||||
# Definiciones globales
|
|
||||||
#
|
|
||||||
BASEDIR=/opt/opengnsys
|
|
||||||
OPENGNSYSUSER="opengnsys"
|
|
||||||
IMAGEDIR=$BASEDIR/images
|
|
||||||
CLIENTLOGDIR=$BASEDIR/log/clients
|
|
||||||
|
|
||||||
#
|
|
||||||
# Servidor de OpenGnsys
|
|
||||||
#
|
|
||||||
SERVERNAME=ogAdmServer
|
|
||||||
SERVERDAEMON=$BASEDIR/sbin/$SERVERNAME
|
|
||||||
SERVERCFG=$BASEDIR/etc/$SERVERNAME.cfg
|
|
||||||
SERVERLOG=$BASEDIR/log/$SERVERNAME.log
|
|
||||||
SERVERDAEMON_OPTIONS="-f $SERVERCFG -l $SERVERLOG"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Servidor de Repositorio
|
|
||||||
#
|
|
||||||
############## ADV
|
|
||||||
REPOAUXNAME=ogAdmRepoAux
|
|
||||||
REPOAUXDAEMON=$BASEDIR/sbin/$REPOAUXNAME
|
|
||||||
REPOAUXPORT=$(awk -F= '/PUERTO/ {print $2+1}' $SERVERCFG 2>/dev/null)
|
|
||||||
############## ADV
|
|
||||||
############# IRINA # para setBootMode desde el cliente
|
|
||||||
SERVERAUXNAME=ogAdmServerAux
|
|
||||||
SERVERAUXDAEMON=$BASEDIR/sbin/$SERVERAUXNAME
|
|
||||||
SERVERAUXPORT=2011
|
|
||||||
############# IRINA
|
|
||||||
|
|
||||||
#
|
|
||||||
# Servidor de tareas programadas
|
|
||||||
#
|
|
||||||
AGENTNAME=ogAdmAgent
|
|
||||||
AGENTDAEMON=$BASEDIR/sbin/$AGENTNAME
|
|
||||||
AGENTCFG=$BASEDIR/etc/$AGENTNAME.cfg
|
|
||||||
AGENTLOG=$BASEDIR/log/$AGENTNAME.log
|
|
||||||
AGENTDAEMON_OPTIONS="-f $AGENTCFG -l $AGENTLOG"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Opciones Bittorrent
|
|
||||||
#
|
|
||||||
|
|
||||||
BTTRACK=/usr/bin/bttrack.bittorrent
|
|
||||||
BTSEEDER=/usr/bin/btlaunchmany.bittornado
|
|
||||||
BTTRACKPORT=6969
|
|
||||||
BTTRACKDFILE=/tmp/dstate
|
|
||||||
BTTRACKLOG=$BASEDIR/log/bttrack.log
|
|
||||||
BTINTERVAL=30
|
|
||||||
BTTORRENTSDIR=$BASEDIR/images
|
|
||||||
BTTRACK_OPTIONS=" --port $BTTRACKPORT --dfile $BTTRACKDFILE --reannounce_interval $BTINTERVAL --logfile $BTTRACKLOG --allowed_dir $BTTORRENTSDIR --allow_get 1"
|
|
||||||
BTTRACKPID="/var/run/bttrack.pid"
|
|
||||||
BTSEEDERPID="/var/run/btseeder.pid"
|
|
||||||
|
|
||||||
|
|
||||||
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin:/usr/bin"
|
|
||||||
|
|
||||||
# Read config file if it is present.
|
|
||||||
if [ -r /etc/default/opengnsys ]; then
|
|
||||||
source /etc/default/opengnsys
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Configuración de arranque según la distribución Linux usada.
|
|
||||||
config() {
|
|
||||||
if [ -f /etc/os-release ]; then
|
|
||||||
source /etc/os-release
|
|
||||||
OSDISTRIB="$ID"
|
|
||||||
else
|
|
||||||
OSDISTRIB=$(lsb_release -is 2>/dev/null)
|
|
||||||
fi
|
|
||||||
OSDISTRIB="${OSDISTRIB,,}"
|
|
||||||
case "$OSDISTRIB" in
|
|
||||||
ubuntu|debian|linuxmint)
|
|
||||||
INITFUNCTIONS=/lib/lsb/init-functions
|
|
||||||
DAEMONSTART="start-stop-daemon --start --quiet --background --exec"
|
|
||||||
EXTRAOPTS="--"
|
|
||||||
DAEMONSTOP="start-stop-daemon --stop --quiet --oknodo --name"
|
|
||||||
ACTIONMSG="log_daemon_msg"
|
|
||||||
SUCCESSMSG="log_end_msg 0"
|
|
||||||
FAILMSG="log_end_msg 1"
|
|
||||||
TRACKERSTART="start-stop-daemon --make-pidfile --pidfile $BTTRACKPID --start --quiet --background --exec"
|
|
||||||
BTTRACK_OPTIONS="$BTTRACK_OPTIONS --parse_allowed_interval 1"
|
|
||||||
TRACKERSTOP="start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $BTTRACKPID"
|
|
||||||
SEEDERSTART="start-stop-daemon --make-pidfile --pidfile $BTSEEDERPID --start --quiet --background --exec"
|
|
||||||
SEEDERSTOP="start-stop-daemon --stop --quiet --oknodo --pidfile $BTSEEDERPID"
|
|
||||||
;;
|
|
||||||
centos|fedora)
|
|
||||||
INITFUNCTIONS=/etc/init.d/functions
|
|
||||||
DAEMONSTART="daemon"
|
|
||||||
ENDOPTS="&"
|
|
||||||
DAEMONSTOP="killproc"
|
|
||||||
ACTIONMSG="echo -n"
|
|
||||||
SUCCESSMSG="eval ( success; echo )"
|
|
||||||
FAILMSG="eval ( failure; echo )"
|
|
||||||
BTTRACK=/usr/bin/bttrack.py
|
|
||||||
BTSEEDER=/usr/bin/btlaunchmany.py
|
|
||||||
TRACKERSTART="daemon --pidfile $BTTRACKPID"
|
|
||||||
TRACKERSTOP="killproc -p $BTTRACKPID $BTTRACK"
|
|
||||||
SEEDERSTART="daemon --pidfile $BTSEEDERPID"
|
|
||||||
SEEDERSTOP="killproc -p $BTSEEDERPID $BTSEEDER"
|
|
||||||
;;
|
|
||||||
*) echo "Distribución Linux desconcocida o no soportada."
|
|
||||||
exit ;;
|
|
||||||
esac
|
|
||||||
if [ -r $INITFUNCTIONS ]; then
|
|
||||||
source $INITFUNCTIONS
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
arranca_demonios() {
|
|
||||||
# Comprobar que está instalado OpenGnsys.
|
|
||||||
if [ ! -d $BASEDIR ]; then
|
|
||||||
$ACTIONMSG "ERROR: No existe el directorio $BASEDIR"
|
|
||||||
$FAILMSG
|
|
||||||
exit $?
|
|
||||||
fi
|
|
||||||
# Deshabilitar modo reforzado de SELinux.
|
|
||||||
[ -f /selinux/enforce ] && echo 0 > /selinux/enforce
|
|
||||||
# Verificar permisos básicos.
|
|
||||||
if [ "$(stat --printf="%A%G" $IMAGEDIR 2>/dev/null)" != "drwxrwxr-x$OPENGNSYSUSER" ]; then
|
|
||||||
mkdir $IMAGEDIR 2>/dev/null
|
|
||||||
chmod 775 $IMAGEDIR
|
|
||||||
chgrp $OPENGNSYSUSER $IMAGEDIR
|
|
||||||
fi
|
|
||||||
if [ "$(stat --printf="%A%G" $CLIENTLOGDIR 2>/dev/null)" != "drwxrwxr-x$OPENGNSYSUSER" ]; then
|
|
||||||
mkdir -p $CLIENTLOGDIR 2>/dev/null
|
|
||||||
chmod 775 $CLIENTLOGDIR
|
|
||||||
chgrp $OPENGNSYSUSER $CLIENTLOGDIR
|
|
||||||
fi
|
|
||||||
# Arrancar los servicios indicados.
|
|
||||||
if [ $RUN_OGADMSERVER = "yes" ]; then
|
|
||||||
$ACTIONMSG "Iniciando demonio: $SERVERNAME"
|
|
||||||
$DAEMONSTART $SERVERDAEMON $EXTRAOPTS $SERVERDAEMON_OPTIONS $ENDOPTS
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
# Para SetBootmode desde el cliente
|
|
||||||
$ACTIONMSG "Iniciando demonio: $SERVERAUXNAME" #
|
|
||||||
faucet $SERVERAUXPORT --daemon --in bash -c "$SERVERAUXDAEMON" # NUEVO
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
fi
|
|
||||||
if [ $RUN_OGADMREPO = "yes" ]; then
|
|
||||||
$ACTIONMSG "Iniciando demonio: $REPOAUXNAME"
|
|
||||||
faucet $REPOAUXPORT --daemon --in bash -c "$REPOAUXDAEMON"
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
fi
|
|
||||||
if [ $RUN_OGADMSERVER = "yes" ] && [ $RUN_OGADMAGENT = "yes" ]; then
|
|
||||||
sleep 5 # Damos tiempo a que ogAdmServer este funcionando
|
|
||||||
fi
|
|
||||||
if [ $RUN_OGADMAGENT = "yes" ]; then
|
|
||||||
$ACTIONMSG "Iniciando demonio: $AGENTNAME"
|
|
||||||
$DAEMONSTART $AGENTDAEMON $EXTRAOPTS $AGENTDAEMON_OPTIONS $ENDOPTS
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
fi
|
|
||||||
if [ $RUN_BTTRACKER = "yes" ]; then
|
|
||||||
$ACTIONMSG "Iniciando demonio: $BTTRACK"
|
|
||||||
$TRACKERSTART $BTTRACK $EXTRAOPTS $BTTRACK_OPTIONS $ENDOPTS
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
fi
|
|
||||||
if [ $RUN_BTSEEDER = "yes" ]; then
|
|
||||||
$ACTIONMSG "Iniciando demonio: $BTSEEDER"
|
|
||||||
$SEEDERSTART $BTSEEDER $EXTRAOPTS $BTTORRENTSDIR &>/dev/null $ENDOPTS
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
para_demonios() {
|
|
||||||
if [ -e $BTSEEDERPID ]; then
|
|
||||||
$ACTIONMSG "Parando demonio: $BTSEEDER"
|
|
||||||
$SEEDERSTOP
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
rm -f $BTSEEDERPID
|
|
||||||
fi
|
|
||||||
if [ -e $BTTRACKPID ]; then
|
|
||||||
$ACTIONMSG "Parando demonio: $BTTRACK"
|
|
||||||
$TRACKERSTOP
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
rm -f $BTTRACKPID
|
|
||||||
fi
|
|
||||||
$ACTIONMSG "Parando demonio: $AGENTNAME"
|
|
||||||
$DAEMONSTOP $AGENTNAME
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
$ACTIONMSG "Parando demonio: $REPOAUXNAME"
|
|
||||||
pkill faucet
|
|
||||||
[ $? -le 1 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
$ACTIONMSG "Parando demonio: $SERVERNAME"
|
|
||||||
$DAEMONSTOP $SERVERNAME
|
|
||||||
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
|
|
||||||
}
|
|
||||||
|
|
||||||
config
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
arranca_demonios
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
para_demonios
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
para_demonios
|
|
||||||
arranca_demonios
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "Uso: $0 {start|stop|restart}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
|
@ -164,6 +164,10 @@ def check_remote_connection(remote_ip, remote_user):
|
||||||
# Iniciamos un cliente SFTP:
|
# Iniciamos un cliente SFTP:
|
||||||
sftp_client = ssh_client.open_sftp()
|
sftp_client = ssh_client.open_sftp()
|
||||||
|
|
||||||
|
# Cerramos el cliente SSH y el cliente SFTP:
|
||||||
|
ssh_client.close()
|
||||||
|
sftp_client.close()
|
||||||
|
|
||||||
# Retornamos "True", porque hemos conseguido conectar:
|
# Retornamos "True", porque hemos conseguido conectar:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -138,7 +138,7 @@ paths:
|
||||||
bttrack:
|
bttrack:
|
||||||
type: string
|
type: string
|
||||||
example: "stopped"
|
example: "stopped"
|
||||||
btlaunchmany:
|
btlaunchmany.bittornado:
|
||||||
type: string
|
type: string
|
||||||
example: "stopped"
|
example: "stopped"
|
||||||
"500 (Error)":
|
"500 (Error)":
|
||||||
|
|
|
@ -59,10 +59,10 @@ def get_service_status(service):
|
||||||
def get_process_status(process):
|
def get_process_status(process):
|
||||||
""" Obtiene y retorna el estado del proceso que recibe como parámetro.
|
""" Obtiene y retorna el estado del proceso que recibe como parámetro.
|
||||||
"""
|
"""
|
||||||
#for proc in psutil.process_iter(['pid', 'name', 'status']):
|
|
||||||
for proc in psutil.process_iter(['name']):
|
for proc in psutil.process_iter(['name']):
|
||||||
if proc.info['name'] == process:
|
if proc.info['name'] in process:
|
||||||
return 'running'
|
return 'running'
|
||||||
|
# Esto no debe ir asociado a un "else" (porque comprueba todos los procesos):
|
||||||
return 'stopped'
|
return 'stopped'
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ def main():
|
||||||
services_status = {service: get_service_status(service) for service in service_list}
|
services_status = {service: get_service_status(service) for service in service_list}
|
||||||
|
|
||||||
# Obtenemos el estado de los procesos listados, que almacenamos en un diccionario:
|
# Obtenemos el estado de los procesos listados, que almacenamos en un diccionario:
|
||||||
process_list = ['udp-sender', 'uftp', 'bttrack', 'btlaunchmany']
|
process_list = ['udp-sender', 'uftp', 'bttrack', 'btlaunchmany.bittornado']
|
||||||
process_status = {process: get_process_status(process) for process in process_list}
|
process_status = {process: get_process_status(process) for process in process_list}
|
||||||
|
|
||||||
# Creamos un diccionario con toda la información obtenida:
|
# Creamos un diccionario con toda la información obtenida:
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
IPlocal=SERVERIP
|
IPlocal=SERVERIP
|
||||||
|
IPcore=OGCOREIP
|
||||||
ApiToken=REPOKEY
|
ApiToken=REPOKEY
|
||||||
|
|
Loading…
Reference in New Issue