diff options
author | alonso <alonso@us.es> | 2013-11-18 11:07:30 +0000 |
---|---|---|
committer | alonso <alonso@us.es> | 2013-11-18 11:07:30 +0000 |
commit | 98cdd5db91436671ea648b659e6f667762fbf099 (patch) | |
tree | dc21bd28f0e31bd7806be4b11b8bf44499a1b3d2 | |
parent | 987a20da426133c16692ab4fbf09e20da7720fba (diff) |
Repaso de las funciones de sincronización
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4087 a21b9725-9963-47de-94b9-378ad31fedc9
-rw-r--r-- | admin/Database/ogAdmBD.sql | 6 | ||||
-rwxr-xr-x | admin/Interface/CrearImagenBasica | 2 | ||||
-rwxr-xr-x | admin/Interface/CrearSoftIncremental | 17 | ||||
-rw-r--r-- | admin/Interface/CreateBaseImage | 43 | ||||
-rwxr-xr-x | admin/Interface/RestaurarImagenBasica | 10 | ||||
-rwxr-xr-x | admin/Interface/RestaurarSoftIncremental | 69 | ||||
-rw-r--r-- | admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c | 4606 | ||||
-rw-r--r-- | admin/WebConsole/comandos/RestaurarSoftIncremental.php | 2 | ||||
-rw-r--r-- | admin/WebConsole/idiomas/javascripts/esp/propiedades_trabajos_esp.js | 7 | ||||
-rw-r--r-- | admin/WebConsole/idiomas/javascripts/esp/trabajostareas_esp.js | 10 |
10 files changed, 2342 insertions, 2430 deletions
diff --git a/admin/Database/ogAdmBD.sql b/admin/Database/ogAdmBD.sql index 01244127..d89e5935 100644 --- a/admin/Database/ogAdmBD.sql +++ b/admin/Database/ogAdmBD.sql @@ -233,11 +233,7 @@ INSERT INTO `comandos` (`idcomando`, `descripcion`, `pagina`, `gestor`, `funcion (12, 'Crear Imagen Basica', '../comandos/CrearImagenBasica.php', '../comandos/gestores/gestor_Comandos.php', 'CrearImagenBasica', '', 16, 'dsk;par;cpt;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba', 'nfn;dsk;par;cpt;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba', '', 1, 'Sincronizacion'), (13, 'Restaurar Imagen Basica', '../comandos/RestaurarImagenBasica.php', '../comandos/gestores/gestor_Comandos.php', 'RestaurarImagenBasica', '', 28, 'dsk;par;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba;met', 'nfn;dsk;par;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba;met', '', 1, 'Sincronizacion'), (14, 'Crear Software Incremental', '../comandos/CrearSoftIncremental.php', '../comandos/gestores/gestor_Comandos.php', 'CrearSoftIncremental', '', 16, 'dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;nba', 'nfn;dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;nba', '', 1, 'Sincronizacion'), -(15, 'Restaurar Software Incremental', '../comandos/RestaurarSoftIncremental.php', '../comandos/gestores/gestor_Comandos.php', 'RestaurarSoftIncremental', '', 28, 'dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;met;nba', 'nfn;dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;met;nba', '', 1, 'Sincronizacion'), -(16, 'Crear Imagen Básica', '../comandos/CrearImagenBasica.php', '../comandos/gestores/gestor_Comandos.php', 'CreateBaseImage', '', 16, 'dsk;par;cpt;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba', 'nfn;dsk;par;cpt;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba', '', 1, 'diferenciacion'), -(17, 'Restaurar Imagen Básica', '../comandos/RestaurarImagenBasica.php', '../comandos/gestores/gestor_Comandos.php', 'RestoreBaseImage', '', 28, 'dsk;par;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba;met', 'nfn;dsk;par;idi;nci;ipr;iph;bpi;cpc;bpc;rti;nba;met', '', 1, 'diferenciacion'), -(18, 'Crear Imagen Diferencial', '../comandos/CrearSoftIncremental.php', '../comandos/gestores/gestor_Comandos.php', 'CreateDiffImage', '', 16, 'dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;nba', 'nfn;dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;nba', '', 1, 'diferenciacion'), -(19, 'Restaurar Imagen Diferencial', '../comandos/RestaurarSoftIncremental.php', '../comandos/gestores/gestor_Comandos.php', 'RestoreDiffImage', '', 28, 'dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;met;nba', 'nfn;dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;met;nba', '', 1, 'diferenciacion'); +(15, 'Restaurar Software Incremental', '../comandos/RestaurarSoftIncremental.php', '../comandos/gestores/gestor_Comandos.php', 'RestaurarSoftIncremental', '', 28, 'dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;met;nba', 'nfn;dsk;par;idi;nci;ipr;idf;ncf;bpi;cpc;bpc;iph;rti;met;nba', '', 1, 'Sincronizacion'); diff --git a/admin/Interface/CrearImagenBasica b/admin/Interface/CrearImagenBasica index b2017af2..2e201115 100755 --- a/admin/Interface/CrearImagenBasica +++ b/admin/Interface/CrearImagenBasica @@ -9,7 +9,7 @@ # $1 Número de disco # $2 Número de particion # $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio (Si es 0.0.0.0 es caché) +# $4 Dirección del repositorio # $5 Es una cadena "nnn" tipo flags que codifica varios parametros. # Tiene el formato "nnn" donde "n" vale 0 ó 1. # 1XX: Gestionar fichero completo en lugar de diferencas diff --git a/admin/Interface/CrearSoftIncremental b/admin/Interface/CrearSoftIncremental index fd5f909a..89e740fe 100755 --- a/admin/Interface/CrearSoftIncremental +++ b/admin/Interface/CrearSoftIncremental @@ -24,7 +24,8 @@ # XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla # XXX1: No borrar archivos en destino # El valor X indica que no importa el valor que tenga el dato -# $8 Ruta de origen de la Imagen (Carpeta) +# $8 Método de syncronización 1=Sincronización1 2=Sincronizacion2 +# $9 Ruta de origen de la Imagen (Carpeta) #___________________________________________________________________ # @@ -32,13 +33,21 @@ #___________________________________________________________________ PROG="$(basename $0)" - if [ $# -lt 7 ]; then + if [ $# -lt 8 ]; then usage=" ndisco nparticion nombre_imagen_basica ip_repositorio nombre_imagen_incremental" usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen" ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" exit $? fi - # Llamada a la función de sincronización. - ogCrearSoftIncremental "$@" + + if [ $8 -eq 1 ]; then + #sincronizacion1 + ogCrearSoftIncremental "$@" + fi + + + #if [ $8 -eq 2 ]; then + + #fi diff --git a/admin/Interface/CreateBaseImage b/admin/Interface/CreateBaseImage deleted file mode 100644 index b0186196..00000000 --- a/admin/Interface/CreateBaseImage +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# CREAR IMAGEN BÁSICA -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio (Si es 0.0.0.0 es caché) -# $5 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la imagen que no estén en la partición -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $6 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la imagen del repositorio antes de crearla -# X1XX: Copiar Imagen básica también a la cache -# XX1X: Borrar previamente la imagen de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $7 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - PROG="$(basename $0)" - if [ $# -lt 6 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio" - usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - # Llamada a la función de sincronización. - ogCreateBaseImage "$@" - diff --git a/admin/Interface/RestaurarImagenBasica b/admin/Interface/RestaurarImagenBasica index 2699ac06..da17a591 100755 --- a/admin/Interface/RestaurarImagenBasica +++ b/admin/Interface/RestaurarImagenBasica @@ -9,7 +9,7 @@ # $1 Número de disco # $2 Número de particion # $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio (Si es 0.0.0.0 es caché) +# $4 Dirección del repositorio # $5 Tipo de transmisión 0=Unicast 1=Multicast # $6 Es una cadena "nnn" tipo flags que codifica varios parametros. # Tiene el formato "nnn" donde "n" vale 0 ó 1. @@ -25,12 +25,9 @@ # XXX1: No borrar archivos en destino # El valor X indica que no importa el valor que tenga el dato # $8 Método de clonación 0=Desde caché 1=Desde repositorio -# $9 Metodo de sincronizacion +# $9 Metodo de sincronizacion 1=Sincronización1 2=Sincronizacion2 # $10 Ruta de origen de la Imagen (Carpeta) - - - #___________________________________________________________________ # # Control parámetros @@ -48,6 +45,7 @@ #sincronizacion1 ogRestaurarImagenBasica "$@" fi - # Llamada a la función de sincronización. + #if [ $9 -eq 2 ]; then + #fi diff --git a/admin/Interface/RestaurarSoftIncremental b/admin/Interface/RestaurarSoftIncremental index 01745c90..9b2b9681 100755 --- a/admin/Interface/RestaurarSoftIncremental +++ b/admin/Interface/RestaurarSoftIncremental @@ -11,60 +11,35 @@ # $3 Nombre canónico de la imagen básica (sin extensión) # $4 Dirección del repositorio # $5 Nombre canónico del software incremental (sin extensión) -# $5 Es una cadena "nnnn" tipo flags que codifica varios parametros. +# $6 Tipo de transmisión 0=Unicast 1=Multicast +# $7 Es una cadena "nnn" tipo flags que codifica varios parametros. +# Tiene el formato "nnn" donde "n" vale 0 ó 1. +# 1XX: Gestionar fichero completo en lugar de diferencas +# X1X: Eliminar archivos de la partición que no estén en la imagen +# XX1: Comprimir archivos para enviarlos por la red +# El valor X indica que no importa el valor que tenga el dato +# $8 Es una cadena "nnnn" tipo flags que codifica varios parametros. # Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la particion de destino antes de restaurar la imagen incremental -# X1XX: Copiar Imagen incremental también a la cache -# XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla +# 1XXX: Borrar la particion de destino antes de restaurar la imagen basica +# X1XX: Copiar Imagen básica también a la cache +# XX1X: Borrar previamente la imagen basica de la cache antes de copiarla # XXX1: No borrar archivos en destino # El valor X indica que no importa el valor que tenga el dato -# $7 Método de clonación 0=Desde caché 1=Desde repositorio -# $8 Ruta de origen de la Imagen (Carpeta) +# $9 Método de clonación 0=Desde caché 1=Desde repositorio +# $10 Metodo de sincronizacion 1=Sincronización1 2=Sincronizacion2 +# $11 Ruta de origen de la Imagen (Carpeta) + #___________________________________________________________________ # # Control parámetros #___________________________________________________________________ - PROG="$(basename $0)" - if [ $# -lt 6 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio copiar_a_caché " - usage="$usage Borrar_cache_previamente metodo_clonación Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - # Llamada a la función de sincronización. - coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh - ogRestaurarSoftIncremental "$@" - kill $COPROC_PID - exit - -# Versión 2 -# Para probar la versión 2 comentar las dos líneas anteriores - -# Trasferencias comprimidas -#export ogcompress="true" - -DIFFEXT=".diff" - -[ $7 -eq 0 ] && ORIG="CACHE" || ORIG="REPO" - -flag=$5 -echo "flah:$flag">/tmp/log -DELIMG=${flag:0:1} # No se puede borra la imagen despues de restaurar la compreta -COPYCACHE=${flag:1:1} -DELCACHE=${flag:2:1} -NODELETEFILE=${flag:3:1} # No tiene sentido en las diferenciales - -echo -n "" &>$OGLOGSESSION - -if [ $COPYCACHE -eq 1 ]; then - ORIG="CACHE" -fi -if [ $DELCACHE -eq 1 ]; then - echo "Borramos imagen de la cache" &>>$OGLOGSESSION - CACHEFILE=$(ogGetPath "CACHE" "$5$DIFFEXT") && rm -rf $CACHEFILE -fi + if [ ${10} -eq 1 ]; then + #sincronizacion1 + ogRestaurarSoftIncremental "$@" + fi -restoreDiffImage "$ORIG" "$5" "$1" "$2" &>>$OGLOGSESSION + #if [ ${10} -eq 2 ]; then + #sincronizacion2 + #fi diff --git a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c index c740c0bd..5b4d72a8 100644 --- a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c +++ b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.c @@ -1,2306 +1,2300 @@ -// ******************************************************************************************************** -// Cliernte: ogAdmClient -// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla -// Fecha Creación: Marzo-2010 -// Fecha Última modificación: Abril-2010 -// Nombre del fichero: ogAdmClient.c -// Descripción :Este fichero implementa el cliente general del sistema -// ******************************************************************************************************** -#include "ogAdmClient.h" -#include "ogAdmLib.c" -//________________________________________________________________________________________________________ -// Función: tomaConfiguracion -// -// Descripción: -// Lee el fichero de configuración del servicio -// Parámetros: -// filecfg : Ruta completa al fichero de configuración -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//________________________________________________________________________________________________________ -BOOLEAN tomaConfiguracion(char* filecfg) -{ - char modulo[] = "tomaConfiguracion()"; - - if (filecfg == NULL || strlen(filecfg) == 0) { - errorLog(modulo, 1, FALSE); // Fichero de configuración del cliente vacío - return (FALSE); - } - FILE *fcfg; - int lSize; - char * buffer, *lineas[MAXPRM], *dualparametro[2]; - int i, numlin, resul; - - fcfg = fopen(filecfg, "rt"); - if (fcfg == NULL) { - errorLog(modulo, 2, FALSE); // No existe fichero de configuración del cliente - return (FALSE); - } - - fseek(fcfg, 0, SEEK_END); - lSize = ftell(fcfg); // Obtiene tamaño del fichero. - rewind(fcfg); - buffer = (char*) reservaMemoria(lSize+1); // Toma memoria para el buffer de lectura. - if (buffer == NULL) { // No hay memoria suficiente para el buffer - errorLog(modulo, 3, FALSE); - return (FALSE); - } - lSize=fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero - buffer[lSize]=CHARNULL; - fclose(fcfg); - - /* Inicializar variables globales */ - servidoradm[0]=CHARNULL; - puerto[0] = CHARNULL; - pathinterface[0]=CHARNULL; - urlmenu[0]=CHARNULL; - urlmsg[0]=CHARNULL; - - numlin = splitCadena(lineas, buffer, '\n'); - for (i = 0; i < numlin; i++) { - splitCadena(dualparametro, lineas[i], '='); - - resul = strcmp(StrToUpper(dualparametro[0]), "SERVIDORADM"); - if (resul == 0) - strcpy(servidoradm, dualparametro[1]); - - resul = strcmp(StrToUpper(dualparametro[0]), "PUERTO"); - if (resul == 0) - strcpy(puerto, dualparametro[1]); - - resul = strcmp(StrToUpper(dualparametro[0]), "PATHINTERFACE"); - if (resul == 0) - strcpy(pathinterface, dualparametro[1]); - - resul = strcmp(StrToUpper(dualparametro[0]), "URLMENU"); - if (resul == 0) - strcpy(urlmenu, dualparametro[1]); - - resul = strcmp(StrToUpper(dualparametro[0]), "URLMSG"); - if (resul == 0) - strcpy(urlmsg, dualparametro[1]); - } - - if (servidoradm[0] == CHARNULL) { - liberaMemoria(buffer); - errorLog(modulo,4, FALSE); // Falta parámetro SERVIDORADM - return (FALSE); - } - - if (puerto[0] == CHARNULL) { - liberaMemoria(buffer); - errorLog(modulo,5, FALSE); // Falta parámetro PUERTO - return (FALSE); - } - if (pathinterface[0] == CHARNULL) { - liberaMemoria(buffer); - errorLog(modulo,56, FALSE); // Falta parámetro PATHINTERFACE - return (FALSE); - } - - if (urlmenu[0] == CHARNULL) { - liberaMemoria(buffer); - errorLog(modulo,89, FALSE); // Falta parámetro URLMENU - return (FALSE); - } - if (urlmsg[0] == CHARNULL) { - liberaMemoria(buffer); - errorLog(modulo,90, FALSE); // Falta parámetro URLMSG - return (FALSE); - } - liberaMemoria(buffer); - return (TRUE); -} -//______________________________________________________________________________________________________ -// Función: FinterfaceAdmin -// -// Descripción: -// Esta función es la puerta de comunicación entre el módulo de administración y el motor de clonación. -// La Aplicación de administración utiliza una interface para ejecutar funciones del motor de clonación; -// esta interface llamará a la API del motor con lo que cambiando el comportamiento de esta interface -// podremos hacer llamadas a otras API de clonación y de esta manera probar distintos motores. -// -// Parámetros: -// - script: Nombre del módulo,función o script de la interface -// - parametros: Parámetros que se le pasarán a la interface -// - salida: Recoge la salida que genera la llamada a la interface - -// Devuelve: -// Código de error de la ejecución al módulo , función o script de la interface -// -// Especificaciones: -// El parámetro salida recoge la salida desde un fichero que se genera en la ejecución del script siempre que -// sea distinto de NULL, esto es, si al llamar a la función este parámetro es NULL no se recogerá dicha salida. -// Este fichero tiene una ubicación fija: /tmp/_retinterface -//______________________________________________________________________________________________________ - -int FinterfaceAdmin( char *script,char* parametros,char* salida) -{ - FILE *f; - int lSize,nargs,i,resul; - char msglog[LONSTD],*argumentos[MAXARGS]; - char modulo[] = "FinterfaceAdmin()"; - - - if (ndebug>= DEBUG_MEDIO) { - sprintf(msglog, "%s:%s", tbMensajes[8], script); - infoDebug(msglog); - } - - /* Crea matriz de los argumentos */ - nargs=splitCadena(argumentos,parametros,32); - for(i=nargs;i<MAXARGS;i++){ - argumentos[i]=NULL; - } - - /* Muestra matriz de los argumentos */ - for(i=0;i<nargs;i++){ - if (ndebug>= DEBUG_ALTO) { - sprintf(msglog, "%s: #%d-%s", tbMensajes[9],i+1,argumentos[i]); - infoDebug(msglog); - } - } - /* Elimina fichero de retorno */ - if(salida!=(char*)NULL){ - f = fopen("/tmp/_retinterface_","w" ); - if (f==NULL){ // Error de eliminación - scriptLog(modulo,10); - resul=8; - scriptLog(modulo,resul); - return(resul); - } - fclose(f); - } - /* Compone linea de comando */ - if(parametros){ - strcat(script," "); - strcat(script,parametros); - } - /* LLamada función interface */ - resul=system(script); - if(resul){ - scriptLog(modulo,10); - scriptLog(modulo,resul); - return(resul); - } - /* Lee fichero de retorno */ - if(salida!=(char*)NULL){ - f = fopen("/tmp/_retinterface_","rb" ); - if (f==NULL){ // Error de apertura - scriptLog(modulo,10); - resul=9; - scriptLog(modulo,resul); - return(resul); - } - else{ - fseek (f ,0,SEEK_END); // Obtiene tamaño del fichero. - lSize = ftell (f); - rewind (f); - if(lSize>LONGITUD_SCRIPTSALIDA){ - scriptLog(modulo,10); - resul=11; - scriptLog(modulo,resul); - return(resul); - } - fread (salida,1,lSize,f); // Lee contenido del fichero - rTrim(salida); - fclose(f); - } - } - /* Muestra información de retorno */ - if(salida!=(char*)NULL){ - if(ndebug>2){ - sprintf(msglog,"Información devuelta %s",salida); - infoDebug(msglog); - } - } - return(resul); -} -//______________________________________________________________________________________________________ -// Función: interfaceAdmin -// -// Descripción: -// Esta función es la puerta de comunicación entre el módulo de administración y el motor de clonación. -// La Aplicación de administración utiliza una interface para ejecutar funciones del motor de clonación; -// esta interface llamará a la API del motor con lo que cambiando el comportamiento de esta interface -// podremos hacer llamadas a otras API de clonación y de esta manera probar distintos motores. -// -// Parámetros: -// - script: Nombre del módulo,función o script de la interface -// - parametros: Parámetros que se le pasarán a la interface -// - salida: Recoge la salida que genera la llamada a la interface - -// Devuelve: -// Código de error de la ejecución al módulo , función o script de la interface -// -// Especificaciones: -// El parámetro salida recoge la salida desde el procedimiento hijo que se genera en la ejecución de éste -// siempre que sea distinto de NULL, esto es, si al llamar a la función este parámetro es NULL no se -// recogerá dicha salida. -//______________________________________________________________________________________________________ - -int interfaceAdmin( char *script,char* parametros,char* salida) -{ - int descr[2]; /* Descriptores de E y S de la turbería */ - int bytesleidos; /* Bytes leidos en el mensaje */ - int estado; - pid_t pid; - char buffer[LONBLK]; // Buffer de lectura de fichero - pipe (descr); - int i,nargs,resul; - int lon; // Longitud de cadena - char msglog[LONSUC]; // Mensaje de registro de sucesos - char *argumentos[MAXARGS]; - char modulo[] = "interfaceAdmin()"; - if (ndebug>= DEBUG_MEDIO) { - sprintf(msglog, "%s:%s", tbMensajes[8], script); - infoDebug(msglog); - } - - /* Crea matriz de los argumentos */ - nargs=splitCadena(argumentos,parametros,32); - for(i=nargs;i<MAXARGS;i++){ - argumentos[i]=NULL; - } - /* Muestra matriz de los argumentos */ - for(i=1;i<nargs;i++){ - if (ndebug>= DEBUG_ALTO) { - // Truncar la cadena si es mayor que el tamaño de la línea de log. - sprintf(msglog, "%s: #%d-", tbMensajes[9], i+1); - lon = strlen (msglog); - if (lon + strlen (argumentos[i]) < LONSUC) { - strcat (msglog, argumentos[i]); - } - else - { - strncat (msglog, argumentos[i], LONSUC - lon - 4); - strcat (msglog, "..."); - } - infoDebug(msglog); - } - } - - if((pid=fork())==0) - { - //_______________________________________________________________ - - /* Proceso hijo que ejecuta la función de interface */ - - close (descr[LEER]); - dup2 (descr[ESCRIBIR], 1); - close (descr[ESCRIBIR]); - resul=execv(script,argumentos); - //resul=execlp (script, script, argumentos[0],argumentos[1],NULL); - exit(resul); - - /* Fin de proceso hijo */ - //_______________________________________________________________ - } - else - { - //_______________________________________________________________ - - /* Proceso padre que espera la ejecución del hijo */ - - if (pid ==-1){ // Error en la creación del proceso hijo - scriptLog(modulo,10); - resul=13; - scriptLog(modulo,resul); - return(resul); - } - close (descr[ESCRIBIR]); - bytesleidos = read (descr[LEER], buffer, LONBLK-1); - while(bytesleidos>0){ - if(salida!=(char*)NULL){ // Si se solicita retorno de información... - buffer[bytesleidos]='\0'; - // Error si se supera el tamaño máximo de cadena de salida. - if(strlen(buffer)+strlen(salida)>LONGITUD_SCRIPTSALIDA){ - scriptLog(modulo,10); - resul=11; - scriptLog(modulo,resul); - return(resul); - } - rTrim(buffer); - strcat(salida,buffer); - } - bytesleidos = read (descr[LEER], buffer, LONBLK-1); - } - close (descr[LEER]); - //kill(pid,SIGQUIT); - waitpid(pid,&estado,0); - resul=WEXITSTATUS(estado); - if(resul){ - scriptLog(modulo,10); - scriptLog(modulo,resul); - return(resul); - } - /* Fin de proceso padre */ - //_______________________________________________________________ - } - - /* Muestra información de retorno */ - if(salida!=(char*)NULL){ - if(ndebug>2){ - // Truncar la cadena si es mayor que el tamaño de la línea de log. - strcpy(msglog,"Informacion devuelta "); - lon = strlen (msglog); - if (lon + strlen (salida) < LONSUC) { - strcat (msglog, salida); - } - else - { - strncat (msglog, salida, LONSUC-lon-4); - strcat (msglog, "..."); - } - infoDebug(msglog); - } - } - return(resul); -} -//______________________________________________________________________________________________________ -// Función: scriptLog -// -// Descripción: -// Registra los sucesos de errores de scripts en el fichero de log -// Parametros: -// - modulo: Módulo donde se produjo el error -// - coderr : Código del mensaje de error del script -//______________________________________________________________________________________________________ -void scriptLog(const char *modulo,int coderr) -{ - char msglog[LONSUC]; - - if(coderr<MAXERRORSCRIPT) - errorInfo(modulo,tbErroresScripts[coderr]); // Se ha producido algún error registrado - else{ - sprintf(msglog,"%s: %d",tbErroresScripts[MAXERRORSCRIPT],coderr); - errorInfo(modulo,msglog); - } -} -//______________________________________________________________________________________________________ -// Función: TomaIPlocal -// -// Descripción: -// Recupera la IP local -// Parámetros: -// Ninguno -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// Especificaciones: -// En caso de no encontrar la IP o generarse algún error la IP local sería 0.0.0.0 -//______________________________________________________________________________________________________ -BOOLEAN tomaIPlocal() -{ - char modulo[] = "tomaIPlocal()"; - - // Para debug - //strcpy(IPlocal,"10.1.15.203"); - //return(TRUE); - - sprintf(interface,"%s/getIpAddress",pathinterface); - herror=interfaceAdmin(interface,NULL,IPlocal); - if(herror){ - errorLog(modulo,85,FALSE); - return(FALSE); - } - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: cuestionCache -// -// Descripción: -// Procesa la cache en caso de existir. -// Parámetros: -// tam : Tamaño de la cache -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN cuestionCache(char* tam) -{ - return(TRUE); - //>>>>>>>>>>>>>>>>>>>>>>>>>> - char msglog[LONSTD]; - char modulo[] = "cuestionCache()"; - - sprintf(interface,"%s/%s",pathinterface,"procesaCache"); - sprintf(parametros,"%s %s","procesaCache",tam); - - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s",tbErrores[88]); - errorInfo(modulo,msglog); - return(FALSE); - } - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: cargaPaginaWeb -// -// Descripción: -// Muestra una pégina web usando el browser -// Parámetros: -// urp: Dirección url de la página -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -int cargaPaginaWeb(char *url) -{ - int resul=0; - char* argumentos[4]; - char modulo[] = "cargaPaginaWeb()"; - - if(pidbash>0) - kill(pidbash,SIGQUIT); // Destruye el proceso hijo del proceso bash si existiera una conmutación - - if(pidbrowser>0) - kill(pidbrowser,SIGQUIT); // Destruye el proceso hijo anterior y se queda sólo el actual - - sprintf(interface,"/opt/opengnsys/bin/browser"); - sprintf(parametros,"browser -qws %s",url); - - splitCadena(argumentos,parametros,' '); // Crea matriz de los argumentos del scripts - argumentos[3]=NULL; - if((pidbrowser=fork())==0){ - /* Proceso hijo que ejecuta el script */ - resul=execv(interface,argumentos); - exit(resul); - } - else { - if (pidbrowser ==-1){ - scriptLog(modulo,10); - resul=13; - scriptLog(modulo,resul); - return(resul); - } - } - return(resul); -} -//________________________________________________________________________________________________________ -// Función: muestraMenu -// -// Descripción: -// Muestra el menu inicial del cliente -// Parámetros: -// Ninguno -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//________________________________________________________________________________________________________ -void muestraMenu() -{ - cargaPaginaWeb(urlmenu); -} -//______________________________________________________________________________________________________ -// Función: muestraMensaje -// -// Descripción: -// Muestra un mensaje en pantalla -// Parámetros: -// - idx: Indice del mensaje -// - msg: Descripción Mensaje -// ________________________________________________________________________________________________________ -void muestraMensaje(int idx,char*msg) -{ - char *msgpan,url[250]; - - if(msg){ - msgpan=URLEncode(msg); - sprintf(url,"%s?msg=%s",urlmsg,msgpan); // Url de la página de mensajes - liberaMemoria(msgpan); - } - else - sprintf(url,"%s?idx=%d",urlmsg,idx); // Url de la página de mensajes - cargaPaginaWeb(url); -} -//______________________________________________________________________________________________________ -// Función: InclusionCliente -// Descripción: -// Abre una sesión en el servidor de administración y registra al cliente en el sistema -// Parámetros: -// Ninguno -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN inclusionCliente(TRAMA* ptrTrama) -{ - int lon; // Longitud de cadena - char msglog[LONSUC]; // Mensaje de registro de sucesos - char *cfg; // Datos de configuración - SOCKET socket_c; - char modulo[] = "inclusionCliente()"; - - cfg=LeeConfiguracion(); - - if(!cfg){ // No se puede recuperar la configuración del cliente - errorLog(modulo,36,FALSE); - errorLog(modulo,37,FALSE); - return(FALSE); - } - if (ndebug>= DEBUG_ALTO) { - // Truncar la cadena si es mayor que el tamaño de la línea de log. - sprintf(msglog, "%s", tbMensajes[14]); - lon = strlen (msglog); - if (lon + strlen (cfg) < LONSUC) { - strcat (msglog, cfg); - } - else - { - strncat (msglog, cfg, LONSUC - lon - 4); - strcat (msglog, "..."); - } - infoDebug(msglog); - } - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=InclusionCliente\r"); // Nombre de la función a ejecutar en el servidor - lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuración de los Sistemas Operativos del cliente - liberaMemoria(cfg); - - if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){ - errorLog(modulo,37,FALSE); - return(FALSE); - } - ptrTrama=recibeMensaje(&socket_c); - if(!ptrTrama){ - errorLog(modulo,45,FALSE); - return(FALSE); - } - - close(socket_c); - - if(!gestionaTrama(ptrTrama)){ // Análisis de la trama - errorLog(modulo,39,FALSE); - return(FALSE); - } - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: RESPUESTA_InclusionCliente -// -// Descripción: -// Respuesta del servidor de administración a la petición de inicio -// enviando los datos identificativos del cliente y otras configuraciones -// Parámetros: -// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN RESPUESTA_InclusionCliente(TRAMA* ptrTrama) -{ - char* res; - char modulo[] = "RESPUESTA_InclusionCliente()"; - - res=copiaParametro("res",ptrTrama); // Resultado del proceso de inclusión - if(atoi(res)==0){ // Error en el proceso de inclusión - liberaMemoria(res); - errorLog(modulo,41,FALSE); - return (FALSE); - } - liberaMemoria(res); - - idordenador=copiaParametro("ido",ptrTrama); // Identificador del ordenador - nombreordenador=copiaParametro("npc",ptrTrama); // Nombre del ordenador - cache=copiaParametro("che",ptrTrama); // Tamaño de la caché reservada al cliente - idproautoexec=copiaParametro("exe",ptrTrama); // Procedimento de inicio (Autoexec) - idcentro=copiaParametro("idc",ptrTrama); // Identificador de la Unidad Organizativa - idaula=copiaParametro("ida",ptrTrama); // Identificador del aula - - if(idordenador==NULL || nombreordenador==NULL){ - errorLog(modulo,40,FALSE); - return (FALSE); - } - return(TRUE); -} -//______________________________________________________________________________________________________ -// -// Función: LeeConfiguracion -// Descripción: -// Abre una sesión en el servidor de administración y registra al cliente en el sistema -// Parámetros: -// Ninguno -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ - -char* LeeConfiguracion() -{ - char* parametroscfg; - char modulo[] = "LeeConfiguracion()"; - - // Reservar memoria para los datos de cofiguración. - parametroscfg=(char*)reservaMemoria(LONGITUD_SCRIPTSALIDA); - if(!parametroscfg){ - errorLog(modulo,3,FALSE); - return(NULL); - } - // Ejecutar script y obtener datos. - sprintf(interface,"%s/%s",pathinterface,"getConfiguration"); - herror=interfaceAdmin(interface,NULL,parametroscfg); - - if(herror){ // No se puede recuperar la configuración del cliente - liberaMemoria(parametroscfg); - errorLog(modulo,36,FALSE); - return(NULL); - } - return(parametroscfg); -} -//________________________________________________________________________________________________________ -// Función: autoexecCliente -// -// Descripción: -// Solicita procedimiento de autoexec para el cliebnte -// Parámetros: -// Ninguno -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//________________________________________________________________________________________________________ -BOOLEAN autoexecCliente(TRAMA* ptrTrama) -{ - int lon; - SOCKET socket_c; - char modulo[] = "autoexecCliente()"; - - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=AutoexecCliente\rexe=%s\r",idproautoexec); - - if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){ - errorLog(modulo,42,FALSE); - return(FALSE); - } - ptrTrama=recibeMensaje(&socket_c); - if(!ptrTrama){ - errorLog(modulo,45,FALSE); - return(FALSE); - } - - close(socket_c); - - if(!gestionaTrama(ptrTrama)){ // Análisis de la trama - errorLog(modulo,39,FALSE); - return(FALSE); - } - - return(TRUE); -} -//________________________________________________________________________________________________________ -// Función: autoexecCliente -// -// Descripción: -// Ejecuta un script de autoexec personalizado en todos los inicios para el cliente -// Parámetros: -// Ninguno -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//________________________________________________________________________________________________________ -BOOLEAN RESPUESTA_AutoexecCliente(TRAMA* ptrTrama) -{ - SOCKET socket_c; - char *res,*nfl; - char modulo[] = "RESPUESTA_AutoexecCliente()"; - - res=copiaParametro("res",ptrTrama); - if(atoi(res)==0){ // Error en el proceso de autoexec - liberaMemoria(res); - return (FALSE); - } - liberaMemoria(res); - - nfl=copiaParametro("nfl",ptrTrama); - initParametros(ptrTrama,0); - sprintf(ptrTrama->parametros,"nfn=enviaArchivo\rnfl=%s\r",nfl); - liberaMemoria(nfl); - - /* Envía petición */ - if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){ - errorLog(modulo,42,FALSE); - return(FALSE); - } - /* Nombre del archivo destino (local)*/ - char fileautoexec[LONPRM]; - sprintf(fileautoexec,"/tmp/_autoexec_%s",IPlocal); - - /* Recibe archivo */ - if(!recArchivo(&socket_c,fileautoexec)){ - errorLog(modulo,58, FALSE); - close(socket_c); - return(FALSE); - } - - close(socket_c); - - /* Ejecuta archivo */ - ejecutaArchivo(fileautoexec,ptrTrama); - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: comandosPendientes -// -// Descripción: -// Búsqueda de acciones pendientes en el servidor de administración -// Parámetros: -// Ninguno -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN comandosPendientes(TRAMA* ptrTrama) -{ - SOCKET socket_c; - char modulo[] = "comandosPendientes()"; - - CMDPTES=TRUE; - initParametros(ptrTrama,0); - - while(CMDPTES){ - sprintf(ptrTrama->parametros,"nfn=ComandosPendientes\r"); - if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){ - errorLog(modulo,42,FALSE); - return(FALSE); - } - ptrTrama=recibeMensaje(&socket_c); - if(!ptrTrama){ - errorLog(modulo,45,FALSE); - return(FALSE); - } - - close(socket_c); - - if(!gestionaTrama(ptrTrama)){ // Análisis de la trama - errorLog(modulo,39,FALSE); - return(FALSE); - } - } - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: NoComandosPtes -// -// Descripción: -// Conmuta el switch de los comandos pendientes y lo pone a false -// Parámetros: -// - ptrTrama: contenido del mensaje -// Devuelve: -// TRUE siempre -// Especificaciones: -// Cuando se ejecuta esta función se sale del bucle que recupera los comandos pendientes en el -// servidor y el cliente pasa a a estar disponible para recibir comandos desde el éste. -//______________________________________________________________________________________________________ -BOOLEAN NoComandosPtes(TRAMA* ptrTrama) -{ - CMDPTES=FALSE; // Corta el bucle de comandos pendientes - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: ProcesaComandos -// -// Descripción: -// Espera comando desde el Servidor de Administración para ejecutarlos -// Parámetros: -// Ninguno -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -void procesaComandos(TRAMA* ptrTrama) -{ - int lon; - SOCKET socket_c; - char modulo[] = "procesaComandos()"; - - initParametros(ptrTrama,0); - while(TRUE){ - lon=sprintf(ptrTrama->parametros,"nfn=DisponibilidadComandos\r"); - lon+=sprintf(ptrTrama->parametros+lon,"tpc=%s\r",CLIENTE_OPENGNSYS); // Activar disponibilidad - if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_INFORMACION)){ - errorLog(modulo,43,FALSE); - return; - } - infoLog(19); // Disponibilidad de cliente activada - ptrTrama=recibeMensaje(&socket_c); - if(!ptrTrama){ - errorLog(modulo,46,FALSE); - return; - } - - close(socket_c); - - if(!gestionaTrama(ptrTrama)){ // Análisis de la trama - errorLog(modulo,39,FALSE); - return; - } - if(!comandosPendientes(ptrTrama)){ - errorLog(modulo,42,FALSE); - } - } -} -//______________________________________________________________________________________________________ -// Función: Actualizar -// -// Descripción: -// Actualiza los datos de un ordenador como si volviera a solicitar la entrada -// en el sistema al servidor de administración -// Parámetros: -// ptrTrama: contenido del mensajede -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN Actualizar(TRAMA* ptrTrama) -{ - char msglog[LONSTD]; // Mensaje de log - char *cfg; // Cadena de datos de configuración - int lon; // Longitud de cadena - char modulo[] = "Actualizar()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - muestraMensaje(1,NULL); - if(!comandosPendientes(ptrTrama)){ - errorLog(modulo,84,FALSE); - return(FALSE); - } - - cfg=LeeConfiguracion(); - herror=0; - if(!cfg){ // No se puede recuperar la configuración del cliente - errorLog(modulo,36,FALSE); - herror=3; - } - // Envia Configuracion al servidor - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Configurar"); - lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuración de los Sistemas Operativos del cliente - respuestaEjecucionComando(ptrTrama,herror,0); - - muestraMenu(); - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: Purgar -// -// Descripción: -// Detiene la ejecución del browser -// Parámetros: -// ptrTrama: contenido del mensajede -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -int Purgar(TRAMA* ptrTrama) -{ - int resul=0; - char modulo[] = "Purgar()"; - - if(pidbrowser>0) - kill(pidbrowser,SIGQUIT); // Destruye el proceso hijo anterior y se queda sólo el actual - - if(pidbash>0) - kill(pidbash,SIGQUIT); // Destruye el proceso hijo del proceso bash si existiera una conmutación - - sprintf(interface,"/opt/opengnsys/bin/bash"); - if((pidbash=fork())==0){ - /* Proceso hijo que ejecuta el script */ - resul=execv(interface,NULL); - exit(resul); - } - else { - if (pidbash ==-1){ - scriptLog(modulo,10); - resul=13; - scriptLog(modulo,resul); - return(resul); - } - } - exit(EXIT_SUCCESS); -} -//______________________________________________________________________________________________________ -// Función: Sondeo -// -// Descripción: -// Envía al servidor una confirmación de que está dentro del sistema -// Parámetros: -// ptrTrama: contenido del mensajede -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN Sondeo(TRAMA* ptrTrama) -{ - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: ConsolaRemota -// -// Descripción: -// Ejecuta un comando de la Shell y envia el eco al servidor (Consola remota) -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN ConsolaRemota(TRAMA* ptrTrama) -{ - SOCKET socket_c; - char *nfn,*scp,*aux,ecosrc[LONPRM],ecodst[LONPRM],msglog[LONSTD];; - char modulo[] = "ConsolaRemota()"; - - /* Nombre del archivo de script */ - char filescript[LONPRM]; - sprintf(filescript,"/tmp/_script_%s",IPlocal); - - aux=copiaParametro("scp",ptrTrama); - scp=URLDecode(aux); - escribeArchivo(filescript,scp); - liberaMemoria(aux); - liberaMemoria(scp); - - nfn=copiaParametro("nfn",ptrTrama); - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(ecosrc,"/tmp/_econsola_%s",IPlocal); - sprintf(parametros,"%s %s %s",nfn,filescript,ecosrc); - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - } - else{ - /* Envía fichero de inventario al servidor */ - sprintf(ecodst,"/tmp/_Seconsola_%s",IPlocal); // Nombre que tendra el archivo en el Servidor - initParametros(ptrTrama,0); - sprintf(ptrTrama->parametros,"nfn=recibeArchivo\rnfl=%s\r",ecodst); - if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_COMANDO)){ - errorLog(modulo,42,FALSE); - return(FALSE); - } - /* Espera señal para comenzar el envío */ - liberaMemoria(ptrTrama); - recibeFlag(&socket_c,ptrTrama); - /* Envía archivo */ - if(!sendArchivo(&socket_c,ecosrc)){ - errorLog(modulo,57, FALSE); - herror=12; // Error de envío de fichero por la red - } - close(socket_c); - } - liberaMemoria(nfn); - return(TRUE); -} -//_____________________________________________________________________________________________________ -// Función: Comando -// -// Descripción: -// COmando personalizado enviado desde el servidor -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//_____________________________________________________________________________________________________ -BOOLEAN Comando(TRAMA* ptrTrama) -{ - int lon; - char *ids,*nfn,msglog[LONSTD]; - char modulo[] = "Comando()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - - sprintf(interface,"%s/%s",pathinterface,nfn); - herror=interfaceAdmin(interface,NULL,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - } - /* Envia respuesta de ejecucución del comando */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=RESPUESTA_%s\r",nfn); - respuestaEjecucionComando(ptrTrama,herror,ids); - liberaMemoria(nfn); - liberaMemoria(ids); - return(TRUE); -} -//_____________________________________________________________________________________________________ -// Función: Arrancar -// -// Descripción: -// Responde a un comando de encendido por la red -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//_____________________________________________________________________________________________________ -BOOLEAN Arrancar(TRAMA* ptrTrama) -{ - int lon; - char *ids,msglog[LONSTD]; - char modulo[] = "Arrancar()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - - ids=copiaParametro("ids",ptrTrama); - - /* Envia respuesta de ejecucución del script */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Arrancar"); - lon+=sprintf(ptrTrama->parametros+lon,"tpc=%s\r",CLIENTE_OPENGNSYS); - respuestaEjecucionComando(ptrTrama,0,ids); - liberaMemoria(ids); - return(TRUE); -} -//_____________________________________________________________________________________________________ -// Función: Apagar -// -// Descripción: -// Apaga el cliente -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//_____________________________________________________________________________________________________ -BOOLEAN Apagar(TRAMA* ptrTrama) -{ - int lon; - char *ids,*nfn,msglog[LONSTD]; - char modulo[] = "Apagar()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Apagar"); - respuestaEjecucionComando(ptrTrama,0,ids); - - sprintf(interface,"%s/%s",pathinterface,nfn); - herror=interfaceAdmin(interface,NULL,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - liberaMemoria(nfn); - liberaMemoria(ids); - errorInfo(modulo,msglog); - return(FALSE); - } - liberaMemoria(nfn); - liberaMemoria(ids); - return(TRUE); -} -//_____________________________________________________________________________________________________ -// Función: Reiniciar -// -// Descripción: -// Apaga el cliente -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//_____________________________________________________________________________________________________ -BOOLEAN Reiniciar(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*ids,msglog[LONSTD]; - char modulo[] = "Reiniciar()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Reiniciar"); - respuestaEjecucionComando(ptrTrama,0,ids); - - sprintf(interface,"%s/%s",pathinterface,nfn); - herror=interfaceAdmin(interface,NULL,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - liberaMemoria(nfn); - liberaMemoria(ids); - errorInfo(modulo,msglog); - return(FALSE); - } - liberaMemoria(nfn); - liberaMemoria(ids); - return(TRUE); -} -//_____________________________________________________________________________________________________ -// Función: IniciarSesion -// -// Descripción: -// Inicia sesión en el Sistema Operativo de una de las particiones -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//_____________________________________________________________________________________________________ -BOOLEAN IniciarSesion(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*ids,*disk,*par,msglog[LONSTD]; - char modulo[] = "IniciarSesion()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - disk=copiaParametro("dsk",ptrTrama); - par=copiaParametro("par",ptrTrama); - - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_IniciarSesion"); - respuestaEjecucionComando(ptrTrama,0,ids); - liberaMemoria(ids); - - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s %s",nfn,disk,par); - liberaMemoria(par); - - herror=interfaceAdmin(interface,parametros,NULL); - - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - liberaMemoria(nfn); - errorInfo(modulo,msglog); - return(FALSE); - } - liberaMemoria(nfn); - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: CrearImagen -// -// Descripción: -// Crea una imagen de una partición -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN CrearImagen(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*dsk,*par,*cpt,*idi,*ipr,*nci,*ids,msglog[LONSTD]; - char modulo[] = "CrearImagen()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - - dsk=copiaParametro("dsk",ptrTrama); // Disco - par=copiaParametro("par",ptrTrama); // Número de partición - cpt=copiaParametro("cpt",ptrTrama); // Código de la partición - idi=copiaParametro("idi",ptrTrama); // Identificador de la imagen - nci=copiaParametro("nci",ptrTrama); // Nombre canónico de la imagen - ipr=copiaParametro("ipr",ptrTrama); // Ip del repositorio - - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - muestraMensaje(7,NULL); - - if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente - muestraMensaje(2,NULL); - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s %s %s %s",nfn,dsk,par,nci,ipr); - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(10,NULL); - } - else - muestraMensaje(9,NULL); - } - else{ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - } - - /* Envia respuesta de ejecución de la función de interface */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_CrearImagen"); - lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen - lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición de donde se creó - lon+=sprintf(ptrTrama->parametros+lon,"cpt=%s\r",cpt); // Tipo o código de partición - lon+=sprintf(ptrTrama->parametros+lon,"ipr=%s\r",ipr); // Ip del repositorio donde se alojó - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(dsk); - liberaMemoria(par); - liberaMemoria(cpt); - liberaMemoria(idi); - liberaMemoria(nci); - liberaMemoria(ipr); - liberaMemoria(nfn); - liberaMemoria(ids); - - muestraMenu(); - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: CrearImagenBasica -// -// Descripción: -// Crea una imagen básica a traverś dela sincronización -// Parámetros: -// ptrTrama: contenido del mensaje -// -// FDevuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN CrearImagenBasica(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*dsk,*par,*cpt,*idi,*nci,*rti,*ipr,*msy,*whl,*eli,*cmp,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD]; - char modulo[] = "CrearImagenBasica()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - nfn=copiaParametro("nfn",ptrTrama); - dsk=copiaParametro("dsk",ptrTrama); // Disco - par=copiaParametro("par",ptrTrama); // Número de partición - cpt=copiaParametro("cpt",ptrTrama); // Tipo de partición - idi=copiaParametro("idi",ptrTrama); // Identificador de la imagen - nci=copiaParametro("nci",ptrTrama); // Nombre canónico de la imagen - rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen - ipr=copiaParametro("ipr",ptrTrama); // Ip del repositorio - - msy=copiaParametro("msy",ptrTrama); // Método de sincronización - - whl=copiaParametro("whl",ptrTrama); // Envío del fichero completo si hay diferencias - eli=copiaParametro("eli",ptrTrama); // Elimiar archivos en destino que no estén en origen - cmp=copiaParametro("cmp",ptrTrama); // Comprimir antes de enviar - - bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla - cpc=copiaParametro("cpc",ptrTrama); // Copiar también imagen a la cache - bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella - nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino - - //muestraMensaje(7,NULL); // Creando Inventario Software - //if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente - muestraMensaje(30,NULL);// Creando Imagen Básica, por favor espere... - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s %s %s %s %s%s%s %s%s%s%s %s %s",nfn,dsk,par,nci,ipr,whl,eli,cmp,bpi,cpc,bpc,nba,msy,rti); - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(29,NULL);// Ha habido algún error en el proceso de creación de imagen básica - } - else - muestraMensaje(28,NULL);// El proceso de creación de imagen básica ha terminado correctamente - //} - //else{ - // sprintf(msglog,"%s:%s",tbErrores[86],nfn); - // errorInfo(modulo,msglog); - //} - - ids=copiaParametro("ids",ptrTrama); // Identificador de la sesión - - /* Envia respuesta de ejecución de la función de interface */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_CrearImagenBasica"); - lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen - lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición de donde se creó - lon+=sprintf(ptrTrama->parametros+lon,"cpt=%s\r",cpt); // Tipo o código de partición - lon+=sprintf(ptrTrama->parametros+lon,"ipr=%s\r",ipr); // Ip del repositorio donde se alojó - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(nfn); - liberaMemoria(dsk); - liberaMemoria(par); - liberaMemoria(cpt); - liberaMemoria(idi); - liberaMemoria(nci); - liberaMemoria(rti); - liberaMemoria(ipr); - - liberaMemoria(msy); - - liberaMemoria(whl); - liberaMemoria(eli); - liberaMemoria(cmp); - - liberaMemoria(bpi); - liberaMemoria(cpc); - liberaMemoria(bpc); - liberaMemoria(nba); - liberaMemoria(ids); - - muestraMenu(); - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: CrearSoftIncremental -// -// Descripción: -// Crea una software incremental comparando una partición con una imagen básica -// Parámetros: -// ptrTrama: contenido del mensaje -// -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN CrearSoftIncremental(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*dsk,*par,*idi,*idf,*ipr,*nci,*rti,*ncf,*whl,*eli,*cmp,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD]; - char modulo[] = "CrearSoftIncremental()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - nfn=copiaParametro("nfn",ptrTrama); - - dsk=copiaParametro("dsk",ptrTrama); // Disco - par=copiaParametro("par",ptrTrama); // Número de partición - idi=copiaParametro("idi",ptrTrama); // Identificador de la imagen - nci=copiaParametro("nci",ptrTrama); // Nombre canónico de la imagen - rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen - ipr=copiaParametro("ipr",ptrTrama); // Ip del repositorio - idf=copiaParametro("idf",ptrTrama); // Identificador de la imagen diferencial - ncf=copiaParametro("ncf",ptrTrama); // Nombre canónico de la imagen diferencial - - whl=copiaParametro("whl",ptrTrama); // Envío del fichero completo si hay diferencias - eli=copiaParametro("eli",ptrTrama); // Elimiar archivos en destino que no estén en origen - cmp=copiaParametro("cmp",ptrTrama); // Comprimir antes de enviar - - bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla - cpc=copiaParametro("cpc",ptrTrama); // Copiar también imagen a la cache - bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella - nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino - -// muestraMensaje(7,NULL); // Creando Inventario Software -// if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente - muestraMensaje(25,NULL);// Creando Imagen Incremental, por favor espere... - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s %s %s %s %s %s%s%s %s%s%s%s %s",nfn,dsk,par,nci,ipr,ncf,whl,eli,cmp,bpi,cpc,bpc,nba,rti); - - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(27,NULL);// Ha habido algún error en el proceso de creación de imagen básica - } - else - muestraMensaje(26,NULL);// El proceso de creación de imagen básica ha terminado correctamente -// } -// else{ -// sprintf(msglog,"%s:%s",tbErrores[86],nfn); -// errorInfo(modulo,msglog); -// } - - ids=copiaParametro("ids",ptrTrama); // Identificador de la sesión - - /* Envia respuesta de ejecución de la función de interface */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_CrearSoftIncremental"); - lon+=sprintf(ptrTrama->parametros+lon,"idf=%s\r",idf); // Identificador de la imagen incremental - lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(nfn); - liberaMemoria(dsk); - liberaMemoria(par); - liberaMemoria(idi); - liberaMemoria(nci); - liberaMemoria(rti); - liberaMemoria(ipr); - liberaMemoria(idf); - liberaMemoria(ncf); - liberaMemoria(whl); - liberaMemoria(eli); - liberaMemoria(cmp); - liberaMemoria(bpi); - liberaMemoria(cpc); - liberaMemoria(bpc); - liberaMemoria(nba); - liberaMemoria(ids); - - muestraMenu(); - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: RestaurarImagen -// -// Descripción: -// Restaura una imagen en una partición -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En bpccaso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN RestaurarImagen(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*dsk,*par,*idi,*ipr,*ifs,*nci,*ids,*ptc,msglog[LONSTD]; - char modulo[] = "RestaurarImagen()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - - dsk=copiaParametro("dsk",ptrTrama); - par=copiaParametro("par",ptrTrama); - idi=copiaParametro("idi",ptrTrama); - ipr=copiaParametro("ipr",ptrTrama); - nci=copiaParametro("nci",ptrTrama); - ifs=copiaParametro("ifs",ptrTrama); - ptc=copiaParametro("ptc",ptrTrama); - - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - muestraMensaje(3,NULL); - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s %s %s %s %s",nfn,dsk,par,nci,ipr,ptc); - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(12,NULL); - } - else - muestraMensaje(11,NULL); - - - /* Envia respuesta de ejecución de la función de interface */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_RestaurarImagen"); - lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen - lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición - lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(nfn); - liberaMemoria(dsk); - liberaMemoria(par); - liberaMemoria(idi); - liberaMemoria(nci); - liberaMemoria(ipr); - liberaMemoria(ifs); - liberaMemoria(ptc); - liberaMemoria(ids); - - muestraMenu(); - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: RestaurarImagenBasica -// -// Descripción: -// Restaura una imagen básica en una partición -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN RestaurarImagenBasica(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*dsk,*par,*idi,*ipr,*met,*nci,*rti,*ifs,*whl,*eli,*cmp,*tpt,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD]; - char modulo[] = "RestaurarImagenBasica()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - dsk=copiaParametro("dsk",ptrTrama); - par=copiaParametro("par",ptrTrama); - idi=copiaParametro("idi",ptrTrama); - ipr=copiaParametro("ipr",ptrTrama); - met=copiaParametro("met",ptrTrama); // Método de clonación 0= desde caché 1= desde repositorio - nci=copiaParametro("nci",ptrTrama); - rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen - ifs=copiaParametro("ifs",ptrTrama); - - tpt=copiaParametro("tpt",ptrTrama); // Tipo de trasnmisión unicast o multicast - - whl=copiaParametro("whl",ptrTrama); // Envío del fichero completo si hay diferencias - eli=copiaParametro("eli",ptrTrama); // Elimiar archivos en destino que no estén en origen - cmp=copiaParametro("cmp",ptrTrama); // Comprimir antes de enviar - - - - bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla - cpc=copiaParametro("cpc",ptrTrama); // Copiar también imagen a la cache - bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella - nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino - - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - muestraMensaje(31,NULL); - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s %s %s %s %s %s%s%s %s%s%s%s %s %s",nfn,dsk,par,nci,ipr,tpt,whl,eli,cmp,bpi,cpc,bpc,nba,met,rti); - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(33,NULL); - } - else - muestraMensaje(32,NULL); - - /* Envia respuesta de ejecución de la función de interface */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_RestaurarImagenBasica"); - lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen - lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición - lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(nfn); - liberaMemoria(dsk); - liberaMemoria(par); - liberaMemoria(idi); - liberaMemoria(nci); - liberaMemoria(rti); - liberaMemoria(ifs); - liberaMemoria(ipr); - liberaMemoria(met); - - liberaMemoria(tpt); - - liberaMemoria(whl); - liberaMemoria(eli); - liberaMemoria(cmp); - - liberaMemoria(bpi); - liberaMemoria(cpc); - liberaMemoria(bpc); - liberaMemoria(nba); - liberaMemoria(ids); - - muestraMenu(); - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: RestaurarSoftIncremental -// -// Descripción: -// Restaura software incremental en una partición -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN RestaurarSoftIncremental(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*dsk,*par,*idi,*ipr,*met,*ifs,*nci,*rti,*idf,*ncf,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD]; - char modulo[] = "RestaurarSoftIncremental()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - dsk=copiaParametro("dsk",ptrTrama); - par=copiaParametro("par",ptrTrama); - idi=copiaParametro("idi",ptrTrama); - idf=copiaParametro("idf",ptrTrama); - ipr=copiaParametro("ipr",ptrTrama); - met=copiaParametro("met",ptrTrama); // Método de clonación 0= desde caché 1= desde repositorio - ifs=copiaParametro("ifs",ptrTrama); - nci=copiaParametro("nci",ptrTrama); - rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen - ncf=copiaParametro("ncf",ptrTrama); - bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla - cpc=copiaParametro("cpc",ptrTrama); // Copiar también imagen a la cache - bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella - nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino - - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - muestraMensaje(31,NULL); - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s %s %s %s %s %s%s%s%s %s %s",nfn,dsk,par,nci,ipr,ncf,bpi,cpc,bpc,nba,met,rti); - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(35,NULL); - } - else - muestraMensaje(34,NULL); - - /* Envia respuesta de ejecución de la función de interface */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_RestaurarSoftIncremental"); - lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idf); // Identificador de la imagen incremental (Forzada a idi) - lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Número de partición - lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software - - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(nfn); - liberaMemoria(dsk); - liberaMemoria(par); - liberaMemoria(idi); - liberaMemoria(idf); - liberaMemoria(nci); - liberaMemoria(rti); - liberaMemoria(ncf); - liberaMemoria(ifs); - liberaMemoria(ipr); - liberaMemoria(met); - liberaMemoria(bpi); - liberaMemoria(cpc); - liberaMemoria(bpc); - liberaMemoria(nba); - liberaMemoria(ids); - - muestraMenu(); - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: Configurar -// -// Descripción: -// Configura la tabla de particiones y formatea -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN Configurar(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*dsk,*cfg,*ids,msglog[LONSTD]; - char modulo[] = "Configurar()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - - dsk=copiaParametro("dsk",ptrTrama); - cfg=copiaParametro("cfg",ptrTrama); - /* Sustituir caracteres */ - sustituir(cfg,'\n','$'); - sustituir(cfg,'\t','#'); - - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - muestraMensaje(4,NULL); - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s %s",nfn,dsk,cfg); - - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(13,NULL); - } - else - muestraMensaje(14,NULL); - - cfg=LeeConfiguracion(); - if(!cfg){ // No se puede recuperar la configuración del cliente - errorLog(modulo,36,FALSE); - return(FALSE); - } - - /* Envia respuesta de ejecución del comando*/ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Configurar"); - lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuración de los Sistemas Operativos del cliente - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(dsk); - liberaMemoria(cfg); - liberaMemoria(nfn); - liberaMemoria(ids); - - muestraMenu(); - - return(TRUE); -} -// ________________________________________________________________________________________________________ -// Función: InventarioHardware -// -// Descripción: -// Envia al servidor el nombre del archivo de inventario de su hardware para posteriormente -// esperar que éste lo solicite y enviarlo por la red. -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN InventarioHardware(TRAMA* ptrTrama) -{ - int lon; - SOCKET socket_c; - char *nfn,*ids,msglog[LONSTD],hrdsrc[LONPRM],hrddst[LONPRM]; - char modulo[] = "InventarioHardware()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - muestraMensaje(6,NULL); - - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(hrdsrc,"/tmp/Chrd-%s",IPlocal); // Nombre que tendra el archivo de inventario - sprintf(parametros,"%s %s",nfn,hrdsrc); - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(18,NULL); - } - else{ - /* Envía fichero de inventario al servidor */ - sprintf(hrddst,"/tmp/Shrd-%s",IPlocal); // Nombre que tendra el archivo en el Servidor - initParametros(ptrTrama,0); - sprintf(ptrTrama->parametros,"nfn=recibeArchivo\rnfl=%s\r",hrddst); - if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_COMANDO)){ - liberaMemoria(nfn); - liberaMemoria(ids); - errorLog(modulo,42,FALSE); - return(FALSE); - } - /* Espera señal para comenzar el envío */ - liberaMemoria(ptrTrama); - recibeFlag(&socket_c,ptrTrama); - /* Envía archivo */ - if(!sendArchivo(&socket_c,hrdsrc)){ - errorLog(modulo,57, FALSE); - herror=12; // Error de envío de fichero por la red - } - close(socket_c); - muestraMensaje(17,NULL); - } - - /* Envia respuesta de ejecución de la función de interface */ - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_InventarioHardware"); - lon+=sprintf(ptrTrama->parametros+lon,"hrd=%s\r",hrddst); - respuestaEjecucionComando(ptrTrama,herror,ids); - liberaMemoria(nfn); - liberaMemoria(ids); - - muestraMenu(); - - return(TRUE); -} -// ________________________________________________________________________________________________________ -// Función: InventarioSoftware -// -// Descripción: -// Crea el inventario software de un sistema operativo instalado en una partición. -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN InventarioSoftware(TRAMA* ptrTrama) -{ - char *nfn,*ids,msglog[LONSTD]; - char modulo[] = "InventarioSoftware()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - nfn=copiaParametro("nfn",ptrTrama); - ids=copiaParametro("ids",ptrTrama); - muestraMensaje(7,NULL); - InventariandoSoftware(ptrTrama,TRUE,nfn); - respuestaEjecucionComando(ptrTrama,herror,ids); - liberaMemoria(nfn); - liberaMemoria(ids); - muestraMenu(); - return(TRUE); -} -// ________________________________________________________________________________________________________ -// -// Función: InventariandoSoftware -// -// Descripción: -// Envia al servidor el nombre del archivo de inventario de su software para posteriormente -// esperar que éste lo solicite y enviarlo por la red. -// Parámetros: -// ptrTrama: contenido del mensaje -// sw: switch que indica si la función es llamada por el comando InventarioSoftware(true) o CrearImagen(false) -// nfn: Nombre de la función del Interface que implementa el comando -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN InventariandoSoftware(TRAMA* ptrTrama,BOOLEAN sw,char *nfn) -{ - int lon; - SOCKET socket_c; - char *dsk,*par,msglog[LONSTD],sftsrc[LONPRM],sftdst[LONPRM]; - char modulo[] = "InventariandoSoftware()"; - - dsk=copiaParametro("dsk",ptrTrama); // Disco - par=copiaParametro("par",ptrTrama); - - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(sftsrc,"/tmp/CSft-%s-%s",IPlocal,par); // Nombre que tendra el archivo de inventario - sprintf(parametros,"%s %s %s %s",nfn,dsk,par,sftsrc); - - herror=interfaceAdmin(interface,parametros,NULL); - herror=0; - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(20,NULL); - } - else{ - /* Envía fichero de inventario al servidor */ - sprintf(sftdst,"/tmp/Ssft-%s-%s",IPlocal,par); // Nombre que tendra el archivo en el Servidor - initParametros(ptrTrama,0); - - sprintf(ptrTrama->parametros,"nfn=recibeArchivo\rnfl=%s\r",sftdst); - if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_COMANDO)){ - errorLog(modulo,42,FALSE); - liberaMemoria(dsk); - liberaMemoria(par); - return(FALSE); - } - /* Espera señal para comenzar el envío */ - liberaMemoria(ptrTrama); - if(!recibeFlag(&socket_c,ptrTrama)){ - errorLog(modulo,17,FALSE); - } - /* Envía archivo */ - if(!sendArchivo(&socket_c,sftsrc)){ - errorLog(modulo,57, FALSE); - herror=12; // Error de envío de fichero por la red - } - close(socket_c); - muestraMensaje(19,NULL); - } - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_InventarioSoftware"); - lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); - lon+=sprintf(ptrTrama->parametros+lon,"sft=%s\r",sftdst); - if(!sw) - respuestaEjecucionComando(ptrTrama,herror,"0"); - - liberaMemoria(dsk); - liberaMemoria(par); - return(TRUE); -} -// ________________________________________________________________________________________________________ -// Función: EjecutarScript -// -// Descripción: -// Ejecuta código de script -// Parámetros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//______________________________________________________________________________________________________ -BOOLEAN EjecutarScript(TRAMA* ptrTrama) -{ - int lon; - char *nfn,*aux,*ids,*scp,*cfg,msglog[LONSTD]; - char modulo[] = "EjecutarScript()"; - - if (ndebug>=DEBUG_MAXIMO) { - sprintf(msglog, "%s:%s",tbMensajes[21],modulo); - infoDebug(msglog); - } - aux=copiaParametro("scp",ptrTrama); - scp=URLDecode(aux); - muestraMensaje(8,NULL); - /* Nombre del archivo de script */ - char filescript[LONPRM]; - sprintf(filescript,"/tmp/_script_%s",IPlocal); - escribeArchivo(filescript,scp); - nfn=copiaParametro("nfn",ptrTrama); - sprintf(interface,"%s/%s",pathinterface,nfn); - sprintf(parametros,"%s %s",nfn,filescript); - herror=interfaceAdmin(interface,parametros,NULL); - if(herror){ - sprintf(msglog,"%s:%s",tbErrores[86],nfn); - errorInfo(modulo,msglog); - muestraMensaje(21,NULL); - } - else - muestraMensaje(22,NULL); - - // Toma configuración de particiones - cfg=LeeConfiguracion(); - if(!cfg){ // No se puede recuperar la configuración del cliente - errorLog(modulo,36,FALSE); - herror=36; - } - - ids=copiaParametro("ids",ptrTrama); - - //herror=ejecutarCodigoBash(scp); - initParametros(ptrTrama,0); - lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_EjecutarScript"); - lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuración de los Sistemas Operativos del cliente - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(nfn); - liberaMemoria(ids); - liberaMemoria(aux); - liberaMemoria(scp); - liberaMemoria(cfg); - - muestraMenu(); - - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: respuestaEjecucionComando -// -// Descripción: -// Envia una respuesta a una ejecucion de comando al servidor de Administración -// Parámetros: -// - ptrTrama: contenido del mensaje -// - res: Resultado de la ejecución (Código de error devuelto por el script ejecutado) -// - ids: Identificador de la sesion (En caso de no haber seguimiento es NULO) -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN respuestaEjecucionComando(TRAMA* ptrTrama,int res,char *ids) -{ - int lon; - SOCKET socket_c; - char modulo[] = "respuestaEjecucionComando()"; - - lon=strlen(ptrTrama->parametros); - if(ids){ // Existe seguimiento - lon+=sprintf(ptrTrama->parametros+lon,"ids=%s\r",ids); // Añade identificador de la sesión - } - if (res==0){ // Resultado satisfactorio - lon+=sprintf(ptrTrama->parametros+lon,"res=%s\r","1"); - lon+=sprintf(ptrTrama->parametros+lon,"der=%s\r",""); - } - else{ // Algún error - lon+=sprintf(ptrTrama->parametros+lon,"res=%s\r","2"); - if(res>MAXERRORSCRIPT) - lon+=sprintf(ptrTrama->parametros+lon,"der=%s (Error de script:%d)\r",tbErroresScripts[0],res);// Descripción del error - else - lon+=sprintf(ptrTrama->parametros+lon,"der=%s\r",tbErroresScripts[res]);// Descripción del error - } - if(!(enviaMensajeServidor(&socket_c,ptrTrama,MSG_NOTIFICACION))){ - errorLog(modulo,44,FALSE); - return(FALSE); - } - - close(socket_c); - return(TRUE); -} -// ________________________________________________________________________________________________________ -// Función: gestionaTrama -// -// Descripción: -// Procesa las tramas recibidas. -// Parametros: -// ptrTrama: contenido del mensaje -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN gestionaTrama(TRAMA *ptrTrama) -{ - int i, res; - char *nfn; - char modulo[] = "gestionaTrama()"; - - INTROaFINCAD(ptrTrama); - nfn = copiaParametro("nfn", ptrTrama); // Toma nombre de función - for (i = 0; i < MAXIMAS_FUNCIONES; i++) { // Recorre funciones que procesan las tramas - res = strcmp(tbfuncionesClient[i].nf, nfn); - if (res == 0) { // Encontrada la función que procesa el mensaje - liberaMemoria(nfn); - return(tbfuncionesClient[i].fptr(ptrTrama)); // Invoca la función - } - } - - liberaMemoria(nfn); - - /* Sólo puede ser un comando personalizado - if (ptrTrama->tipo==MSG_COMANDO) - return(Comando(ptrTrama)); - */ - errorLog(modulo, 18, FALSE); - return (FALSE); -} -//________________________________________________________________________________________________________ -// Función: ejecutaArchivo -// -// Descripción: -// Ejecuta los comando contenido en un archivo (cada comando y sus parametros separados por un -// salto de linea. -// Parámetros: -// filecmd: Nombre del archivo de comandos -// ptrTrama: Puntero a una estructura TRAMA usada en las comunicaciones por red (No debe ser NULL) -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -//________________________________________________________________________________________________________ -BOOLEAN ejecutaArchivo(char* filecmd,TRAMA *ptrTrama) -{ - char* buffer,*lineas[MAXIMAS_LINEAS]; - int i,numlin; - char modulo[] = "ejecutaArchivo()"; - - buffer=leeArchivo(filecmd); - if(buffer){ - numlin = splitCadena(lineas, buffer, '@'); - initParametros(ptrTrama,0); - for (i = 0; i < numlin; i++) { - if(strlen(lineas[i])>0){ - strcpy(ptrTrama->parametros,lineas[i]); - strcat(ptrTrama->parametros,"\rMCDJ@"); // Fin de trama - if(!gestionaTrama(ptrTrama)){ // Análisis de la trama - errorLog(modulo,39,FALSE); - //return(FALSE); - } - } - } - } - liberaMemoria(buffer); - return(TRUE); -} -//______________________________________________________________________________________________________ -// Función: enviaMensajeServidor -// -// Descripción: -// Envia un mensaje al servidor de Administración -// Parámetros: -// - socket_c: (Salida) Socket utilizado para el envío -// - ptrTrama: contenido del mensaje -// - tipo: Tipo de mensaje -// C=Comando, N=Respuesta a un comando, P=Peticion,R=Respuesta a una petición, I=Informacion -// Devuelve: -// TRUE: Si el proceso es correcto -// FALSE: En caso de ocurrir algún error -// ________________________________________________________________________________________________________ -BOOLEAN enviaMensajeServidor(SOCKET *socket_c,TRAMA *ptrTrama,char tipo) -{ - int lon; - char modulo[] = "enviaMensajeServidor()"; - - *socket_c=abreConexion(); - if(*socket_c==INVALID_SOCKET){ - errorLog(modulo,38,FALSE); // Error de conexión con el servidor - return(FALSE); - } - ptrTrama->arroba='@'; // Cabecera de la trama - strncpy(ptrTrama->identificador,"JMMLCAMDJ_MCDJ",14); // identificador de la trama - ptrTrama->tipo=tipo; // Tipo de mensaje - lon=strlen(ptrTrama->parametros); // Compone la trama - lon+=sprintf(ptrTrama->parametros+lon,"iph=%s\r",IPlocal); // Ip del ordenador - lon+=sprintf(ptrTrama->parametros+lon,"ido=%s\r",idordenador); // Identificador del ordenador - lon+=sprintf(ptrTrama->parametros+lon,"npc=%s\r",nombreordenador); // Nombre del ordenador - lon+=sprintf(ptrTrama->parametros+lon,"idc=%s\r",idcentro); // Identificador del centro - lon+=sprintf(ptrTrama->parametros+lon,"ida=%s\r",idaula); // Identificador del aula - - if (!mandaTrama(socket_c,ptrTrama)) { - errorLog(modulo,26,FALSE); - return (FALSE); - } - return(TRUE); -} -// ******************************************************************************************************** -// PROGRAMA PRINCIPAL (CLIENTE) -// ******************************************************************************************************** -int main(int argc, char *argv[]) -{ - TRAMA *ptrTrama; - char modulo[] = "main()"; - - ptrTrama=(TRAMA *)reservaMemoria(sizeof(TRAMA)); - if (ptrTrama == NULL) { // No hay memoria suficiente para el bufer de las tramas - errorLog(modulo, 3, FALSE); - exit(EXIT_FAILURE); - } - /*-------------------------------------------------------------------------------------------------------- - Validación de parámetros de ejecución y fichero de configuración - ---------------------------------------------------------------------------------------------------------*/ - if (!validacionParametros(argc, argv,3)) // Valida parámetros de ejecución - exit(EXIT_FAILURE); - - if (!tomaConfiguracion(szPathFileCfg)) // Toma parametros de configuración - exit(EXIT_FAILURE); - /*-------------------------------------------------------------------------------------------------------- - Carga catálogo de funciones que procesan las tramas - ---------------------------------------------------------------------------------------------------------*/ - int cf = 0; - - strcpy(tbfuncionesClient[cf].nf, "RESPUESTA_AutoexecCliente"); - tbfuncionesClient[cf++].fptr = &RESPUESTA_AutoexecCliente; - - strcpy(tbfuncionesClient[cf].nf, "RESPUESTA_InclusionCliente"); - tbfuncionesClient[cf++].fptr = &RESPUESTA_InclusionCliente; - - strcpy(tbfuncionesClient[cf].nf, "NoComandosPtes"); - tbfuncionesClient[cf++].fptr = &NoComandosPtes; - - strcpy(tbfuncionesClient[cf].nf, "Actualizar"); - tbfuncionesClient[cf++].fptr = &Actualizar; - - strcpy(tbfuncionesClient[cf].nf, "Purgar"); - tbfuncionesClient[cf++].fptr = &Purgar; - - strcpy(tbfuncionesClient[cf].nf, "ConsolaRemota"); - tbfuncionesClient[cf++].fptr = &ConsolaRemota; - - strcpy(tbfuncionesClient[cf].nf, "Sondeo"); - tbfuncionesClient[cf++].fptr = &Sondeo; - - strcpy(tbfuncionesClient[cf].nf, "Arrancar"); - tbfuncionesClient[cf++].fptr = &Arrancar; - - strcpy(tbfuncionesClient[cf].nf, "Apagar"); - tbfuncionesClient[cf++].fptr = &Apagar; - - strcpy(tbfuncionesClient[cf].nf, "Reiniciar"); - tbfuncionesClient[cf++].fptr = &Reiniciar; - - strcpy(tbfuncionesClient[cf].nf, "IniciarSesion"); - tbfuncionesClient[cf++].fptr = &IniciarSesion; - - strcpy(tbfuncionesClient[cf].nf, "CrearImagen"); - tbfuncionesClient[cf++].fptr = &CrearImagen; - - strcpy(tbfuncionesClient[cf].nf, "CrearImagenBasica"); - tbfuncionesClient[cf++].fptr = &CrearImagenBasica; - - strcpy(tbfuncionesClient[cf].nf, "CrearSoftIncremental"); - tbfuncionesClient[cf++].fptr = &CrearSoftIncremental; - - strcpy(tbfuncionesClient[cf].nf, "RestaurarImagen"); - tbfuncionesClient[cf++].fptr = &RestaurarImagen; - - strcpy(tbfuncionesClient[cf].nf, "RestaurarImagenBasica"); - tbfuncionesClient[cf++].fptr = &RestaurarImagenBasica; - - strcpy(tbfuncionesClient[cf].nf, "RestaurarSoftIncremental"); - tbfuncionesClient[cf++].fptr = &RestaurarSoftIncremental; - - - strcpy(tbfuncionesClient[cf].nf, "Configurar"); - tbfuncionesClient[cf++].fptr = &Configurar; - - strcpy(tbfuncionesClient[cf].nf, "EjecutarScript"); - tbfuncionesClient[cf++].fptr = &EjecutarScript; - - strcpy(tbfuncionesClient[cf].nf, "InventarioHardware"); - tbfuncionesClient[cf++].fptr = &InventarioHardware; - - strcpy(tbfuncionesClient[cf].nf, "InventarioSoftware"); - tbfuncionesClient[cf++].fptr = &InventarioSoftware; - - /*-------------------------------------------------------------------------------------------------------- - Toma dirección IP del cliente - ---------------------------------------------------------------------------------------------------------*/ - if(!tomaIPlocal()){ // Error al recuperar la IP local - errorLog(modulo,0,FALSE); - exit(EXIT_FAILURE); - } - /*-------------------------------------------------------------------------------------------------------- - Inicio de sesión - ---------------------------------------------------------------------------------------------------------*/ - infoLog(1); // Inicio de sesión - infoLog(3); // Abriendo sesión en el servidor de Administración; - /*-------------------------------------------------------------------------------------------------------- - Inclusión del cliente en el sistema - ---------------------------------------------------------------------------------------------------------*/ - if(!inclusionCliente(ptrTrama)){ // Ha habido algún problema al abrir sesión - errorLog(modulo,0,FALSE); - exit(EXIT_FAILURE); - } - infoLog(4); // Cliente iniciado - - /*-------------------------------------------------------------------------------------------------------- - Procesamiento de la cache - ---------------------------------------------------------------------------------------------------------*/ - infoLog(23); // Abriendo sesión en el servidor de Administración; - if(!cuestionCache(cache)){ - errorLog(modulo,0,FALSE); - exit(EXIT_FAILURE); - } - /*-------------------------------------------------------------------------------------------------------- - Ejecución del autoexec - ---------------------------------------------------------------------------------------------------------*/ - if(atoi(idproautoexec)>0){ // Ejecución de procedimiento Autoexec - infoLog(5); - if(!autoexecCliente(ptrTrama)){ // Ejecución fichero autoexec - errorLog(modulo,0,FALSE); - exit(EXIT_FAILURE); - } - } - /*-------------------------------------------------------------------------------------------------------- - Comandos pendientes - ---------------------------------------------------------------------------------------------------------*/ - infoLog(6); // Procesa comandos pendientes - if(!comandosPendientes(ptrTrama)){ // Ejecución de acciones pendientes - errorLog(modulo,0,FALSE); - exit(EXIT_FAILURE); - } - infoLog(7); // Acciones pendientes procesadas - /*-------------------------------------------------------------------------------------------------------- - Bucle de recepción de comandos - ---------------------------------------------------------------------------------------------------------*/ - muestraMenu(); - procesaComandos(ptrTrama); // Bucle para procesar comandos interactivos - /*-------------------------------------------------------------------------------------------------------- - Fin de la sesión - ---------------------------------------------------------------------------------------------------------*/ - exit(EXIT_SUCCESS); -} +// ********************************************************************************************************
+// Cliernte: ogAdmClient
+// Autor: Jos Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
+// Fecha Creacin: Marzo-2010
+// Fecha ltima modificacin: Abril-2010
+// Nombre del fichero: ogAdmClient.c
+// Descripcin :Este fichero implementa el cliente general del sistema
+// ********************************************************************************************************
+#include "ogAdmClient.h"
+#include "ogAdmLib.c"
+//________________________________________________________________________________________________________
+// Funcin: tomaConfiguracion
+//
+// Descripcin:
+// Lee el fichero de configuracin del servicio
+// Parmetros:
+// filecfg : Ruta completa al fichero de configuracin
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//________________________________________________________________________________________________________
+BOOLEAN tomaConfiguracion(char* filecfg)
+{
+ char modulo[] = "tomaConfiguracion()";
+
+ if (filecfg == NULL || strlen(filecfg) == 0) {
+ errorLog(modulo, 1, FALSE); // Fichero de configuracin del cliente vaco
+ return (FALSE);
+ }
+ FILE *fcfg;
+ int lSize;
+ char * buffer, *lineas[MAXPRM], *dualparametro[2];
+ int i, numlin, resul;
+
+ fcfg = fopen(filecfg, "rt");
+ if (fcfg == NULL) {
+ errorLog(modulo, 2, FALSE); // No existe fichero de configuracin del cliente
+ return (FALSE);
+ }
+
+ fseek(fcfg, 0, SEEK_END);
+ lSize = ftell(fcfg); // Obtiene tamao del fichero.
+ rewind(fcfg);
+ buffer = (char*) reservaMemoria(lSize+1); // Toma memoria para el buffer de lectura.
+ if (buffer == NULL) { // No hay memoria suficiente para el buffer
+ errorLog(modulo, 3, FALSE);
+ return (FALSE);
+ }
+ lSize=fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero
+ buffer[lSize]=CHARNULL;
+ fclose(fcfg);
+
+ /* Inicializar variables globales */
+ servidoradm[0]=CHARNULL;
+ puerto[0] = CHARNULL;
+ pathinterface[0]=CHARNULL;
+ urlmenu[0]=CHARNULL;
+ urlmsg[0]=CHARNULL;
+
+ numlin = splitCadena(lineas, buffer, '\n');
+ for (i = 0; i < numlin; i++) {
+ splitCadena(dualparametro, lineas[i], '=');
+
+ resul = strcmp(StrToUpper(dualparametro[0]), "SERVIDORADM");
+ if (resul == 0)
+ strcpy(servidoradm, dualparametro[1]);
+
+ resul = strcmp(StrToUpper(dualparametro[0]), "PUERTO");
+ if (resul == 0)
+ strcpy(puerto, dualparametro[1]);
+
+ resul = strcmp(StrToUpper(dualparametro[0]), "PATHINTERFACE");
+ if (resul == 0)
+ strcpy(pathinterface, dualparametro[1]);
+
+ resul = strcmp(StrToUpper(dualparametro[0]), "URLMENU");
+ if (resul == 0)
+ strcpy(urlmenu, dualparametro[1]);
+
+ resul = strcmp(StrToUpper(dualparametro[0]), "URLMSG");
+ if (resul == 0)
+ strcpy(urlmsg, dualparametro[1]);
+ }
+
+ if (servidoradm[0] == CHARNULL) {
+ liberaMemoria(buffer);
+ errorLog(modulo,4, FALSE); // Falta parmetro SERVIDORADM
+ return (FALSE);
+ }
+
+ if (puerto[0] == CHARNULL) {
+ liberaMemoria(buffer);
+ errorLog(modulo,5, FALSE); // Falta parmetro PUERTO
+ return (FALSE);
+ }
+ if (pathinterface[0] == CHARNULL) {
+ liberaMemoria(buffer);
+ errorLog(modulo,56, FALSE); // Falta parmetro PATHINTERFACE
+ return (FALSE);
+ }
+
+ if (urlmenu[0] == CHARNULL) {
+ liberaMemoria(buffer);
+ errorLog(modulo,89, FALSE); // Falta parmetro URLMENU
+ return (FALSE);
+ }
+ if (urlmsg[0] == CHARNULL) {
+ liberaMemoria(buffer);
+ errorLog(modulo,90, FALSE); // Falta parmetro URLMSG
+ return (FALSE);
+ }
+ liberaMemoria(buffer);
+ return (TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: FinterfaceAdmin
+//
+// Descripcin:
+// Esta funcin es la puerta de comunicacin entre el mdulo de administracin y el motor de clonacin.
+// La Aplicacin de administracin utiliza una interface para ejecutar funciones del motor de clonacin;
+// esta interface llamar a la API del motor con lo que cambiando el comportamiento de esta interface
+// podremos hacer llamadas a otras API de clonacin y de esta manera probar distintos motores.
+//
+// Parmetros:
+// - script: Nombre del mdulo,funcin o script de la interface
+// - parametros: Parmetros que se le pasarn a la interface
+// - salida: Recoge la salida que genera la llamada a la interface
+
+// Devuelve:
+// Cdigo de error de la ejecucin al mdulo , funcin o script de la interface
+//
+// Especificaciones:
+// El parmetro salida recoge la salida desde un fichero que se genera en la ejecucin del script siempre que
+// sea distinto de NULL, esto es, si al llamar a la funcin este parmetro es NULL no se recoger dicha salida.
+// Este fichero tiene una ubicacin fija: /tmp/_retinterface
+//______________________________________________________________________________________________________
+
+int FinterfaceAdmin( char *script,char* parametros,char* salida)
+{
+ FILE *f;
+ int lSize,nargs,i,resul;
+ char msglog[LONSTD],*argumentos[MAXARGS];
+ char modulo[] = "FinterfaceAdmin()";
+
+
+ if (ndebug>= DEBUG_MEDIO) {
+ sprintf(msglog, "%s:%s", tbMensajes[8], script);
+ infoDebug(msglog);
+ }
+
+ /* Crea matriz de los argumentos */
+ nargs=splitCadena(argumentos,parametros,32);
+ for(i=nargs;i<MAXARGS;i++){
+ argumentos[i]=NULL;
+ }
+
+ /* Muestra matriz de los argumentos */
+ for(i=0;i<nargs;i++){
+ if (ndebug>= DEBUG_ALTO) {
+ sprintf(msglog, "%s: #%d-%s", tbMensajes[9],i+1,argumentos[i]);
+ infoDebug(msglog);
+ }
+ }
+ /* Elimina fichero de retorno */
+ if(salida!=(char*)NULL){
+ f = fopen("/tmp/_retinterface_","w" );
+ if (f==NULL){ // Error de eliminacin
+ scriptLog(modulo,10);
+ resul=8;
+ scriptLog(modulo,resul);
+ return(resul);
+ }
+ fclose(f);
+ }
+ /* Compone linea de comando */
+ if(parametros){
+ strcat(script," ");
+ strcat(script,parametros);
+ }
+ /* LLamada funcin interface */
+ resul=system(script);
+ if(resul){
+ scriptLog(modulo,10);
+ scriptLog(modulo,resul);
+ return(resul);
+ }
+ /* Lee fichero de retorno */
+ if(salida!=(char*)NULL){
+ f = fopen("/tmp/_retinterface_","rb" );
+ if (f==NULL){ // Error de apertura
+ scriptLog(modulo,10);
+ resul=9;
+ scriptLog(modulo,resul);
+ return(resul);
+ }
+ else{
+ fseek (f ,0,SEEK_END); // Obtiene tamao del fichero.
+ lSize = ftell (f);
+ rewind (f);
+ if(lSize>LONGITUD_SCRIPTSALIDA){
+ scriptLog(modulo,10);
+ resul=11;
+ scriptLog(modulo,resul);
+ return(resul);
+ }
+ fread (salida,1,lSize,f); // Lee contenido del fichero
+ rTrim(salida);
+ fclose(f);
+ }
+ }
+ /* Muestra informacin de retorno */
+ if(salida!=(char*)NULL){
+ if(ndebug>2){
+ sprintf(msglog,"Informacin devuelta %s",salida);
+ infoDebug(msglog);
+ }
+ }
+ return(resul);
+}
+//______________________________________________________________________________________________________
+// Funcin: interfaceAdmin
+//
+// Descripcin:
+// Esta funcin es la puerta de comunicacin entre el mdulo de administracin y el motor de clonacin.
+// La Aplicacin de administracin utiliza una interface para ejecutar funciones del motor de clonacin;
+// esta interface llamar a la API del motor con lo que cambiando el comportamiento de esta interface
+// podremos hacer llamadas a otras API de clonacin y de esta manera probar distintos motores.
+//
+// Parmetros:
+// - script: Nombre del mdulo,funcin o script de la interface
+// - parametros: Parmetros que se le pasarn a la interface
+// - salida: Recoge la salida que genera la llamada a la interface
+
+// Devuelve:
+// Cdigo de error de la ejecucin al mdulo , funcin o script de la interface
+//
+// Especificaciones:
+// El parmetro salida recoge la salida desde el procedimiento hijo que se genera en la ejecucin de ste
+// siempre que sea distinto de NULL, esto es, si al llamar a la funcin este parmetro es NULL no se
+// recoger dicha salida.
+//______________________________________________________________________________________________________
+
+int interfaceAdmin( char *script,char* parametros,char* salida)
+{
+ int descr[2]; /* Descriptores de E y S de la turbera */
+ int bytesleidos; /* Bytes leidos en el mensaje */
+ int estado;
+ pid_t pid;
+ char buffer[LONBLK]; // Buffer de lectura de fichero
+ pipe (descr);
+ int i,nargs,resul;
+ int lon; // Longitud de cadena
+ char msglog[LONSUC]; // Mensaje de registro de sucesos
+ char *argumentos[MAXARGS];
+ char modulo[] = "interfaceAdmin()";
+ if (ndebug>= DEBUG_MEDIO) {
+ sprintf(msglog, "%s:%s", tbMensajes[8], script);
+ infoDebug(msglog);
+ }
+
+ /* Crea matriz de los argumentos */
+ nargs=splitCadena(argumentos,parametros,32);
+ for(i=nargs;i<MAXARGS;i++){
+ argumentos[i]=NULL;
+ }
+ /* Muestra matriz de los argumentos */
+ for(i=1;i<nargs;i++){
+ if (ndebug>= DEBUG_ALTO) {
+ // Truncar la cadena si es mayor que el tamao de la lnea de log.
+ sprintf(msglog, "%s: #%d-", tbMensajes[9], i+1);
+ lon = strlen (msglog);
+ if (lon + strlen (argumentos[i]) < LONSUC) {
+ strcat (msglog, argumentos[i]);
+ }
+ else
+ {
+ strncat (msglog, argumentos[i], LONSUC - lon - 4);
+ strcat (msglog, "...");
+ }
+ infoDebug(msglog);
+ }
+ }
+
+ if((pid=fork())==0)
+ {
+ //_______________________________________________________________
+
+ /* Proceso hijo que ejecuta la funcin de interface */
+
+ close (descr[LEER]);
+ dup2 (descr[ESCRIBIR], 1);
+ close (descr[ESCRIBIR]);
+ resul=execv(script,argumentos);
+ //resul=execlp (script, script, argumentos[0],argumentos[1],NULL);
+ exit(resul);
+
+ /* Fin de proceso hijo */
+ //_______________________________________________________________
+ }
+ else
+ {
+ //_______________________________________________________________
+
+ /* Proceso padre que espera la ejecucin del hijo */
+
+ if (pid ==-1){ // Error en la creacin del proceso hijo
+ scriptLog(modulo,10);
+ resul=13;
+ scriptLog(modulo,resul);
+ return(resul);
+ }
+ close (descr[ESCRIBIR]);
+ bytesleidos = read (descr[LEER], buffer, LONBLK-1);
+ while(bytesleidos>0){
+ if(salida!=(char*)NULL){ // Si se solicita retorno de informacin...
+ buffer[bytesleidos]='\0';
+ // Error si se supera el tamao mximo de cadena de salida.
+ if(strlen(buffer)+strlen(salida)>LONGITUD_SCRIPTSALIDA){
+ scriptLog(modulo,10);
+ resul=11;
+ scriptLog(modulo,resul);
+ return(resul);
+ }
+ rTrim(buffer);
+ strcat(salida,buffer);
+ }
+ bytesleidos = read (descr[LEER], buffer, LONBLK-1);
+ }
+ close (descr[LEER]);
+ //kill(pid,SIGQUIT);
+ waitpid(pid,&estado,0);
+ resul=WEXITSTATUS(estado);
+ if(resul){
+ scriptLog(modulo,10);
+ scriptLog(modulo,resul);
+ return(resul);
+ }
+ /* Fin de proceso padre */
+ //_______________________________________________________________
+ }
+
+ /* Muestra informacin de retorno */
+ if(salida!=(char*)NULL){
+ if(ndebug>2){
+ // Truncar la cadena si es mayor que el tamao de la lnea de log.
+ strcpy(msglog,"Informacion devuelta ");
+ lon = strlen (msglog);
+ if (lon + strlen (salida) < LONSUC) {
+ strcat (msglog, salida);
+ }
+ else
+ {
+ strncat (msglog, salida, LONSUC-lon-4);
+ strcat (msglog, "...");
+ }
+ infoDebug(msglog);
+ }
+ }
+ return(resul);
+}
+//______________________________________________________________________________________________________
+// Funcin: scriptLog
+//
+// Descripcin:
+// Registra los sucesos de errores de scripts en el fichero de log
+// Parametros:
+// - modulo: Mdulo donde se produjo el error
+// - coderr : Cdigo del mensaje de error del script
+//______________________________________________________________________________________________________
+void scriptLog(const char *modulo,int coderr)
+{
+ char msglog[LONSUC];
+
+ if(coderr<MAXERRORSCRIPT)
+ errorInfo(modulo,tbErroresScripts[coderr]); // Se ha producido algn error registrado
+ else{
+ sprintf(msglog,"%s: %d",tbErroresScripts[MAXERRORSCRIPT],coderr);
+ errorInfo(modulo,msglog);
+ }
+}
+//______________________________________________________________________________________________________
+// Funcin: TomaIPlocal
+//
+// Descripcin:
+// Recupera la IP local
+// Parmetros:
+// Ninguno
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+// Especificaciones:
+// En caso de no encontrar la IP o generarse algn error la IP local sera 0.0.0.0
+//______________________________________________________________________________________________________
+BOOLEAN tomaIPlocal()
+{
+ char modulo[] = "tomaIPlocal()";
+
+ // Para debug
+ //strcpy(IPlocal,"10.1.15.203");
+ //return(TRUE);
+
+ sprintf(interface,"%s/getIpAddress",pathinterface);
+ herror=interfaceAdmin(interface,NULL,IPlocal);
+ if(herror){
+ errorLog(modulo,85,FALSE);
+ return(FALSE);
+ }
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: cuestionCache
+//
+// Descripcin:
+// Procesa la cache en caso de existir.
+// Parmetros:
+// tam : Tamao de la cache
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN cuestionCache(char* tam)
+{
+ return(TRUE);
+ //>>>>>>>>>>>>>>>>>>>>>>>>>>
+ char msglog[LONSTD];
+ char modulo[] = "cuestionCache()";
+
+ sprintf(interface,"%s/%s",pathinterface,"procesaCache");
+ sprintf(parametros,"%s %s","procesaCache",tam);
+
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s",tbErrores[88]);
+ errorInfo(modulo,msglog);
+ return(FALSE);
+ }
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: cargaPaginaWeb
+//
+// Descripcin:
+// Muestra una pgina web usando el browser
+// Parmetros:
+// urp: Direccin url de la pgina
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+// ________________________________________________________________________________________________________
+int cargaPaginaWeb(char *url)
+{
+ int resul=0;
+ char* argumentos[4];
+ char modulo[] = "cargaPaginaWeb()";
+
+ if(pidbash>0)
+ kill(pidbash,SIGQUIT); // Destruye el proceso hijo del proceso bash si existiera una conmutacin
+
+ if(pidbrowser>0)
+ kill(pidbrowser,SIGQUIT); // Destruye el proceso hijo anterior y se queda slo el actual
+
+ sprintf(interface,"/opt/opengnsys/bin/browser");
+ sprintf(parametros,"browser -qws %s",url);
+
+ splitCadena(argumentos,parametros,' '); // Crea matriz de los argumentos del scripts
+ argumentos[3]=NULL;
+ if((pidbrowser=fork())==0){
+ /* Proceso hijo que ejecuta el script */
+ resul=execv(interface,argumentos);
+ exit(resul);
+ }
+ else {
+ if (pidbrowser ==-1){
+ scriptLog(modulo,10);
+ resul=13;
+ scriptLog(modulo,resul);
+ return(resul);
+ }
+ }
+ return(resul);
+}
+//________________________________________________________________________________________________________
+// Funcin: muestraMenu
+//
+// Descripcin:
+// Muestra el menu inicial del cliente
+// Parmetros:
+// Ninguno
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//________________________________________________________________________________________________________
+void muestraMenu()
+{
+ cargaPaginaWeb(urlmenu);
+}
+//______________________________________________________________________________________________________
+// Funcin: muestraMensaje
+//
+// Descripcin:
+// Muestra un mensaje en pantalla
+// Parmetros:
+// - idx: Indice del mensaje
+// - msg: Descripcin Mensaje
+// ________________________________________________________________________________________________________
+void muestraMensaje(int idx,char*msg)
+{
+ char *msgpan,url[250];
+
+ if(msg){
+ msgpan=URLEncode(msg);
+ sprintf(url,"%s?msg=%s",urlmsg,msgpan); // Url de la pgina de mensajes
+ liberaMemoria(msgpan);
+ }
+ else
+ sprintf(url,"%s?idx=%d",urlmsg,idx); // Url de la pgina de mensajes
+ cargaPaginaWeb(url);
+}
+//______________________________________________________________________________________________________
+// Funcin: InclusionCliente
+// Descripcin:
+// Abre una sesin en el servidor de administracin y registra al cliente en el sistema
+// Parmetros:
+// Ninguno
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN inclusionCliente(TRAMA* ptrTrama)
+{
+ int lon; // Longitud de cadena
+ char msglog[LONSUC]; // Mensaje de registro de sucesos
+ char *cfg; // Datos de configuracin
+ SOCKET socket_c;
+ char modulo[] = "inclusionCliente()";
+
+ cfg=LeeConfiguracion();
+
+ if(!cfg){ // No se puede recuperar la configuracin del cliente
+ errorLog(modulo,36,FALSE);
+ errorLog(modulo,37,FALSE);
+ return(FALSE);
+ }
+ if (ndebug>= DEBUG_ALTO) {
+ // Truncar la cadena si es mayor que el tamao de la lnea de log.
+ sprintf(msglog, "%s", tbMensajes[14]);
+ lon = strlen (msglog);
+ if (lon + strlen (cfg) < LONSUC) {
+ strcat (msglog, cfg);
+ }
+ else
+ {
+ strncat (msglog, cfg, LONSUC - lon - 4);
+ strcat (msglog, "...");
+ }
+ infoDebug(msglog);
+ }
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=InclusionCliente\r"); // Nombre de la funcin a ejecutar en el servidor
+ lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuracin de los Sistemas Operativos del cliente
+ liberaMemoria(cfg);
+
+ if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){
+ errorLog(modulo,37,FALSE);
+ return(FALSE);
+ }
+ ptrTrama=recibeMensaje(&socket_c);
+ if(!ptrTrama){
+ errorLog(modulo,45,FALSE);
+ return(FALSE);
+ }
+
+ close(socket_c);
+
+ if(!gestionaTrama(ptrTrama)){ // Anlisis de la trama
+ errorLog(modulo,39,FALSE);
+ return(FALSE);
+ }
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: RESPUESTA_InclusionCliente
+//
+// Descripcin:
+// Respuesta del servidor de administracin a la peticin de inicio
+// enviando los datos identificativos del cliente y otras configuraciones
+// Parmetros:
+// - ptrTrama: Trama recibida por el servidor con el contenido y los parmetros
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN RESPUESTA_InclusionCliente(TRAMA* ptrTrama)
+{
+ char* res;
+ char modulo[] = "RESPUESTA_InclusionCliente()";
+
+ res=copiaParametro("res",ptrTrama); // Resultado del proceso de inclusin
+ if(atoi(res)==0){ // Error en el proceso de inclusin
+ liberaMemoria(res);
+ errorLog(modulo,41,FALSE);
+ return (FALSE);
+ }
+ liberaMemoria(res);
+
+ idordenador=copiaParametro("ido",ptrTrama); // Identificador del ordenador
+ nombreordenador=copiaParametro("npc",ptrTrama); // Nombre del ordenador
+ cache=copiaParametro("che",ptrTrama); // Tamao de la cach reservada al cliente
+ idproautoexec=copiaParametro("exe",ptrTrama); // Procedimento de inicio (Autoexec)
+ idcentro=copiaParametro("idc",ptrTrama); // Identificador de la Unidad Organizativa
+ idaula=copiaParametro("ida",ptrTrama); // Identificador del aula
+
+ if(idordenador==NULL || nombreordenador==NULL){
+ errorLog(modulo,40,FALSE);
+ return (FALSE);
+ }
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+//
+// Funcin: LeeConfiguracion
+// Descripcin:
+// Abre una sesin en el servidor de administracin y registra al cliente en el sistema
+// Parmetros:
+// Ninguno
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+
+char* LeeConfiguracion()
+{
+ char* parametroscfg;
+ char modulo[] = "LeeConfiguracion()";
+
+ // Reservar memoria para los datos de cofiguracin.
+ parametroscfg=(char*)reservaMemoria(LONGITUD_SCRIPTSALIDA);
+ if(!parametroscfg){
+ errorLog(modulo,3,FALSE);
+ return(NULL);
+ }
+ // Ejecutar script y obtener datos.
+ sprintf(interface,"%s/%s",pathinterface,"getConfiguration");
+ herror=interfaceAdmin(interface,NULL,parametroscfg);
+
+ if(herror){ // No se puede recuperar la configuracin del cliente
+ liberaMemoria(parametroscfg);
+ errorLog(modulo,36,FALSE);
+ return(NULL);
+ }
+ return(parametroscfg);
+}
+//________________________________________________________________________________________________________
+// Funcin: autoexecCliente
+//
+// Descripcin:
+// Solicita procedimiento de autoexec para el cliebnte
+// Parmetros:
+// Ninguno
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//________________________________________________________________________________________________________
+BOOLEAN autoexecCliente(TRAMA* ptrTrama)
+{
+ SOCKET socket_c;
+ char modulo[] = "autoexecCliente()";
+
+ initParametros(ptrTrama,0);
+ sprintf(ptrTrama->parametros,"nfn=AutoexecCliente\rexe=%s\r",idproautoexec);
+
+ if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){
+ errorLog(modulo,42,FALSE);
+ return(FALSE);
+ }
+ ptrTrama=recibeMensaje(&socket_c);
+ if(!ptrTrama){
+ errorLog(modulo,45,FALSE);
+ return(FALSE);
+ }
+
+ close(socket_c);
+
+ if(!gestionaTrama(ptrTrama)){ // Anlisis de la trama
+ errorLog(modulo,39,FALSE);
+ return(FALSE);
+ }
+
+ return(TRUE);
+}
+//________________________________________________________________________________________________________
+// Funcin: autoexecCliente
+//
+// Descripcin:
+// Ejecuta un script de autoexec personalizado en todos los inicios para el cliente
+// Parmetros:
+// Ninguno
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//________________________________________________________________________________________________________
+BOOLEAN RESPUESTA_AutoexecCliente(TRAMA* ptrTrama)
+{
+ SOCKET socket_c;
+ char *res,*nfl;
+ char modulo[] = "RESPUESTA_AutoexecCliente()";
+
+ res=copiaParametro("res",ptrTrama);
+ if(atoi(res)==0){ // Error en el proceso de autoexec
+ liberaMemoria(res);
+ return (FALSE);
+ }
+ liberaMemoria(res);
+
+ nfl=copiaParametro("nfl",ptrTrama);
+ initParametros(ptrTrama,0);
+ sprintf(ptrTrama->parametros,"nfn=enviaArchivo\rnfl=%s\r",nfl);
+ liberaMemoria(nfl);
+
+ /* Enva peticin */
+ if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){
+ errorLog(modulo,42,FALSE);
+ return(FALSE);
+ }
+ /* Nombre del archivo destino (local)*/
+ char fileautoexec[LONPRM];
+ sprintf(fileautoexec,"/tmp/_autoexec_%s",IPlocal);
+
+ /* Recibe archivo */
+ if(!recArchivo(&socket_c,fileautoexec)){
+ errorLog(modulo,58, FALSE);
+ close(socket_c);
+ return(FALSE);
+ }
+
+ close(socket_c);
+
+ /* Ejecuta archivo */
+ ejecutaArchivo(fileautoexec,ptrTrama);
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: comandosPendientes
+//
+// Descripcin:
+// Bsqueda de acciones pendientes en el servidor de administracin
+// Parmetros:
+// Ninguno
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN comandosPendientes(TRAMA* ptrTrama)
+{
+ SOCKET socket_c;
+ char modulo[] = "comandosPendientes()";
+
+ CMDPTES=TRUE;
+ initParametros(ptrTrama,0);
+
+ while(CMDPTES){
+ sprintf(ptrTrama->parametros,"nfn=ComandosPendientes\r");
+ if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_PETICION)){
+ errorLog(modulo,42,FALSE);
+ return(FALSE);
+ }
+ ptrTrama=recibeMensaje(&socket_c);
+ if(!ptrTrama){
+ errorLog(modulo,45,FALSE);
+ return(FALSE);
+ }
+
+ close(socket_c);
+
+ if(!gestionaTrama(ptrTrama)){ // Anlisis de la trama
+ errorLog(modulo,39,FALSE);
+ return(FALSE);
+ }
+ }
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: NoComandosPtes
+//
+// Descripcin:
+// Conmuta el switch de los comandos pendientes y lo pone a false
+// Parmetros:
+// - ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE siempre
+// Especificaciones:
+// Cuando se ejecuta esta funcin se sale del bucle que recupera los comandos pendientes en el
+// servidor y el cliente pasa a a estar disponible para recibir comandos desde el ste.
+//______________________________________________________________________________________________________
+BOOLEAN NoComandosPtes(TRAMA* ptrTrama)
+{
+ CMDPTES=FALSE; // Corta el bucle de comandos pendientes
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: ProcesaComandos
+//
+// Descripcin:
+// Espera comando desde el Servidor de Administracin para ejecutarlos
+// Parmetros:
+// Ninguno
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+// ________________________________________________________________________________________________________
+void procesaComandos(TRAMA* ptrTrama)
+{
+ int lon;
+ SOCKET socket_c;
+ char modulo[] = "procesaComandos()";
+
+ initParametros(ptrTrama,0);
+ while(TRUE){
+ lon=sprintf(ptrTrama->parametros,"nfn=DisponibilidadComandos\r");
+ lon+=sprintf(ptrTrama->parametros+lon,"tpc=%s\r",CLIENTE_OPENGNSYS); // Activar disponibilidad
+ if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_INFORMACION)){
+ errorLog(modulo,43,FALSE);
+ return;
+ }
+ infoLog(19); // Disponibilidad de cliente activada
+ ptrTrama=recibeMensaje(&socket_c);
+ if(!ptrTrama){
+ errorLog(modulo,46,FALSE);
+ return;
+ }
+
+ close(socket_c);
+
+ if(!gestionaTrama(ptrTrama)){ // Anlisis de la trama
+ errorLog(modulo,39,FALSE);
+ return;
+ }
+ if(!comandosPendientes(ptrTrama)){
+ errorLog(modulo,42,FALSE);
+ }
+ }
+}
+//______________________________________________________________________________________________________
+// Funcin: Actualizar
+//
+// Descripcin:
+// Actualiza los datos de un ordenador como si volviera a solicitar la entrada
+// en el sistema al servidor de administracin
+// Parmetros:
+// ptrTrama: contenido del mensajede
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN Actualizar(TRAMA* ptrTrama)
+{
+ char msglog[LONSTD]; // Mensaje de log
+ char *cfg; // Cadena de datos de configuracin
+ int lon; // Longitud de cadena
+ char modulo[] = "Actualizar()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ muestraMensaje(1,NULL);
+ if(!comandosPendientes(ptrTrama)){
+ errorLog(modulo,84,FALSE);
+ return(FALSE);
+ }
+
+ cfg=LeeConfiguracion();
+ herror=0;
+ if(!cfg){ // No se puede recuperar la configuracin del cliente
+ errorLog(modulo,36,FALSE);
+ herror=3;
+ }
+ // Envia Configuracion al servidor
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Configurar");
+ lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuracin de los Sistemas Operativos del cliente
+ respuestaEjecucionComando(ptrTrama,herror,0);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: Purgar
+//
+// Descripcin:
+// Detiene la ejecucin del browser
+// Parmetros:
+// ptrTrama: contenido del mensajede
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+int Purgar(TRAMA* ptrTrama)
+{
+
+ exit(EXIT_SUCCESS);
+}
+//______________________________________________________________________________________________________
+// Funcin: Sondeo
+//
+// Descripcin:
+// Enva al servidor una confirmacin de que est dentro del sistema
+// Parmetros:
+// ptrTrama: contenido del mensajede
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN Sondeo(TRAMA* ptrTrama)
+{
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: ConsolaRemota
+//
+// Descripcin:
+// Ejecuta un comando de la Shell y envia el eco al servidor (Consola remota)
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN ConsolaRemota(TRAMA* ptrTrama)
+{
+ SOCKET socket_c;
+ char *nfn,*scp,*aux,ecosrc[LONPRM],ecodst[LONPRM],msglog[LONSTD];;
+ char modulo[] = "ConsolaRemota()";
+
+ /* Nombre del archivo de script */
+ char filescript[LONPRM];
+ sprintf(filescript,"/tmp/_script_%s",IPlocal);
+
+ aux=copiaParametro("scp",ptrTrama);
+ scp=URLDecode(aux);
+ escribeArchivo(filescript,scp);
+ liberaMemoria(aux);
+ liberaMemoria(scp);
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(ecosrc,"/tmp/_econsola_%s",IPlocal);
+ sprintf(parametros,"%s %s %s",nfn,filescript,ecosrc);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ }
+ else{
+ /* Enva fichero de inventario al servidor */
+ sprintf(ecodst,"/tmp/_Seconsola_%s",IPlocal); // Nombre que tendra el archivo en el Servidor
+ initParametros(ptrTrama,0);
+ sprintf(ptrTrama->parametros,"nfn=recibeArchivo\rnfl=%s\r",ecodst);
+ if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_COMANDO)){
+ errorLog(modulo,42,FALSE);
+ return(FALSE);
+ }
+ /* Espera seal para comenzar el envo */
+ liberaMemoria(ptrTrama);
+ recibeFlag(&socket_c,ptrTrama);
+ /* Enva archivo */
+ if(!sendArchivo(&socket_c,ecosrc)){
+ errorLog(modulo,57, FALSE);
+ herror=12; // Error de envo de fichero por la red
+ }
+ close(socket_c);
+ }
+ liberaMemoria(nfn);
+ return(TRUE);
+}
+//_____________________________________________________________________________________________________
+// Funcin: Comando
+//
+// Descripcin:
+// COmando personalizado enviado desde el servidor
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//_____________________________________________________________________________________________________
+BOOLEAN Comando(TRAMA* ptrTrama)
+{
+ char *ids,*nfn,msglog[LONSTD];
+ char modulo[] = "Comando()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ herror=interfaceAdmin(interface,NULL,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ }
+ /* Envia respuesta de ejecucucin del comando */
+ initParametros(ptrTrama,0);
+ sprintf(ptrTrama->parametros,"nfn=RESPUESTA_%s\r",nfn);
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ return(TRUE);
+}
+//_____________________________________________________________________________________________________
+// Funcin: Arrancar
+//
+// Descripcin:
+// Responde a un comando de encendido por la red
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//_____________________________________________________________________________________________________
+BOOLEAN Arrancar(TRAMA* ptrTrama)
+{
+ int lon;
+ char *ids,msglog[LONSTD];
+ char modulo[] = "Arrancar()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+
+ ids=copiaParametro("ids",ptrTrama);
+
+ /* Envia respuesta de ejecucucin del script */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Arrancar");
+ lon+=sprintf(ptrTrama->parametros+lon,"tpc=%s\r",CLIENTE_OPENGNSYS);
+ respuestaEjecucionComando(ptrTrama,0,ids);
+ liberaMemoria(ids);
+ return(TRUE);
+}
+//_____________________________________________________________________________________________________
+// Funcin: Apagar
+//
+// Descripcin:
+// Apaga el cliente
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//_____________________________________________________________________________________________________
+BOOLEAN Apagar(TRAMA* ptrTrama)
+{
+ char *ids,*nfn,msglog[LONSTD];
+ char modulo[] = "Apagar()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+
+ initParametros(ptrTrama,0);
+ sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Apagar");
+ respuestaEjecucionComando(ptrTrama,0,ids);
+
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ herror=interfaceAdmin(interface,NULL,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ errorInfo(modulo,msglog);
+ return(FALSE);
+ }
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ return(TRUE);
+}
+//_____________________________________________________________________________________________________
+// Funcin: Reiniciar
+//
+// Descripcin:
+// Apaga el cliente
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//_____________________________________________________________________________________________________
+BOOLEAN Reiniciar(TRAMA* ptrTrama)
+{
+ char *nfn,*ids,msglog[LONSTD];
+ char modulo[] = "Reiniciar()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+
+ initParametros(ptrTrama,0);
+ sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Reiniciar");
+ respuestaEjecucionComando(ptrTrama,0,ids);
+
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ herror=interfaceAdmin(interface,NULL,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ errorInfo(modulo,msglog);
+ return(FALSE);
+ }
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ return(TRUE);
+}
+//_____________________________________________________________________________________________________
+// Funcin: IniciarSesion
+//
+// Descripcin:
+// Inicia sesin en el Sistema Operativo de una de las particiones
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//_____________________________________________________________________________________________________
+BOOLEAN IniciarSesion(TRAMA* ptrTrama)
+{
+ char *nfn,*ids,*disk,*par,msglog[LONSTD];
+ char modulo[] = "IniciarSesion()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ disk=copiaParametro("dsk",ptrTrama);
+ par=copiaParametro("par",ptrTrama);
+
+ initParametros(ptrTrama,0);
+ sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_IniciarSesion");
+ respuestaEjecucionComando(ptrTrama,0,ids);
+ liberaMemoria(ids);
+
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s",nfn,disk,par);
+ liberaMemoria(par);
+
+ herror=interfaceAdmin(interface,parametros,NULL);
+
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ liberaMemoria(nfn);
+ errorInfo(modulo,msglog);
+ return(FALSE);
+ }
+ liberaMemoria(nfn);
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: CrearImagen
+//
+// Descripcin:
+// Crea una imagen de una particin
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN CrearImagen(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*cpt,*idi,*ipr,*nci,*ids,msglog[LONSTD];
+ char modulo[] = "CrearImagen()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+
+ dsk=copiaParametro("dsk",ptrTrama); // Disco
+ par=copiaParametro("par",ptrTrama); // Nmero de particin
+ cpt=copiaParametro("cpt",ptrTrama); // Cdigo de la particin
+ idi=copiaParametro("idi",ptrTrama); // Identificador de la imagen
+ nci=copiaParametro("nci",ptrTrama); // Nombre cannico de la imagen
+ ipr=copiaParametro("ipr",ptrTrama); // Ip del repositorio
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(7,NULL);
+
+ if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente
+ muestraMensaje(2,NULL);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s",nfn,dsk,par,nci,ipr);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(10,NULL);
+ }
+ else
+ muestraMensaje(9,NULL);
+ }
+ else{
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ }
+
+ /* Envia respuesta de ejecucin de la funcin de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_CrearImagen");
+ lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Nmero de particin de donde se cre
+ lon+=sprintf(ptrTrama->parametros+lon,"cpt=%s\r",cpt); // Tipo o cdigo de particin
+ lon+=sprintf(ptrTrama->parametros+lon,"ipr=%s\r",ipr); // Ip del repositorio donde se aloj
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(cpt);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(ipr);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: CrearImagenBasica
+//
+// Descripcin:
+// Crea una imagen bsica a travers dela sincronizacin
+// Parmetros:
+// ptrTrama: contenido del mensaje
+//
+// FDevuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN CrearImagenBasica(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*cpt,*idi,*nci,*rti,*ipr,*msy,*whl,*eli,*cmp,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD];
+ char modulo[] = "CrearImagenBasica()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+ dsk=copiaParametro("dsk",ptrTrama); // Disco
+ par=copiaParametro("par",ptrTrama); // Nmero de particin
+ cpt=copiaParametro("cpt",ptrTrama); // Tipo de particin
+ idi=copiaParametro("idi",ptrTrama); // Identificador de la imagen
+ nci=copiaParametro("nci",ptrTrama); // Nombre cannico de la imagen
+ rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen
+ ipr=copiaParametro("ipr",ptrTrama); // Ip del repositorio
+
+ msy=copiaParametro("msy",ptrTrama); // Mtodo de sincronizacin
+
+ whl=copiaParametro("whl",ptrTrama); // Envo del fichero completo si hay diferencias
+ eli=copiaParametro("eli",ptrTrama); // Elimiar archivos en destino que no estn en origen
+ cmp=copiaParametro("cmp",ptrTrama); // Comprimir antes de enviar
+
+ bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla
+ cpc=copiaParametro("cpc",ptrTrama); // Copiar tambin imagen a la cache
+ bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella
+ nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino
+
+ //muestraMensaje(7,NULL); // Creando Inventario Software
+ //if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente
+ muestraMensaje(30,NULL);// Creando Imagen Bsica, por favor espere...
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s%s%s %s%s%s%s %s %s",nfn,dsk,par,nci,ipr,whl,eli,cmp,bpi,cpc,bpc,nba,msy,rti);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(29,NULL);// Ha habido algn error en el proceso de creacin de imagen bsica
+ }
+ else
+ muestraMensaje(28,NULL);// El proceso de creacin de imagen bsica ha terminado correctamente
+ //}
+ //else{
+ // sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ // errorInfo(modulo,msglog);
+ //}
+
+ ids=copiaParametro("ids",ptrTrama); // Identificador de la sesin
+
+ /* Envia respuesta de ejecucin de la funcin de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_CrearImagenBasica");
+ lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Nmero de particin de donde se cre
+ lon+=sprintf(ptrTrama->parametros+lon,"cpt=%s\r",cpt); // Tipo o cdigo de particin
+ lon+=sprintf(ptrTrama->parametros+lon,"ipr=%s\r",ipr); // Ip del repositorio donde se aloj
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(cpt);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(rti);
+ liberaMemoria(ipr);
+
+ liberaMemoria(msy);
+
+ liberaMemoria(whl);
+ liberaMemoria(eli);
+ liberaMemoria(cmp);
+
+ liberaMemoria(bpi);
+ liberaMemoria(cpc);
+ liberaMemoria(bpc);
+ liberaMemoria(nba);
+ liberaMemoria(ids);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: CrearSoftIncremental
+//
+// Descripcin:
+// Crea una software incremental comparando una particin con una imagen bsica
+// Parmetros:
+// ptrTrama: contenido del mensaje
+//
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN CrearSoftIncremental(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*idi,*idf,*ipr,*nci,*rti,*ncf,*msy,*whl,*eli,*cmp,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD];
+ char modulo[] = "CrearSoftIncremental()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+
+ dsk=copiaParametro("dsk",ptrTrama); // Disco
+ par=copiaParametro("par",ptrTrama); // Nmero de particin
+ idi=copiaParametro("idi",ptrTrama); // Identificador de la imagen
+ nci=copiaParametro("nci",ptrTrama); // Nombre cannico de la imagen
+ rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen
+ ipr=copiaParametro("ipr",ptrTrama); // Ip del repositorio
+ idf=copiaParametro("idf",ptrTrama); // Identificador de la imagen diferencial
+ ncf=copiaParametro("ncf",ptrTrama); // Nombre cannico de la imagen diferencial
+
+ msy=copiaParametro("msy",ptrTrama); // Mtodo de sincronizacin
+
+ whl=copiaParametro("whl",ptrTrama); // Envo del fichero completo si hay diferencias
+ eli=copiaParametro("eli",ptrTrama); // Elimiar archivos en destino que no estn en origen
+ cmp=copiaParametro("cmp",ptrTrama); // Comprimir antes de enviar
+
+ bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla
+ cpc=copiaParametro("cpc",ptrTrama); // Copiar tambin imagen a la cache
+ bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella
+ nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino
+
+// muestraMensaje(7,NULL); // Creando Inventario Software
+// if(InventariandoSoftware(ptrTrama,FALSE,"InventarioSoftware")){ // Crea inventario Software previamente
+ muestraMensaje(25,NULL);// Creando Imagen Incremental, por favor espere...
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s %s%s%s %s%s%s%s %s %s",nfn,dsk,par,nci,ipr,ncf,whl,eli,cmp,bpi,cpc,bpc,nba,msy,rti);
+
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(27,NULL);// Ha habido algn error en el proceso de creacin de imagen bsica
+ }
+ else
+ muestraMensaje(26,NULL);// El proceso de creacin de imagen incremental ha terminado correctamente
+// }
+// else{
+// sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+// errorInfo(modulo,msglog);
+// }
+
+ ids=copiaParametro("ids",ptrTrama); // Identificador de la sesin
+
+ /* Envia respuesta de ejecucin de la funcin de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_CrearSoftIncremental");
+ lon+=sprintf(ptrTrama->parametros+lon,"idf=%s\r",idf); // Identificador de la imagen incremental
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Nmero de particin
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(rti);
+ liberaMemoria(ipr);
+ liberaMemoria(idf);
+ liberaMemoria(ncf);
+ liberaMemoria(msy);
+ liberaMemoria(whl);
+ liberaMemoria(eli);
+ liberaMemoria(cmp);
+ liberaMemoria(bpi);
+ liberaMemoria(cpc);
+ liberaMemoria(bpc);
+ liberaMemoria(nba);
+ liberaMemoria(ids);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: RestaurarImagen
+//
+// Descripcin:
+// Restaura una imagen en una particin
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En bpccaso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN RestaurarImagen(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*idi,*ipr,*ifs,*nci,*ids,*ptc,msglog[LONSTD];
+ char modulo[] = "RestaurarImagen()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+
+ dsk=copiaParametro("dsk",ptrTrama);
+ par=copiaParametro("par",ptrTrama);
+ idi=copiaParametro("idi",ptrTrama);
+ ipr=copiaParametro("ipr",ptrTrama);
+ nci=copiaParametro("nci",ptrTrama);
+ ifs=copiaParametro("ifs",ptrTrama);
+ ptc=copiaParametro("ptc",ptrTrama);
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(3,NULL);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s",nfn,dsk,par,nci,ipr,ptc);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(12,NULL);
+ }
+ else
+ muestraMensaje(11,NULL);
+
+
+ /* Envia respuesta de ejecucin de la funcin de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_RestaurarImagen");
+ lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Nmero de particin
+ lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(ipr);
+ liberaMemoria(ifs);
+ liberaMemoria(ptc);
+ liberaMemoria(ids);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: RestaurarImagenBasica
+//
+// Descripcin:
+// Restaura una imagen bsica en una particin
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN RestaurarImagenBasica(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*idi,*ipr,*met,*nci,*rti,*ifs,*msy,*whl,*eli,*cmp,*tpt,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD];
+ char modulo[] = "RestaurarImagenBasica()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ dsk=copiaParametro("dsk",ptrTrama);
+ par=copiaParametro("par",ptrTrama);
+ idi=copiaParametro("idi",ptrTrama);
+ ipr=copiaParametro("ipr",ptrTrama);
+ met=copiaParametro("met",ptrTrama); // Mtodo de clonacin 0= desde cach 1= desde repositorio
+ nci=copiaParametro("nci",ptrTrama);
+ rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen
+ ifs=copiaParametro("ifs",ptrTrama);
+
+ tpt=copiaParametro("tpt",ptrTrama); // Tipo de trasnmisin unicast o multicast
+ msy=copiaParametro("msy",ptrTrama); // Metodo de sincronizacion
+
+ whl=copiaParametro("whl",ptrTrama); // Envo del fichero completo si hay diferencias
+ eli=copiaParametro("eli",ptrTrama); // Elimiar archivos en destino que no estn en origen
+ cmp=copiaParametro("cmp",ptrTrama); // Comprimir antes de enviar
+
+
+
+ bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla
+ cpc=copiaParametro("cpc",ptrTrama); // Copiar tambin imagen a la cache
+ bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella
+ nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(31,NULL);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s %s%s%s %s%s%s%s %s %s %s",nfn,dsk,par,nci,ipr,tpt,whl,eli,cmp,bpi,cpc,bpc,nba,met,msy,rti);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(33,NULL);
+ }
+ else
+ muestraMensaje(32,NULL);
+
+ /* Envia respuesta de ejecucin de la funcin de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_RestaurarImagenBasica");
+ lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idi); // Identificador de la imagen
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Nmero de particin
+ lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(idi);
+ liberaMemoria(nci);
+ liberaMemoria(rti);
+ liberaMemoria(ifs);
+ liberaMemoria(ipr);
+ liberaMemoria(met);
+
+ liberaMemoria(tpt);
+ liberaMemoria(msy);
+
+ liberaMemoria(whl);
+ liberaMemoria(eli);
+ liberaMemoria(cmp);
+
+ liberaMemoria(bpi);
+ liberaMemoria(cpc);
+ liberaMemoria(bpc);
+ liberaMemoria(nba);
+ liberaMemoria(ids);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: RestaurarSoftIncremental
+//
+// Descripcin:
+// Restaura software incremental en una particin
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN RestaurarSoftIncremental(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*par,*idi,*ipr,*met,*ifs,*nci,*rti,*idf,*ncf,*msy,*whl,*eli,*cmp,*tpt,*bpi,*cpc,*bpc,*nba,*ids,msglog[LONSTD];
+ char modulo[] = "RestaurarSoftIncremental()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ dsk=copiaParametro("dsk",ptrTrama);
+ par=copiaParametro("par",ptrTrama);
+ idi=copiaParametro("idi",ptrTrama);
+ idf=copiaParametro("idf",ptrTrama);
+ ipr=copiaParametro("ipr",ptrTrama);
+ met=copiaParametro("met",ptrTrama); // Mtodo de clonacin 0= desde cach 1= desde repositorio
+ ifs=copiaParametro("ifs",ptrTrama);
+ nci=copiaParametro("nci",ptrTrama);
+ rti=copiaParametro("rti",ptrTrama); // Ruta de origen de la imagen
+ ncf=copiaParametro("ncf",ptrTrama);
+
+ tpt=copiaParametro("tpt",ptrTrama); // Tipo de trasnmisin unicast o multicast
+ msy=copiaParametro("msy",ptrTrama); // Metodo de sincronizacion
+
+ whl=copiaParametro("whl",ptrTrama); // Envo del fichero completo si hay diferencias
+ eli=copiaParametro("eli",ptrTrama); // Elimiar archivos en destino que no estn en origen
+ cmp=copiaParametro("cmp",ptrTrama); // Comprimir antes de enviar
+
+ bpi=copiaParametro("bpi",ptrTrama); // Borrar la imagen antes de crearla
+ cpc=copiaParametro("cpc",ptrTrama); // Copiar tambin imagen a la cache
+ bpc=copiaParametro("bpc",ptrTrama); // Borrarla de la cache antes de copiarla en ella
+ nba=copiaParametro("nba",ptrTrama); // No borrar archivos en destino
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(31,NULL);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s %s %s %s %s %s%s%s %s%s%s%s %s %s %s",nfn,dsk,par,nci,ipr,ncf,tpt,whl,eli,cmp,bpi,cpc,bpc,nba,met,msy,rti);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(35,NULL);
+ }
+ else
+ muestraMensaje(34,NULL);
+
+ /* Envia respuesta de ejecucin de la funcin de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_RestaurarSoftIncremental");
+ lon+=sprintf(ptrTrama->parametros+lon,"idi=%s\r",idf); // Identificador de la imagen incremental (Forzada a idi)
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par); // Nmero de particin
+ lon+=sprintf(ptrTrama->parametros+lon,"ifs=%s\r",ifs); // Identificador del perfil software
+
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ liberaMemoria(idi);
+ liberaMemoria(idf);
+ liberaMemoria(nci);
+ liberaMemoria(rti);
+ liberaMemoria(ncf);
+ liberaMemoria(ifs);
+ liberaMemoria(ipr);
+ liberaMemoria(met);
+
+ liberaMemoria(tpt);
+ liberaMemoria(msy);
+
+ liberaMemoria(whl);
+ liberaMemoria(eli);
+ liberaMemoria(cmp);
+
+ liberaMemoria(bpi);
+ liberaMemoria(cpc);
+ liberaMemoria(bpc);
+ liberaMemoria(nba);
+ liberaMemoria(ids);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: Configurar
+//
+// Descripcin:
+// Configura la tabla de particiones y formatea
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN Configurar(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*dsk,*cfg,*ids,msglog[LONSTD];
+ char modulo[] = "Configurar()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+
+ dsk=copiaParametro("dsk",ptrTrama);
+ cfg=copiaParametro("cfg",ptrTrama);
+ /* Sustituir caracteres */
+ sustituir(cfg,'\n','$');
+ sustituir(cfg,'\t','#');
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(4,NULL);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s %s",nfn,dsk,cfg);
+
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(13,NULL);
+ }
+ else
+ muestraMensaje(14,NULL);
+
+ cfg=LeeConfiguracion();
+ if(!cfg){ // No se puede recuperar la configuracin del cliente
+ errorLog(modulo,36,FALSE);
+ return(FALSE);
+ }
+
+ /* Envia respuesta de ejecucin del comando*/
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_Configurar");
+ lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuracin de los Sistemas Operativos del cliente
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(dsk);
+ liberaMemoria(cfg);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+// ________________________________________________________________________________________________________
+// Funcin: InventarioHardware
+//
+// Descripcin:
+// Envia al servidor el nombre del archivo de inventario de su hardware para posteriormente
+// esperar que ste lo solicite y enviarlo por la red.
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN InventarioHardware(TRAMA* ptrTrama)
+{
+ int lon;
+ SOCKET socket_c;
+ char *nfn,*ids,msglog[LONSTD],hrdsrc[LONPRM],hrddst[LONPRM];
+ char modulo[] = "InventarioHardware()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(6,NULL);
+
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(hrdsrc,"/tmp/Chrd-%s",IPlocal); // Nombre que tendra el archivo de inventario
+ sprintf(parametros,"%s %s",nfn,hrdsrc);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(18,NULL);
+ }
+ else{
+ /* Enva fichero de inventario al servidor */
+ sprintf(hrddst,"/tmp/Shrd-%s",IPlocal); // Nombre que tendra el archivo en el Servidor
+ initParametros(ptrTrama,0);
+ sprintf(ptrTrama->parametros,"nfn=recibeArchivo\rnfl=%s\r",hrddst);
+ if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_COMANDO)){
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ errorLog(modulo,42,FALSE);
+ return(FALSE);
+ }
+ /* Espera seal para comenzar el envo */
+ liberaMemoria(ptrTrama);
+ recibeFlag(&socket_c,ptrTrama);
+ /* Enva archivo */
+ if(!sendArchivo(&socket_c,hrdsrc)){
+ errorLog(modulo,57, FALSE);
+ herror=12; // Error de envo de fichero por la red
+ }
+ close(socket_c);
+ muestraMensaje(17,NULL);
+ }
+
+ /* Envia respuesta de ejecucin de la funcin de interface */
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_InventarioHardware");
+ lon+=sprintf(ptrTrama->parametros+lon,"hrd=%s\r",hrddst);
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+// ________________________________________________________________________________________________________
+// Funcin: InventarioSoftware
+//
+// Descripcin:
+// Crea el inventario software de un sistema operativo instalado en una particin.
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN InventarioSoftware(TRAMA* ptrTrama)
+{
+ char *nfn,*ids,msglog[LONSTD];
+ char modulo[] = "InventarioSoftware()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ nfn=copiaParametro("nfn",ptrTrama);
+ ids=copiaParametro("ids",ptrTrama);
+ muestraMensaje(7,NULL);
+ InventariandoSoftware(ptrTrama,TRUE,nfn);
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ muestraMenu();
+ return(TRUE);
+}
+// ________________________________________________________________________________________________________
+//
+// Funcin: InventariandoSoftware
+//
+// Descripcin:
+// Envia al servidor el nombre del archivo de inventario de su software para posteriormente
+// esperar que ste lo solicite y enviarlo por la red.
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// sw: switch que indica si la funcin es llamada por el comando InventarioSoftware(true) o CrearImagen(false)
+// nfn: Nombre de la funcin del Interface que implementa el comando
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN InventariandoSoftware(TRAMA* ptrTrama,BOOLEAN sw,char *nfn)
+{
+ int lon;
+ SOCKET socket_c;
+ char *dsk,*par,msglog[LONSTD],sftsrc[LONPRM],sftdst[LONPRM];
+ char modulo[] = "InventariandoSoftware()";
+
+ dsk=copiaParametro("dsk",ptrTrama); // Disco
+ par=copiaParametro("par",ptrTrama);
+
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(sftsrc,"/tmp/CSft-%s-%s",IPlocal,par); // Nombre que tendra el archivo de inventario
+ sprintf(parametros,"%s %s %s %s",nfn,dsk,par,sftsrc);
+
+ herror=interfaceAdmin(interface,parametros,NULL);
+ herror=0;
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(20,NULL);
+ }
+ else{
+ /* Enva fichero de inventario al servidor */
+ sprintf(sftdst,"/tmp/Ssft-%s-%s",IPlocal,par); // Nombre que tendra el archivo en el Servidor
+ initParametros(ptrTrama,0);
+
+ sprintf(ptrTrama->parametros,"nfn=recibeArchivo\rnfl=%s\r",sftdst);
+ if(!enviaMensajeServidor(&socket_c,ptrTrama,MSG_COMANDO)){
+ errorLog(modulo,42,FALSE);
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ return(FALSE);
+ }
+ /* Espera seal para comenzar el envo */
+ liberaMemoria(ptrTrama);
+ if(!recibeFlag(&socket_c,ptrTrama)){
+ errorLog(modulo,17,FALSE);
+ }
+ /* Enva archivo */
+ if(!sendArchivo(&socket_c,sftsrc)){
+ errorLog(modulo,57, FALSE);
+ herror=12; // Error de envo de fichero por la red
+ }
+ close(socket_c);
+ muestraMensaje(19,NULL);
+ }
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_InventarioSoftware");
+ lon+=sprintf(ptrTrama->parametros+lon,"par=%s\r",par);
+ lon+=sprintf(ptrTrama->parametros+lon,"sft=%s\r",sftdst);
+ if(!sw)
+ respuestaEjecucionComando(ptrTrama,herror,"0");
+
+ liberaMemoria(dsk);
+ liberaMemoria(par);
+ return(TRUE);
+}
+// ________________________________________________________________________________________________________
+// Funcin: EjecutarScript
+//
+// Descripcin:
+// Ejecuta cdigo de script
+// Parmetros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//______________________________________________________________________________________________________
+BOOLEAN EjecutarScript(TRAMA* ptrTrama)
+{
+ int lon;
+ char *nfn,*aux,*ids,*scp,*cfg,msglog[LONSTD];
+ char modulo[] = "EjecutarScript()";
+
+ if (ndebug>=DEBUG_MAXIMO) {
+ sprintf(msglog, "%s:%s",tbMensajes[21],modulo);
+ infoDebug(msglog);
+ }
+ aux=copiaParametro("scp",ptrTrama);
+ scp=URLDecode(aux);
+ muestraMensaje(8,NULL);
+ /* Nombre del archivo de script */
+ char filescript[LONPRM];
+ sprintf(filescript,"/tmp/_script_%s",IPlocal);
+ escribeArchivo(filescript,scp);
+ nfn=copiaParametro("nfn",ptrTrama);
+ sprintf(interface,"%s/%s",pathinterface,nfn);
+ sprintf(parametros,"%s %s",nfn,filescript);
+ herror=interfaceAdmin(interface,parametros,NULL);
+ if(herror){
+ sprintf(msglog,"%s:%s",tbErrores[86],nfn);
+ errorInfo(modulo,msglog);
+ muestraMensaje(21,NULL);
+ }
+ else
+ muestraMensaje(22,NULL);
+
+ // Toma configuracin de particiones
+ cfg=LeeConfiguracion();
+ if(!cfg){ // No se puede recuperar la configuracin del cliente
+ errorLog(modulo,36,FALSE);
+ herror=36;
+ }
+
+ ids=copiaParametro("ids",ptrTrama);
+
+ //herror=ejecutarCodigoBash(scp);
+ initParametros(ptrTrama,0);
+ lon=sprintf(ptrTrama->parametros,"nfn=%s\r","RESPUESTA_EjecutarScript");
+ lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuracin de los Sistemas Operativos del cliente
+ respuestaEjecucionComando(ptrTrama,herror,ids);
+
+ liberaMemoria(nfn);
+ liberaMemoria(ids);
+ liberaMemoria(aux);
+ liberaMemoria(scp);
+ liberaMemoria(cfg);
+
+ muestraMenu();
+
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: respuestaEjecucionComando
+//
+// Descripcin:
+// Envia una respuesta a una ejecucion de comando al servidor de Administracin
+// Parmetros:
+// - ptrTrama: contenido del mensaje
+// - res: Resultado de la ejecucin (Cdigo de error devuelto por el script ejecutado)
+// - ids: Identificador de la sesion (En caso de no haber seguimiento es NULO)
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+// ________________________________________________________________________________________________________
+BOOLEAN respuestaEjecucionComando(TRAMA* ptrTrama,int res,char *ids)
+{
+ int lon;
+ SOCKET socket_c;
+ char modulo[] = "respuestaEjecucionComando()";
+
+ lon=strlen(ptrTrama->parametros);
+ if(ids){ // Existe seguimiento
+ lon+=sprintf(ptrTrama->parametros+lon,"ids=%s\r",ids); // Aade identificador de la sesin
+ }
+ if (res==0){ // Resultado satisfactorio
+ lon+=sprintf(ptrTrama->parametros+lon,"res=%s\r","1");
+ lon+=sprintf(ptrTrama->parametros+lon,"der=%s\r","");
+ }
+ else{ // Algn error
+ lon+=sprintf(ptrTrama->parametros+lon,"res=%s\r","2");
+ if(res>MAXERRORSCRIPT)
+ lon+=sprintf(ptrTrama->parametros+lon,"der=%s (Error de script:%d)\r",tbErroresScripts[0],res);// Descripcin del error
+ else
+ lon+=sprintf(ptrTrama->parametros+lon,"der=%s\r",tbErroresScripts[res]);// Descripcin del error
+ }
+ if(!(enviaMensajeServidor(&socket_c,ptrTrama,MSG_NOTIFICACION))){
+ errorLog(modulo,44,FALSE);
+ return(FALSE);
+ }
+
+ close(socket_c);
+ return(TRUE);
+}
+// ________________________________________________________________________________________________________
+// Funcin: gestionaTrama
+//
+// Descripcin:
+// Procesa las tramas recibidas.
+// Parametros:
+// ptrTrama: contenido del mensaje
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+// ________________________________________________________________________________________________________
+BOOLEAN gestionaTrama(TRAMA *ptrTrama)
+{
+ int i, res;
+ char *nfn;
+ char modulo[] = "gestionaTrama()";
+
+ INTROaFINCAD(ptrTrama);
+ nfn = copiaParametro("nfn", ptrTrama); // Toma nombre de funcin
+ for (i = 0; i < MAXIMAS_FUNCIONES; i++) { // Recorre funciones que procesan las tramas
+ res = strcmp(tbfuncionesClient[i].nf, nfn);
+ if (res == 0) { // Encontrada la funcin que procesa el mensaje
+ liberaMemoria(nfn);
+ return(tbfuncionesClient[i].fptr(ptrTrama)); // Invoca la funcin
+ }
+ }
+
+ liberaMemoria(nfn);
+
+ /* Slo puede ser un comando personalizado
+ if (ptrTrama->tipo==MSG_COMANDO)
+ return(Comando(ptrTrama));
+ */
+ errorLog(modulo, 18, FALSE);
+ return (FALSE);
+}
+//________________________________________________________________________________________________________
+// Funcin: ejecutaArchivo
+//
+// Descripcin:
+// Ejecuta los comando contenido en un archivo (cada comando y sus parametros separados por un
+// salto de linea.
+// Parmetros:
+// filecmd: Nombre del archivo de comandos
+// ptrTrama: Puntero a una estructura TRAMA usada en las comunicaciones por red (No debe ser NULL)
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+//________________________________________________________________________________________________________
+BOOLEAN ejecutaArchivo(char* filecmd,TRAMA *ptrTrama)
+{
+ char* buffer,*lineas[MAXIMAS_LINEAS];
+ int i,numlin;
+ char modulo[] = "ejecutaArchivo()";
+
+ buffer=leeArchivo(filecmd);
+ if(buffer){
+ numlin = splitCadena(lineas, buffer, '@');
+ initParametros(ptrTrama,0);
+ for (i = 0; i < numlin; i++) {
+ if(strlen(lineas[i])>0){
+ strcpy(ptrTrama->parametros,lineas[i]);
+ strcat(ptrTrama->parametros,"\rMCDJ@"); // Fin de trama
+ if(!gestionaTrama(ptrTrama)){ // Anlisis de la trama
+ errorLog(modulo,39,FALSE);
+ //return(FALSE);
+ }
+ }
+ }
+ }
+ liberaMemoria(buffer);
+ return(TRUE);
+}
+//______________________________________________________________________________________________________
+// Funcin: enviaMensajeServidor
+//
+// Descripcin:
+// Envia un mensaje al servidor de Administracin
+// Parmetros:
+// - socket_c: (Salida) Socket utilizado para el envo
+// - ptrTrama: contenido del mensaje
+// - tipo: Tipo de mensaje
+// C=Comando, N=Respuesta a un comando, P=Peticion,R=Respuesta a una peticin, I=Informacion
+// Devuelve:
+// TRUE: Si el proceso es correcto
+// FALSE: En caso de ocurrir algn error
+// ________________________________________________________________________________________________________
+BOOLEAN enviaMensajeServidor(SOCKET *socket_c,TRAMA *ptrTrama,char tipo)
+{
+ int lon;
+ char modulo[] = "enviaMensajeServidor()";
+
+ *socket_c=abreConexion();
+ if(*socket_c==INVALID_SOCKET){
+ errorLog(modulo,38,FALSE); // Error de conexin con el servidor
+ return(FALSE);
+ }
+ ptrTrama->arroba='@'; // Cabecera de la trama
+ strncpy(ptrTrama->identificador,"JMMLCAMDJ_MCDJ",14); // identificador de la trama
+ ptrTrama->tipo=tipo; // Tipo de mensaje
+ lon=strlen(ptrTrama->parametros); // Compone la trama
+ lon+=sprintf(ptrTrama->parametros+lon,"iph=%s\r",IPlocal); // Ip del ordenador
+ lon+=sprintf(ptrTrama->parametros+lon,"ido=%s\r",idordenador); // Identificador del ordenador
+ lon+=sprintf(ptrTrama->parametros+lon,"npc=%s\r",nombreordenador); // Nombre del ordenador
+ lon+=sprintf(ptrTrama->parametros+lon,"idc=%s\r",idcentro); // Identificador del centro
+ lon+=sprintf(ptrTrama->parametros+lon,"ida=%s\r",idaula); // Identificador del aula
+
+ if (!mandaTrama(socket_c,ptrTrama)) {
+ errorLog(modulo,26,FALSE);
+ return (FALSE);
+ }
+ return(TRUE);
+}
+// ********************************************************************************************************
+// PROGRAMA PRINCIPAL (CLIENTE)
+// ********************************************************************************************************
+int main(int argc, char *argv[])
+{
+ TRAMA *ptrTrama;
+ char modulo[] = "main()";
+
+ ptrTrama=(TRAMA *)reservaMemoria(sizeof(TRAMA));
+ if (ptrTrama == NULL) { // No hay memoria suficiente para el bufer de las tramas
+ errorLog(modulo, 3, FALSE);
+ exit(EXIT_FAILURE);
+ }
+ /*--------------------------------------------------------------------------------------------------------
+ Validacin de parmetros de ejecucin y fichero de configuracin
+ ---------------------------------------------------------------------------------------------------------*/
+ if (!validacionParametros(argc, argv,3)) // Valida parmetros de ejecucin
+ exit(EXIT_FAILURE);
+
+ if (!tomaConfiguracion(szPathFileCfg)) // Toma parametros de configuracin
+ exit(EXIT_FAILURE);
+ /*--------------------------------------------------------------------------------------------------------
+ Carga catlogo de funciones que procesan las tramas
+ ---------------------------------------------------------------------------------------------------------*/
+ int cf = 0;
+
+ strcpy(tbfuncionesClient[cf].nf, "RESPUESTA_AutoexecCliente");
+ tbfuncionesClient[cf++].fptr = &RESPUESTA_AutoexecCliente;
+
+ strcpy(tbfuncionesClient[cf].nf, "RESPUESTA_InclusionCliente");
+ tbfuncionesClient[cf++].fptr = &RESPUESTA_InclusionCliente;
+
+ strcpy(tbfuncionesClient[cf].nf, "NoComandosPtes");
+ tbfuncionesClient[cf++].fptr = &NoComandosPtes;
+
+ strcpy(tbfuncionesClient[cf].nf, "Actualizar");
+ tbfuncionesClient[cf++].fptr = &Actualizar;
+
+ strcpy(tbfuncionesClient[cf].nf, "Purgar");
+ tbfuncionesClient[cf++].fptr = &Purgar;
+
+ strcpy(tbfuncionesClient[cf].nf, "ConsolaRemota");
+ tbfuncionesClient[cf++].fptr = &ConsolaRemota;
+
+ strcpy(tbfuncionesClient[cf].nf, "Sondeo");
+ tbfuncionesClient[cf++].fptr = &Sondeo;
+
+ strcpy(tbfuncionesClient[cf].nf, "Arrancar");
+ tbfuncionesClient[cf++].fptr = &Arrancar;
+
+ strcpy(tbfuncionesClient[cf].nf, "Apagar");
+ tbfuncionesClient[cf++].fptr = &Apagar;
+
+ strcpy(tbfuncionesClient[cf].nf, "Reiniciar");
+ tbfuncionesClient[cf++].fptr = &Reiniciar;
+
+ strcpy(tbfuncionesClient[cf].nf, "IniciarSesion");
+ tbfuncionesClient[cf++].fptr = &IniciarSesion;
+
+ strcpy(tbfuncionesClient[cf].nf, "CrearImagen");
+ tbfuncionesClient[cf++].fptr = &CrearImagen;
+
+ strcpy(tbfuncionesClient[cf].nf, "CrearImagenBasica");
+ tbfuncionesClient[cf++].fptr = &CrearImagenBasica;
+
+ strcpy(tbfuncionesClient[cf].nf, "CrearSoftIncremental");
+ tbfuncionesClient[cf++].fptr = &CrearSoftIncremental;
+
+ strcpy(tbfuncionesClient[cf].nf, "RestaurarImagen");
+ tbfuncionesClient[cf++].fptr = &RestaurarImagen;
+
+ strcpy(tbfuncionesClient[cf].nf, "RestaurarImagenBasica");
+ tbfuncionesClient[cf++].fptr = &RestaurarImagenBasica;
+
+ strcpy(tbfuncionesClient[cf].nf, "RestaurarSoftIncremental");
+ tbfuncionesClient[cf++].fptr = &RestaurarSoftIncremental;
+
+
+ strcpy(tbfuncionesClient[cf].nf, "Configurar");
+ tbfuncionesClient[cf++].fptr = &Configurar;
+
+ strcpy(tbfuncionesClient[cf].nf, "EjecutarScript");
+ tbfuncionesClient[cf++].fptr = &EjecutarScript;
+
+ strcpy(tbfuncionesClient[cf].nf, "InventarioHardware");
+ tbfuncionesClient[cf++].fptr = &InventarioHardware;
+
+ strcpy(tbfuncionesClient[cf].nf, "InventarioSoftware");
+ tbfuncionesClient[cf++].fptr = &InventarioSoftware;
+
+ /*--------------------------------------------------------------------------------------------------------
+ Toma direccin IP del cliente
+ ---------------------------------------------------------------------------------------------------------*/
+ if(!tomaIPlocal()){ // Error al recuperar la IP local
+ errorLog(modulo,0,FALSE);
+ exit(EXIT_FAILURE);
+ }
+ /*--------------------------------------------------------------------------------------------------------
+ Inicio de sesin
+ ---------------------------------------------------------------------------------------------------------*/
+ infoLog(1); // Inicio de sesin
+ infoLog(3); // Abriendo sesin en el servidor de Administracin;
+ /*--------------------------------------------------------------------------------------------------------
+ Inclusin del cliente en el sistema
+ ---------------------------------------------------------------------------------------------------------*/
+ if(!inclusionCliente(ptrTrama)){ // Ha habido algn problema al abrir sesin
+ errorLog(modulo,0,FALSE);
+ exit(EXIT_FAILURE);
+ }
+ infoLog(4); // Cliente iniciado
+
+ /*--------------------------------------------------------------------------------------------------------
+ Procesamiento de la cache
+ ---------------------------------------------------------------------------------------------------------*/
+ infoLog(23); // Abriendo sesin en el servidor de Administracin;
+ if(!cuestionCache(cache)){
+ errorLog(modulo,0,FALSE);
+ exit(EXIT_FAILURE);
+ }
+ /*--------------------------------------------------------------------------------------------------------
+ Ejecucin del autoexec
+ ---------------------------------------------------------------------------------------------------------*/
+ if(atoi(idproautoexec)>0){ // Ejecucin de procedimiento Autoexec
+ infoLog(5);
+ if(!autoexecCliente(ptrTrama)){ // Ejecucin fichero autoexec
+ errorLog(modulo,0,FALSE);
+ exit(EXIT_FAILURE);
+ }
+ }
+ /*--------------------------------------------------------------------------------------------------------
+ Comandos pendientes
+ ---------------------------------------------------------------------------------------------------------*/
+ infoLog(6); // Procesa comandos pendientes
+ if(!comandosPendientes(ptrTrama)){ // Ejecucin de acciones pendientes
+ errorLog(modulo,0,FALSE);
+ exit(EXIT_FAILURE);
+ }
+ infoLog(7); // Acciones pendientes procesadas
+ /*--------------------------------------------------------------------------------------------------------
+ Bucle de recepcin de comandos
+ ---------------------------------------------------------------------------------------------------------*/
+ muestraMenu();
+ procesaComandos(ptrTrama); // Bucle para procesar comandos interactivos
+ /*--------------------------------------------------------------------------------------------------------
+ Fin de la sesin
+ ---------------------------------------------------------------------------------------------------------*/
+ exit(EXIT_SUCCESS);
+}
diff --git a/admin/WebConsole/comandos/RestaurarSoftIncremental.php b/admin/WebConsole/comandos/RestaurarSoftIncremental.php index 5f63cfe3..997fac6a 100644 --- a/admin/WebConsole/comandos/RestaurarSoftIncremental.php +++ b/admin/WebConsole/comandos/RestaurarSoftIncremental.php @@ -197,7 +197,7 @@ function opcionesAdicionales() { global $TbMsg; - $tablaHtml='<table width="95%" align=center border=0 cellPadding=0 cellSpacing=0 class="tabla_accesos">'; + $tablaHtml='<table style="display:none" width="95%" align=center border=0 cellPadding=0 cellSpacing=0 class="tabla_accesos">'; $tablaHtml.='<tr><th colspan=8 align=center><b> '.$TbMsg[11].' </b></th></tr>'; $tablaHtml.='<tr id="trOpc"> <td align=right>'.$TbMsg[35].'</td> diff --git a/admin/WebConsole/idiomas/javascripts/esp/propiedades_trabajos_esp.js b/admin/WebConsole/idiomas/javascripts/esp/propiedades_trabajos_esp.js deleted file mode 100644 index a4d1ab54..00000000 --- a/admin/WebConsole/idiomas/javascripts/esp/propiedades_trabajos_esp.js +++ /dev/null @@ -1,7 +0,0 @@ -//________________________________________________________________________________________________________ -// -// Fichero de idiomas javascript: propiedades_trabajos_esp.js -// Idioma: Español -//________________________________________________________________________________________________________ -TbMsg=new Array; -TbMsg[0]="Debe introducir un nombre para este trabajo"; diff --git a/admin/WebConsole/idiomas/javascripts/esp/trabajostareas_esp.js b/admin/WebConsole/idiomas/javascripts/esp/trabajostareas_esp.js deleted file mode 100644 index 1b593886..00000000 --- a/admin/WebConsole/idiomas/javascripts/esp/trabajostareas_esp.js +++ /dev/null @@ -1,10 +0,0 @@ -//____________________________________________________________________________ -// -// Fichero de idiomas javascript: trabajostareas_esp.js -// Idioma: Español -//____________________________________________________________________________ -TbMsg=new Array; -TbMsg[0]="La Tarea ha sido incluida correctamente en este trabajo"; -TbMsg[1]="ATENCIÓN: Debe introducir un número de orden"; -TbMsg[2]="La Tarea ha sido excluida correctamente de este trabajo"; -TbMsg[3]="La Tarea ha sido modificada correctamente"; |