refs #477 Changes function execution in symfony installation
parent
5b1cf84fe1
commit
fae7536690
|
|
@ -1,10 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
#/**
|
#/**
|
||||||
|
# setsmbpass
|
||||||
#@file setsmbpass [ogLive]
|
#@file setsmbpass [ogLive]
|
||||||
#@brief Cambia la contraseña de los clientes para acceder a los servicios principales.
|
#@brief Cambia la contraseña del usuario del cliente para acceder a los servicios Samba.
|
||||||
#@usage setsmbpass [ogLive]
|
|
||||||
#@param ogLive solo modifica la clave del cliente indicado (puede crear inconsistencias)
|
|
||||||
#@warning Se modifica el Initrd del cliente y se cambia la clave en el servidor.
|
#@warning Se modifica el Initrd del cliente y se cambia la clave en el servidor.
|
||||||
#@warning No se modifica el usuario de acceso (usuario "opengnsys").
|
#@warning No se modifica el usuario de acceso (usuario "opengnsys").
|
||||||
#@version 1.0.2 - Versión inicial.
|
#@version 1.0.2 - Versión inicial.
|
||||||
|
|
@ -13,41 +12,38 @@
|
||||||
#@version 1.1.0 - Soporte para varios clientes ogLive.
|
#@version 1.1.0 - Soporte para varios clientes ogLive.
|
||||||
#@author Ramón M. Gómez - ETSII Univ. Sevilla
|
#@author Ramón M. Gómez - ETSII Univ. Sevilla
|
||||||
#@date 2017-06-20
|
#@date 2017-06-20
|
||||||
#@version 1.2.0 - Soporte para varios compresores de Initrd.
|
|
||||||
#@author Ramón M. Gómez - ETSII Univ. Sevilla
|
|
||||||
#@date 2020-09-02
|
|
||||||
#*/ ##
|
#*/ ##
|
||||||
|
|
||||||
|
|
||||||
# Variables y funciones globales.
|
# Variables.
|
||||||
PROG="$(basename "$0")"
|
PROG=$(basename "$0")
|
||||||
OPENGNSYS=${OPENGNSYS:-"/opt/ogboot"}
|
PATH=$PATH:$(dirname "$(realpath "$0")")
|
||||||
PATH=$PATH:$OPENGNSYS/bin
|
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
||||||
|
OGCFGFILE=$OPENGNSYS/etc/opengnsys.json
|
||||||
SAMBAUSER="opengnsys" # Usuario por defecto.
|
SAMBAUSER="opengnsys" # Usuario por defecto.
|
||||||
TFTPDIR=$OPENGNSYS/tftpboot
|
TFTPDIR=$OPENGNSYS/tftpboot
|
||||||
INITRD=oginitrd.img
|
INITRD=oginitrd.img
|
||||||
TMPDIR=/tmp/oglive$$
|
TMPDIR=/tmp/oglive$$
|
||||||
let CHANGES=0
|
let CHANGES=0
|
||||||
|
|
||||||
source $OPENGNSYS/lib/ogfunctions.sh || exit 1
|
# Control básico de errores.
|
||||||
|
if [ "$USER" != "root" ]; then
|
||||||
# Control de parámetros.
|
echo "$PROG: Error: solo ejecutable por root" >&2
|
||||||
[ "$*" == "help" ] && help
|
exit 1
|
||||||
[ "$*" == "version" ] && version
|
fi
|
||||||
[ "$USER" != "root" ] && raiseError access "Solo ejecutable por root"
|
|
||||||
case $# in
|
case $# in
|
||||||
0) # Cambios en todos los clientes ogLive instalados.
|
0) # Cambios en todos los clientes ogLive instalados.
|
||||||
echolog "Cambiando contraseña en todos los clientes ogLive instalados"
|
|
||||||
if which oglivecli &>/dev/null; then
|
if which oglivecli &>/dev/null; then
|
||||||
LIST=$(oglivecli list | awk '{print $2}')
|
LIST=$(oglivecli list | awk '{print $2}')
|
||||||
else
|
else
|
||||||
LIST="ogclient"
|
LIST="ogclient"
|
||||||
fi ;;
|
fi ;;
|
||||||
1) # Cambios en único ogLive (AVISO: puede crear inconsistencias con otros ogLive).
|
1) # Cambios en único ogLive (AVISO: puede crear inconsistencias con otros ogLive).
|
||||||
echolog "Cambiando contraseña en un solo ogLive"
|
|
||||||
LIST="$1" ;;
|
LIST="$1" ;;
|
||||||
*) # Error de formato.
|
*) # Error de formato.
|
||||||
raiseError usage ;;
|
echo "$PROG: Error de ejecución" >&2
|
||||||
|
echo "Formato: $PROG ogLive"
|
||||||
|
exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Recuperar eco de consola si se corta el proceso.
|
# Recuperar eco de consola si se corta el proceso.
|
||||||
|
|
@ -65,8 +61,9 @@ for OGLIVE in $LIST; do
|
||||||
# Solo se deben aceptar números y letras para la clave de acceso.
|
# Solo se deben aceptar números y letras para la clave de acceso.
|
||||||
if [[ "$SAMBAPASS" =~ [^a-zA-Z0-9] ]]; then
|
if [[ "$SAMBAPASS" =~ [^a-zA-Z0-9] ]]; then
|
||||||
echo
|
echo
|
||||||
|
echo "$PROG: Error: la clave solo debe contener caracteres alfanuméricos" >&2
|
||||||
stty echo 2>/dev/null
|
stty echo 2>/dev/null
|
||||||
raiseError cancel "La clave solo debe contener caracteres alfanuméricos"
|
exit 2
|
||||||
fi
|
fi
|
||||||
echo
|
echo
|
||||||
# Obtener confirmación clave sin eco en pantalla.
|
# Obtener confirmación clave sin eco en pantalla.
|
||||||
|
|
@ -74,15 +71,34 @@ for OGLIVE in $LIST; do
|
||||||
read -r SAMBAPASS2
|
read -r SAMBAPASS2
|
||||||
echo
|
echo
|
||||||
stty echo 2>/dev/null
|
stty echo 2>/dev/null
|
||||||
[ "$SAMBAPASS" != "$SAMBAPASS2" ] && raiseError cancel "Las claves no coinciden"
|
if [ "$SAMBAPASS" != "$SAMBAPASS2" ]; then
|
||||||
|
echo "$PROG: Error: las claves no coinciden" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
# Editar la parte de acceso del cliente:
|
# Editar la parte de acceso del cliente:
|
||||||
# descomprimir Initrd, sustituir clave y recomprimir Initrd).
|
# descomprimir Initrd, sustituir clave y recomprimir Initrd).
|
||||||
echolog "Configurando cliente \"$OGLIVE\" ..."
|
echo "Configurando cliente \"$OGLIVE\" ..."
|
||||||
mkdir -p $TMPDIR
|
mkdir -p $TMPDIR
|
||||||
cd $TMPDIR || ogRaiseError access "Directorio temporal"
|
cd $TMPDIR || { echo "Error: no se pudo cambiar al directorio temporal."; exit 3; }
|
||||||
COMPRESS=$(file -b "$CLIENTINITRD" | awk '{print tolower($1);}')
|
|
||||||
$COMPRESS -dc "$CLIENTINITRD" | cpio -im
|
# Verificar si el archivo es gzip o lz4 antes de descomprimir.
|
||||||
|
if file "$CLIENTINITRD" | grep -q "gzip compressed data"; then
|
||||||
|
if ! gzip -dc "$CLIENTINITRD" | cpio -im; then
|
||||||
|
echo "Error: No se pudo descomprimir y extraer $CLIENTINITRD con gzip."
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
|
COMPRESS_CMD="gzip -9c"
|
||||||
|
elif file "$CLIENTINITRD" | grep -q "LZ4 compressed data"; then
|
||||||
|
if ! lz4 -d "$CLIENTINITRD" | cpio -im; then
|
||||||
|
echo "Error: No se pudo descomprimir y extraer $CLIENTINITRD con lz4."
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
|
COMPRESS_CMD="lz4 -c"
|
||||||
|
else
|
||||||
|
echo "Error: $CLIENTINITRD no está en formato gzip o lz4."
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
if [ -f scripts/ogfunctions ]; then
|
if [ -f scripts/ogfunctions ]; then
|
||||||
sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions
|
sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions
|
||||||
# TEMPORAL: solución ticket 554, actualizar cliente en caché (ogLive r3257).
|
# TEMPORAL: solución ticket 554, actualizar cliente en caché (ogLive r3257).
|
||||||
|
|
@ -90,30 +106,37 @@ for OGLIVE in $LIST; do
|
||||||
# FIN CÓDIGO TEMPORAL.
|
# FIN CÓDIGO TEMPORAL.
|
||||||
# Ticket 565, preparar acceso Rsync cliente.
|
# Ticket 565, preparar acceso Rsync cliente.
|
||||||
echo "$SAMBAPASS" > scripts/passrsync
|
echo "$SAMBAPASS" > scripts/passrsync
|
||||||
chown root.root scripts/passrsync
|
# Guardar tokens de seguridad.
|
||||||
chmod 400 scripts/passrsync
|
cat << EOT > scripts/client.cfg
|
||||||
# Generar Initrd del cliente (siempre comprimido con gzip).
|
CLIENTID=$(jq -r .client.id $OGCFGFILE)
|
||||||
find . | cpio -H newc -oa | gzip -9c > "$CLIENTINITRD"
|
CLIENTSECRET=$(jq -r .client.secret $OGCFGFILE)
|
||||||
|
EOT
|
||||||
|
chown root.root scripts/passrsync scripts/client.cfg
|
||||||
|
chmod 400 scripts/passrsync scripts/client.cfg
|
||||||
|
# Generar Initrd del cliente.
|
||||||
|
if ! find . | cpio -H newc -oa | $COMPRESS_CMD > "$CLIENTINITRD"; then
|
||||||
|
echo "Error: No se pudo recomprimir $CLIENTINITRD."
|
||||||
|
exit 5
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echolog "$PROG: Aviso: no se ha modificado la clave del cliente \"$OGLIVE\"."
|
echo "$PROG: Aviso: no se ha modificado la clave del cliente \"$OGLIVE\"."
|
||||||
fi
|
fi
|
||||||
rm -fr $TMPDIR
|
rm -fr $TMPDIR
|
||||||
# Calcular suma de comprobación.
|
# Calcular suma de comprobación.
|
||||||
md5sum "$CLIENTINITRD" | cut -f1 -d" " > "$CLIENTINITRD.sum"
|
md5sum "$CLIENTINITRD" | cut -f1 -d" " > "$CLIENTINITRD.sum"
|
||||||
let CHANGES++
|
let CHANGES++
|
||||||
else
|
else
|
||||||
echolog "$PROG: Cliente \"$OGLIVE\" no accesible."
|
echo "$PROG: Cliente \"$OGLIVE\" no accesible."
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if [[ $CHANGES != 0 ]]; then
|
if [[ $CHANGES != 0 ]]; then
|
||||||
# Ticket 565, preparar acceso Rsync servidor.
|
# Ticket 565, preparar acceso Rsync servidor.
|
||||||
[ -e /etc/rsyncd.secrets ] && sed -i -n -e "/^$SAMBAUSER:/!p" -e "$ a$SAMBAUSER:$SAMBAPASS" /etc/rsyncd.secrets || echo "$SAMBAUSER:$SAMBAPASS" > /etc/rsyncd.secrets
|
echo "$SAMBAUSER:$SAMBAPASS" > /etc/rsyncd.secrets
|
||||||
chown root.root /etc/rsyncd.secrets
|
chown root.root /etc/rsyncd.secrets
|
||||||
chmod 600 /etc/rsyncd.secrets
|
chmod 600 /etc/rsyncd.secrets
|
||||||
# Cambiar clave Samba.
|
# Cambiar clave Samba.
|
||||||
echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
|
echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
|
||||||
else
|
else
|
||||||
echolog "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
|
echo "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -325,7 +325,7 @@ def og_boot_create_dirs():
|
||||||
|
|
||||||
def og_boot_symfony_install(path_opengnsys_base):
|
def og_boot_symfony_install(path_opengnsys_base):
|
||||||
logger.info("Creating Symfony application skeleton...")
|
logger.info("Creating Symfony application skeleton...")
|
||||||
downloadComposer()
|
# downloadComposer()
|
||||||
# Copiar los archivos .env y composer.json primero
|
# Copiar los archivos .env y composer.json primero
|
||||||
logger.info(f"Copying files (.env and composer.json) from {WORKDIR}/ogboot/.env to {path_opengnsys_base}/.env")
|
logger.info(f"Copying files (.env and composer.json) from {WORKDIR}/ogboot/.env to {path_opengnsys_base}/.env")
|
||||||
shutil.copy(f"{WORKDIR}/ogboot/.env", os.path.join(path_opengnsys_base, ".env"))
|
shutil.copy(f"{WORKDIR}/ogboot/.env", os.path.join(path_opengnsys_base, ".env"))
|
||||||
|
|
@ -976,11 +976,13 @@ og_core_create_user("ogboot")
|
||||||
logger.info("Creating directories.")
|
logger.info("Creating directories.")
|
||||||
og_boot_create_dirs()
|
og_boot_create_dirs()
|
||||||
|
|
||||||
|
logger.info("Copying installation files.")
|
||||||
|
og_boot_copy_files(INSTALL_OGBOOT_TARGET)
|
||||||
|
|
||||||
logger.info("Installing Symfony.")
|
logger.info("Installing Symfony.")
|
||||||
og_boot_symfony_install(INSTALL_OGBOOT_TARGET)
|
og_boot_symfony_install(INSTALL_OGBOOT_TARGET)
|
||||||
|
|
||||||
logger.info("Copying installation files.")
|
|
||||||
og_boot_copy_files(INSTALL_OGBOOT_TARGET)
|
|
||||||
#if os.system("echo $?") != 0:
|
#if os.system("echo $?") != 0:
|
||||||
# logger.error("Error while creating skeleton directory!")
|
# logger.error("Error while creating skeleton directory!")
|
||||||
# exit(1)
|
# exit(1)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue