summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrina Gómez <irinagomez@us.es>2019-06-10 11:46:26 +0200
committerIrina Gómez <irinagomez@us.es>2019-06-10 11:46:26 +0200
commit25d4404fde54af8a926d0e0b6fdebfc38ac7feab (patch)
tree349d450668c652f6323b6368839cef074e0481c2
parent0b856b4d06c4a3a638c20c0433190fe9bcfbddfa (diff)
#802 Advanced Boot Management sends to 'sendclientmode' script access data to the database as environment variables.
-rw-r--r--admin/WebConsole/includes/tftputils.php15
-rwxr-xr-xserver/bin/setclientmode19
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//\'/\'}"