diff options
-rw-r--r-- | admin/WebConsole/rest/ogagent.php | 14 | ||||
-rw-r--r-- | doc/CHANGELOG.es.txt | 4 | ||||
-rwxr-xr-x | server/bin/listclientlive | 49 | ||||
-rwxr-xr-x | server/bin/listclientmode | 2 | ||||
-rwxr-xr-x | server/bin/setclientlive | 70 |
5 files changed, 138 insertions, 1 deletions
diff --git a/admin/WebConsole/rest/ogagent.php b/admin/WebConsole/rest/ogagent.php index 30d0895d..e2a59aee 100644 --- a/admin/WebConsole/rest/ogagent.php +++ b/admin/WebConsole/rest/ogagent.php @@ -19,6 +19,20 @@ function writeLog($message = "") { file_put_contents(LOG_FILE, date(DATE_ISO8601).": $message\n", FILE_APPEND); } +// Look for "show popup" pending operations into client's actions queue. +function checkPendingPopup($clntid) { + global $cmd; + + // Look for commands available to launch on the client. + $cmd->CreaParametro("@clntid", $clntid, 1); + $cmd->texto = <<<EOD +SELECT parametros + FROM acciones + WHERE idordenador=@clntid AND estado=$ACCION_INICIADA AND idcomando=16;"; +EOD +// ... +} + /** * @brief OGAgent notifies that its service is started on a client. * @note Route: /ogagent/started, Method: POST, Format: JSON diff --git a/doc/CHANGELOG.es.txt b/doc/CHANGELOG.es.txt index 72e12e74..1f724b02 100644 --- a/doc/CHANGELOG.es.txt +++ b/doc/CHANGELOG.es.txt @@ -24,12 +24,15 @@ Tickets resueltos en módulo OpenGnsys Cloning Engine: Tickets resueltos en módulo OpenGnsys Client: #233 Añadir reloj al cliente (resuelto en #746) #244 Internacionalización de los mensajes del Browser (mejora) +#528 busybox tftp ogLive con acceso subdirectorio contenedor tftpd del server #625 Modo offline: segundo sistema de ficheros en cache/USB (duplicado de #467) #709 Script para instalar módulos del Kenrel en el cliente ogLive #717 Indicar manualmente parámetros de arranque de un S.O. #724 Cliente ogLive 1.1.0 basado en Ubuntu 15.10 o Ubuntu 16.04 LTS #725 Sincronización horaria de clientes con servidor NTP #746 Reestructurar barra de estado del Browser del cliente (mejora) +#769 ogLive ampliar espacio de memoria para instalar software en "caliente" y exportar proxy de https(s) y ftp(s) +#773 Incluir script personalizado para bootOs #774 Soportar clientes ogLive de 64 bits #783 Browser registra salida de comandos ejecutados al pulsar enlace @@ -39,6 +42,7 @@ Tickets resueltos en módulo OpenGnsys Server: #723 Cambio temporal de fichero de arranque PXE #736 Mejorar la seguridad del servidor #745 Depurar ogAdmServer (duplicado de #559) +#787 Todos los elementos del ogLive se localizan en el Server Tickets resueltos en módulo OpenGnsys Repository Server: #379 Usar identificador de operación para el ogAdmRepoAux (no se resolverá) diff --git a/server/bin/listclientlive b/server/bin/listclientlive new file mode 100755 index 00000000..006f4a5e --- /dev/null +++ b/server/bin/listclientlive @@ -0,0 +1,49 @@ +#!/bin/bash +# listclientlive: Lista la distribución ogLive asociada a los clientes, +# ya sea un equipo o un aula. +# Uso: listclienlive NombrePC | NombreAula +# Autor: Ramón M. Gómez - Univ. Sevilla, junio 2017 + + +# Variables. +PROG=$(basename $0) +OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} +SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg +TFTPDIR=$OPENGNSYS/tftpboot +MYCNF=/tmp/.my.cnf.$$ + +# Control básico de errores. +if [ $# -ne 1 ]; then + echo "$PROG: Error de ejecución" >&2 + echo "Formato: $PROG [NOMBRE_PC|NOMBRE_AULA]" >&2 + exit 1 +fi +if [ ! -r $SERVERCONF ]; then + echo "$PROG: Sin acceso a fichero de configuración" >&2 + exit 2 +fi + +# Obtener datos de acceso a la Base de datos. +source $SERVERCONF +# Sustituir caracteres ' por \' para evitar inyección SQL. +RESOURCE="${1//\'/\'}" +# Componer fichero con credenciales de conexión. +touch $MYCNF +chmod 600 $MYCNF +cat << EOT > $MYCNF +[client] +user=$USUARIO +password=$PASSWORD +EOT +# Borrar el fichero temporal si termina el proceso. +trap "rm -f $MYCNF" 0 1 2 3 6 9 15 +# Obtener nombre de ordenador individual o todos los de una aula e indicar su plantilla asociada. +mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ + "SELECT nombreordenador, oglivedir FROM ordenadores + JOIN aulas USING (idaula) + WHERE aulas.nombreaula='$RESOURCE' + OR nombreordenador='$RESOURCE';" | \ + while read PC OGLIVE; do + echo "Equipo $PC asociado a cliente \"$OGLIVE\" $([ -e $TFTPDIR/$OGLIVE ] || echo "(inexistente)")" + done + diff --git a/server/bin/listclientmode b/server/bin/listclientmode index 2496a6da..5d02bcee 100755 --- a/server/bin/listclientmode +++ b/server/bin/listclientmode @@ -46,6 +46,6 @@ mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ WHERE aulas.nombreaula='$RESOURCE' OR nombreordenador='$RESOURCE';" | \ while read PC TMPL; do - echo "Equipo $PC asociado a arranque tipo \"$(head -1 $TMPLDIR/$TMPL |cut -f2 -d" ")\" (fichero $TMPL)" + echo "Equipo \"$PC\" asociado a arranque tipo \"$(head -1 $TMPLDIR/$TMPL |cut -f2 -d" ")\" (fichero $TMPL)" done diff --git a/server/bin/setclientlive b/server/bin/setclientlive new file mode 100755 index 00000000..ea3a7db0 --- /dev/null +++ b/server/bin/setclientlive @@ -0,0 +1,70 @@ +#!/bin/bash + +#/** +# setclientlive DirOGLive | IndiceOGLive { NombrePC | NombreAula } Modo_trabajo +#@file setclientlive +#@brief Configura el archivo de arranque de PXE para asignar el cliente ogLive, ya sea a un equipo o a un aula +#@param $1 DirOGLive, IndiceOGLive o "default" (según script "oglivecli") +#@param $2 Ámbito { NombrePC | NombreAula } +#warning No se admiten cambios temporales. +#@version 1.1.0 - Versión inicial basada en script "setclientmode". +#@author Ramón M. Gómez - Univ. Sevilla, junio 2017 +#*/ ## + + +# Variables. +PROG=$(basename "$0") +PATH=$PATH:$(dirname $(realpath "$0")) +OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} +SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg +TFTPDIR=$OPENGNSYS/tftpboot +LOGFILE=$OPENGNSYS/log/opengnsys.log +MYCNF=/tmp/.my.cnf.$$ + +# Control básico de errores. +if [ $# -ne 2 ]; then + echo "$PROG: Error de ejecución" >&2 + echo "Formato: $PROG {DIR_OGLIVE|INDICE_OGLIVE|default} {NOMBRE_PC|NOMBRE_AULA}" >&2 + exit 1 +fi +if [ ! -r $SERVERCONF ]; then + echo "$PROG: Sin acceso a fichero de configuración" >&2 + exit 2 +fi +case "$1" in + [0-9]*) DIR=$(oglivecli search $1 2>/dev/null) ;; + "default") DIR="ogLive" ;; + *) if oglivecli search "$1" 2>/dev/null; then DIR="$1"; fi ;; +esac +if [ -z "$DIR" ]; then + echo "$PROG: ogLive no ecncontrado, listar ejecutando \"oglivecli list\"" >&2 + exit 1 +fi +if [ ! -e "$TFTPDIR/$DIR" ]; then + echo "$PROG: directorio de ogLive no ecncontrado: \"DIR\"" >&2 + exit 1 +fi + +# Obtener datos de acceso a la Base de datos. +source $SERVERCONF +# Sustituir caracteres ' por \' para evitar inyección SQL. +OGLIVEDIR="${DIR//\'/\'}" +RESOURCE="${2//\'/\'}" +# Componer fichero con credenciales de conexión. +touch $MYCNF +chmod 600 $MYCNF +cat << EOT > $MYCNF +[client] +user=$USUARIO +password=$PASSWORD +EOT +# Borrar el fichero temporal si termina el proceso. +trap "rm -f $MYCNF" 0 1 2 3 6 9 15 +# Actualizar ogLive para todos los clientes y reasignar plantilla PXE. +listclientmode "$RESOURCE" | awk -F\" '{print $2,$4}' | \ + while read PC BOOTMODE; do + date +"%b %d %T $PROG: Configurando \"$PC\" con cliente \"$OGLIVEDIR\"" | tee -a $LOGFILE + mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -e \ + "UPDATE ordenadores SET oglivedir='$OGLIVEDIR' WHERE nombreordenador='$PC';" + setclientmode $BOOTMODE $PC PERM >/dev/null + done |