From 25d4404fde54af8a926d0e0b6fdebfc38ac7feab Mon Sep 17 00:00:00 2001 From: Irina Gómez Date: Mon, 10 Jun 2019 11:46:26 +0200 Subject: #802 Advanced Boot Management sends to 'sendclientmode' script access data to the database as environment variables. --- admin/WebConsole/includes/tftputils.php | 15 +++------------ server/bin/setclientmode | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/admin/WebConsole/includes/tftputils.php b/admin/WebConsole/includes/tftputils.php index 9024902f..87da6287 100644 --- a/admin/WebConsole/includes/tftputils.php +++ b/admin/WebConsole/includes/tftputils.php @@ -53,7 +53,7 @@ function clientKernelVersion () { * los datos almacenados en la BD. * @param Object cmd Objeto de conexión a la base de datos. * @param String bootopt Plantilla de arranque PXE. - * @param Integer hostid Id. del ordenador. + * @param String hostname Nombre del ordenador. * @param String lang Idioma de arranque. * @version 1.0.5 - Primera versión, adaptada de NetBoot Avanzado (Antonio J. Doblas Viso - Universidad de Málaga) * @author Ramón Gómez - ETSII Universidad de Sevilla @@ -76,13 +76,7 @@ function createBootMode ($cmd, $bootopt, $hostname, $lang) { // Datos para el acceso a mysql $strcn=explode(";",$cadenaconexion); - $file=tempnam("/tmp",".server.cnf."); - - // Creo fichero con datos para mysql - $gestor=fopen($file, "w"); - fwrite($gestor, "USUARIO=".$strcn[1]."\nPASSWORD=".$strcn[2]."\n"); - fwrite($gestor, "datasource=".$strcn[0]."\nCATALOG=".$strcn[3]); - fclose($gestor); + $acceso="USUARIO=".$strcn[1]." PASSWORD=".$strcn[2]." CATALOG=".$strcn[3]; // Plantilla con las opciones por defecto. if (empty ($bootopt)) $bootopt = "00unknown"; @@ -104,10 +98,7 @@ function createBootMode ($cmd, $bootopt, $hostname, $lang) { $description=exec("awk 'NR==1 {print $2}' ".PXEDIRBIOS."/templates/".$bootopt); if ($description === "") $description=exec("awk 'NR==1 {print $2}' ".PXEDIRUEFI."/templates/".$bootopt); // Llamamos al script setclientmode - shell_exec("export LANG=$lang; /opt/opengnsys/bin/setclientmode $description $hostname PERM $file"); - - // Borro fichero para mysql - unlink($file); + shell_exec("export LANG=$lang $acceso; /opt/opengnsys/bin/setclientmode $description $hostname PERM $file"); } diff --git a/server/bin/setclientmode b/server/bin/setclientmode index e5eff518..f29b1180 100755 --- a/server/bin/setclientmode +++ b/server/bin/setclientmode @@ -8,7 +8,6 @@ #@param $1 NombrePlatilla #@param $2 Ámbito { NombrePC | NombreAula } #@param $3 Modo_trabajo = { 0, TEMP, 1, PERM } - 0 si es temporal y 1 si es permanente. -#@param $4 Fichero con los datos de acceso a la base de datos (USUARIO, PASSWORD, datasource y CATALOG). #@version 1.0 - Versión inicial. #@author Irina Gomez y Ramon Gomez - Univ. Sevilla, noviembre 2010 #@version 1.0.1 - Identificacion de la plantilla por nombre en consola = en primera linea de la plantilla @@ -23,7 +22,7 @@ #@version 1.1.0a - El server siempre es el servidor PXE. El segundo parámetro de la IP es el SERVER. La asignación del ogLive siempre es el server. (ticket #859). #@author Antonio J. Doblas Viso, Universidad de Malaga #@date 2018-07-11 -#@version 1.1.1 - Crea configuración PXE para BIOS y UEFI. Permite pasar datos de acceso a la base de datos en un fichero. (ticket #802) +#@version 1.1.1 - Crea configuración PXE para BIOS y UEFI. Permite pasar los datos acceso a la base de datos por variables de entorno. (ticket #802) #@author Irina Gomez, ETSII Universidad de Sevilla #@date 2019-02-13 #*/ ## @@ -31,8 +30,7 @@ # Variables. PROG=$(basename $0) OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} -SERVERCONF="$4" -SERVERCONF=${SERVERCONF:-$OPENGNSYS/etc/ogAdmServer.cfg} +SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg PXEDIR[0]=$OPENGNSYS/tftpboot/menu.lst PXEDIR[1]=$OPENGNSYS/tftpboot/grub LOGFILE=$OPENGNSYS/log/opengnsys.log @@ -45,9 +43,14 @@ if [ $# -ne 3 -a $# -ne 4 ]; then echo "Formato: $PROG PLANTILLA [NOMBRE_PC|NOMBRE_AULA] MODO [ BD_CONF ]" exit 1 fi -if [ ! -r $SERVERCONF ]; then - echo "$PROG: Sin acceso a fichero de configuración" - exit 2 +# El acceso a mysql por las variables pasadas o por el fichero de configuarción. +if [ -z "$USUARIO" ] || [ -z "$PASSWORD" ] || [ -z "$CATALOG" ]; then + if [ -r "$SERVERCONF" ]; then + source $SERVERCONF + else + echo "$PROG: Sin acceso a fichero de configuración" + exit 2 + fi fi TEMPLATE[0]=$(grep -l "^#.* $1 *$" ${PXEDIR[0]}/templates/*) TEMPLATE[1]=$(grep -l "^#.* $1 *$" ${PXEDIR[1]}/templates/*) @@ -63,8 +66,6 @@ case "$3" in exit 1 ;; esac -# Obtener datos de acceso a la Base de datos. -source $SERVERCONF # Sustituir caracteres ' por \' para evitar inyección SQL. BOOTMODE="${1//\'/\'}" RESOURCE="${2//\'/\'}" -- cgit v1.2.3-18-g5258