diff --git a/sources/clients/README.es.txt b/sources/clients/README.es.txt deleted file mode 100644 index 56900d8..0000000 --- a/sources/clients/README.es.txt +++ /dev/null @@ -1,9 +0,0 @@ -OpenGnsys Services for Clients README -======================================= - - -Este directorio contiene el código fuente de los servicios OpenGnsys específicos para clientes. - -- ogAdmClient servicio para cliente ogLive que atiende peticiones de OpenGnsys Server -- ogagent OGAgent: agente modular para sistemas operativos con API REST - diff --git a/sources/clients/ogAdmClient/Makefile b/sources/clients/ogAdmClient/Makefile deleted file mode 100644 index d3628c9..0000000 --- a/sources/clients/ogAdmClient/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# makefile - -# Nombre del proyecto -PROYECTO := ogAdmClient - -# Directorios y librerias -DIRS := -LIBS := -static - -# Opciones de compilacion -OPCS := -m32 -O0 -g -Wall # Depuracion -#OPCS := -m32 -O3 -Wall # Optimizacion - -# Ficheros objetos -OBJS := sources/ogAdmClient.o - -all: $(PROYECTO) - -$(PROYECTO): $(OBJS) - gcc $(OPCS) $(DIRS) $(LIBS) $(OBJS) -o $(PROYECTO) -# strip $(PROYECTO) # Optimizacion - -clean: - rm -f $(PROYECTO) $(OBJS) - -sources/%.o: sources/%.c - gcc $(OPCS) -I ../../Includes -c -o"$@" "$<" - - - - diff --git a/sources/clients/ogAdmClient/ogAdmClient.cfg b/sources/clients/ogAdmClient/ogAdmClient.cfg deleted file mode 100644 index b15e740..0000000 --- a/sources/clients/ogAdmClient/ogAdmClient.cfg +++ /dev/null @@ -1,5 +0,0 @@ -ServidorAdm=SERVERIP -PUERTO=2008 -PATHINTERFACE=/opt/opengnsys/interfaceAdm -UrlMenu=OPENGNSYSURL/varios/menubrowser.php -UrlMsg=http://localhost/cgi-bin/httpd-log.sh \ No newline at end of file diff --git a/sources/clients/ogAdmClient/sources/ogAdmClient.c b/sources/clients/ogAdmClient/sources/ogAdmClient.c deleted file mode 100644 index 6f87cc4..0000000 --- a/sources/clients/ogAdmClient/sources/ogAdmClient.c +++ /dev/null @@ -1,2331 +0,0 @@ -// ******************************************************************************************************** -// 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= 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= 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>>>>>>>>>>>>>>>>>>>>>>>>> - 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) -{ - pid_t pidbrowser; // Identificador del proceso que se crea para mostrar una página web con el browser - int resul=0; - char* argumentos[4]; - char modulo[] = "cargaPaginaWeb()"; - - // Destruye los procesos del Browser y lanza uno nuevo. - system("pkill -9 browser"); - - 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()"; - int herrorcfg; - - // 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"); - herrorcfg=interfaceAdmin(interface,NULL,parametroscfg); - - if(herrorcfg){ // 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) -{ - 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)){ // 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) -{ - - 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) -{ - 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); - 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) -{ - 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); -} -//_____________________________________________________________________________________________________ -// 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) -{ - 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); -} -//_____________________________________________________________________________________________________ -// 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) -{ - 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); -} -//______________________________________________________________________________________________________ -// 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,"dsk=%s\r",dsk); // Número de disco - 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 travers 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,"dsk=%s\r",dsk); // Número de disco - 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,*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); // 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 - - 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(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 algún error en el proceso de creación de imagen básica - } - else - muestraMensaje(26,NULL);// El proceso de creación de imagen incremental 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,"dsk=%s\r",dsk); // Número de disco - 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(msy); - 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,*cfg,*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); - - /* Obtener nueva configuración */ - cfg=LeeConfiguracion(); - if(!cfg){ // No se puede recuperar la configuración del cliente - errorLog(modulo,36,FALSE); - } - - /* 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,"dsk=%s\r",dsk); // Número de disco - 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 - lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuración de discos - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(nfn); - liberaMemoria(dsk); - liberaMemoria(par); - liberaMemoria(idi); - liberaMemoria(nci); - liberaMemoria(ipr); - liberaMemoria(ifs); - liberaMemoria(cfg); - 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,*cfg,*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); // 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 - msy=copiaParametro("msy",ptrTrama); // Metodo de sincronizacion - - 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 %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); - - /* Obtener nueva configuración */ - cfg=LeeConfiguracion(); - if(!cfg){ // No se puede recuperar la configuración del cliente - errorLog(modulo,36,FALSE); - } - - /* 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,"dsk=%s\r",dsk); // Número de disco - 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 - lon+=sprintf(ptrTrama->parametros+lon,"cfg=%s\r",cfg); // Configuración de discos - respuestaEjecucionComando(ptrTrama,herror,ids); - - liberaMemoria(nfn); - liberaMemoria(dsk); - liberaMemoria(par); - liberaMemoria(idi); - liberaMemoria(nci); - liberaMemoria(rti); - liberaMemoria(ifs); - liberaMemoria(cfg); - 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); -} -//______________________________________________________________________________________________________ -// 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,*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); // 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); - - tpt=copiaParametro("tpt",ptrTrama); // Tipo de trasnmisión unicast o multicast - msy=copiaParametro("msy",ptrTrama); // Metodo de sincronizacion - - 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 %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 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,"dsk=%s\r",dsk); // Número de disco - 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(tpt); - liberaMemoria(msy); - - liberaMemoria(whl); - liberaMemoria(eli); - liberaMemoria(cmp); - - 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); -} - -BOOLEAN EjecutaComandosPendientes(TRAMA* ptrTrama) -{ - 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; - - strcpy(tbfuncionesClient[cf].nf, "EjecutaComandosPendientes"); - tbfuncionesClient[cf++].fptr = &EjecutaComandosPendientes; - - /*-------------------------------------------------------------------------------------------------------- - 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); -} diff --git a/sources/clients/ogAdmClient/sources/ogAdmClient.h b/sources/clients/ogAdmClient/sources/ogAdmClient.h deleted file mode 100644 index da0a5c3..0000000 --- a/sources/clients/ogAdmClient/sources/ogAdmClient.h +++ /dev/null @@ -1,183 +0,0 @@ -// ******************************************************************************************************** -// Cliernte: ogAdmClient -// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla -// Fecha Creación: Marzo-2010 -// Fecha Última modificación: Marzo-2010 -// Nombre del fichero: ogAdmClient.h -// Descripción :Este fichero implementa el cliente general del sistema -// ******************************************************************************************************** -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "ogAdmLib.h" -// ________________________________________________________________________________________________________ -// Variables globales -// ________________________________________________________________________________________________________ -char *idordenador; // Identificador del ordenador -char *nombreordenador; // Nombre del ordenador -char *cache; // Tamaño de la caché -char *idproautoexec; // Identificador del procedimiento de autoexec -char *idcentro; // Identificador de la Unidad Organizativa -char *idaula; // Identificador del aula -char IPlocal[LONIP]; // Ip local - -char servidoradm[LONPRM]; // Dirección IP del servidor de administración -char puerto[LONPRM]; // Puerto de comunicación -char pathinterface[LONPRM]; // Path donde está la interface entre la administración y el módulo de clonación - -char interface[LONFUN]; // Nombre del módulo,función o script de la interface con el módulo de administración -char parametros[LONSTD]; // Parámetros para la llamada -int herror; - -BOOLEAN CMDPTES; // Para bucle de comandos pendientes - - -char urlmenu[MAXLONURL]; // Url de la pagina de menu para el browser -char urlmsg[MAXLONURL]; // Url de la página de mensajed para el browser - - -typedef struct{ // Estructura usada para referenciar las funciones que procesan las tramas - char nf[LONFUN]; // Nombre de la función - BOOLEAN (*fptr)(TRAMA*); // Puntero a la función que procesa la trama -}MSGFUN; -MSGFUN tbfuncionesClient[MAXIMAS_FUNCIONES]; -// ________________________________________________________________________________________________________ -// Tabla de errores de la ejecución de los scripts -// ________________________________________________________________________________________________________ -char* tbErroresScripts[]={"Se han generado errores desconocidos. No se puede continuar la ejecución de este módulo",\ - "001-Formato de ejecución incorrecto.",\ - "002-Fichero o dispositivo no encontrado",\ - "003-Error en partición de disco",\ - "004-Partición o fichero bloqueado",\ - "005-Error al crear o restaurar una imagen",\ - "006-Sin sistema operativo",\ - "007-Programa o función BOOLEAN no ejecutable",\ - "008-Error en la creación del archivo de eco para consola remota",\ - "009-Error en la lectura del archivo temporal de intercambio",\ - "010-Error al ejecutar la llamada a la interface de administración",\ - "011-La información retornada por la interface de administración excede de la longitud permitida",\ - "012-Error en el envío de fichero por la red",\ - "013-Error en la creación del proceso hijo",\ - "014-Error de escritura en destino",\ - "015-Sin Cache en el Cliente",\ - "016-No hay espacio en la cache para almacenar fichero-imagen",\ - "017-Error al Reducir el Sistema Archivos",\ - "018-Error al Expandir el Sistema Archivos",\ - "019-Valor fuera de rango o no válido.",\ - "020-Sistema de archivos desconocido o no se puede montar",\ - "021-Error en partición de caché local",\ - "022-El disco indicado no contiene una particion GPT",\ - "023-Error no definido",\ - "024-Error no definido",\ - "025-Error no definido",\ - "026-Error no definido",\ - "027-Error no definido",\ - "028-Error no definido",\ - "029-Error no definido",\ - "030-Error al restaurar imagen - Imagen mas grande que particion",\ - "031-Error al realizar el comando updateCache",\ - "032-Error al formatear",\ - "033-Archivo de imagen corrupto o de otra versión de partclone",\ - "034-Error no definido",\ - "035-Error no definido",\ - "036-Error no definido",\ - "037-Error no definido",\ - "038-Error no definido",\ - "039-Error no definido",\ - "040-Error imprevisto no definido",\ - "041-Error no definido",\ - "042-Error no definido",\ - "043-Error no definido",\ - "044-Error no definido",\ - "045-Error no definido",\ - "046-Error no definido",\ - "047-Error no definido",\ - "048-Error no definido",\ - "049-Error no definido",\ - "050-Error en la generación de sintaxis de transferenica unicast",\ - "051-Error en envio UNICAST de una particion",\ - "052-Error en envio UNICAST de un fichero",\ - "053-Error en la recepcion UNICAST de una particion",\ - "054-Error en la recepcion UNICAST de un fichero",\ - "055-Error en la generacion de sintaxis de transferenica Multicast",\ - "056-Error en envio MULTICAST de un fichero",\ - "057-Error en la recepcion MULTICAST de un fichero",\ - "058-Error en envio MULTICAST de una particion",\ - "059-Error en la recepcion MULTICAST de una particion",\ - "060-Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER",\ - "061-Error no definido",\ - "062-Error no definido",\ - "063-Error no definido",\ - "064-Error no definido",\ - "065-Error no definido",\ - "066-Error no definido",\ - "067-Error no definido",\ - "068-Error no definido",\ - "069-Error no definido",\ - "070-Error al montar una imagen sincronizada.",\ - "071-Imagen no sincronizable (es monolitica).",\ - "072-Error al desmontar la imagen.",\ - "073-No se detectan diferencias entre la imagen basica y la particion.",\ - "074-Error al sincronizar, puede afectar la creacion/restauracion de la imagen.",\ - "Error desconocido " - }; - #define MAXERRORSCRIPT 74 // Error máximo cometido -// ________________________________________________________________________________________________________ -// Prototipo de funciones -// ________________________________________________________________________________________________________ -BOOLEAN autoexecCliente(TRAMA*); -BOOLEAN RESPUESTA_AutoexecCliente(TRAMA*); -void procesaComandos(TRAMA*); - -BOOLEAN tomaConfiguracion(char*); -BOOLEAN tomaIPlocal(void); -void scriptLog(const char *,int ); - -BOOLEAN gestionaTrama(TRAMA *); -BOOLEAN inclusionCliente(); -char* LeeConfiguracion(); -BOOLEAN RESPUESTA_InclusionCliente(TRAMA *); - -BOOLEAN comandosPendientes(TRAMA*); -BOOLEAN NoComandosPtes(TRAMA *); - -BOOLEAN respuestaEjecucionComando(TRAMA *,int,char*); -BOOLEAN Sondeo(TRAMA *); -BOOLEAN Actualizar(TRAMA *); -int Purgar(TRAMA* ); - -BOOLEAN ConsolaRemota(TRAMA*); - -BOOLEAN Arrancar(TRAMA *); -BOOLEAN Apagar(TRAMA *); -BOOLEAN Reiniciar(TRAMA *); -BOOLEAN IniciarSesion(TRAMA *); -BOOLEAN CrearImagen(TRAMA *); -BOOLEAN CrearImagenBasica(TRAMA *); -BOOLEAN CrearSoftIncremental(TRAMA*); - -BOOLEAN InventarioHardware(TRAMA *); -BOOLEAN InventariandoSoftware(TRAMA *,BOOLEAN,char*); -BOOLEAN EjecutarScript(TRAMA *); -BOOLEAN ejecutaArchivo(char*,TRAMA*); - -BOOLEAN cuestionCache(char*); -int cargaPaginaWeb(char *); -void muestraMenu(void); -void muestraMensaje(int idx,char*); - -BOOLEAN enviaMensajeServidor(SOCKET *,TRAMA *,char); - - - - diff --git a/sources/clients/ogAdmClient/sources/ogAdmClient.o b/sources/clients/ogAdmClient/sources/ogAdmClient.o deleted file mode 100644 index e8bec64..0000000 Binary files a/sources/clients/ogAdmClient/sources/ogAdmClient.o and /dev/null differ diff --git a/sources/interface/Apagar b/sources/interface/Apagar deleted file mode 100755 index ae1e5ba..0000000 --- a/sources/interface/Apagar +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -poweroff -exit 0 diff --git a/sources/interface/CambiarAcceso b/sources/interface/CambiarAcceso deleted file mode 100755 index f698d19..0000000 --- a/sources/interface/CambiarAcceso +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -#______________________________________ -# -# PARAMETROS RECIBIDOS DESDE EL CLIENTE -# $1 modo (admin, user) -#______________________________________ - -# Error si llamada no se realliza desde OpenGnsys Client. -PROG=$(basename $0) -CALLER=$(ogGetCaller) -if ! $(ogCheckStringInGroup "$CALLER" "CrearImagen ConsolaRemota CrearImagenBasica CrearSoftIncremental"); then - ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG" - exit $? -fi - -# Salir si el repositorio está bloquedo (tiene ficheros abiertos). -REPOIP=$(ogGetRepoIp) -if [ -z "$REPOIP" ]; then - ogRaiseError $OG_ERR_NOTFOUND "repo no montado" - exit $? -fi -if ogIsRepoLocked; then - ogRaiseError $OG_ERR_LOCKED "repo $REPOIP" - exit $? -fi - -# Comprobar protocolo y modo de acceso. -PROTO=${ogprotocol:-"smb"} -case "$PROTO" in - nfs|smb) ;; - *) ogRaiseError $OG_ERR_FORMAT "protocolo desconocido $PROTO" - exit $? ;; -esac -case "$1" in - admin) MODE="rw" ;; - user) MODE="ro" ;; - *) ogRaiseError $OG_ERR_FORMAT "modo desconocido $1" - exit $? ;; -esac - -# Desmontar repositorio y volver a montarlo con el modo adecuado. -umount $OGIMG -# Unidad organizativa -[ "$ogunit" != "" ] && OGUNIT="/$ogunit" -ogEcho info "$PROG: Montar repositorio $REPO por $PROTO en modo $1" -case "$PROTO" in - nfs) mount -t nfs $REPOIP:$OGIMG$OGUNIT $OGIMG -o $MODE ;; - smb) PASS=$(grep "^[ ]*\(export \)\?OPTIONS=" /scripts/ogfunctions 2>&1 | \ - sed 's/\(.*\)pass=\(\w*\)\(.*\)/\2/') - PASS=${PASS:-"og"} - mount.cifs //$REPOIP/ogimages$OGUNIT $OGIMG -o $MODE,serverino,acl,username=opengnsys,password=$PASS -esac - diff --git a/sources/interface/Configurar b/sources/interface/Configurar deleted file mode 100755 index e88d073..0000000 --- a/sources/interface/Configurar +++ /dev/null @@ -1,159 +0,0 @@ -#!/bin/bash - - -#Load engine configurator from engine.cfg file. -#Carga el configurador del engine desde el fichero engine.cfg -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - -# Clear temporary file used as log track by httpdlog -# Limpia los ficheros temporales usados como log de seguimieincludento para httpdlog -echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp - -# Registro de inicio de ejecución -ogEcho log session "$MSG_INTERFACE_START $0 $*" - -# Solo ejecutable por OpenGnsys Client. -PATH=$PATH:$(dirname $0) -PROG=$(basename $0) - -#____________________________________________________________________ -# -# El parámetro $2 es el que aporta toda la información y el $1 se queda obsoleto -# Formato de entrada: -# dis=Número de disco -# *=caracter de separación -# che=Vale 0 o 1 -# *=caracter de separación -# $tch=tamaño cache -# != caracter de separación -# -# Y un numero indeterminado de cadenas del tipo siguuenteseparadas por el caracter '$': -# par=Número de particion*cod=Código de partición*sfi=Sistema de ficheros*tam=Tamaño de la partición*ope=Operación -# @= caracter de separación -#____________________________________________________________________ - -# Captura de parámetros (se ignora el 1er parámetro y se eliminan espacios y tabuladores). -#param='dis=1*che=0*tch=70000000!par=1*cpt=NTFS*sfi=NTFS*tam=11000000*ope=0%' -shift -param="$(echo $* | sed 's/[ ]//g')" - -# Activa navegador para ver progreso -coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh - -# Leer los dos bloques de parámetros, separados por '!'. -declare -a TBPRM - -IFS='!' read -a TBPRM <<<"$param" -pparam="${TBPRM[0]}" # Parámetros generales del disco. -sparam="${TBPRM[1]}" # Parámetros de particionado y formateo. - - -# Toma valores de disco y caché, separados por "*". -# Los valores están en las variables $dis: disco, $che: existe cache (1, 0), $tch: Tamaño de la cache. -unset TBPRM -IFS='*' read -a TBPRM <<<"$pparam" -[[ ${TBPRM} =~ = ]] && eval ${TBPRM[@]} # Comprobar asignación antes de exportar valores. - -# Error si no se define el parámetro de disco (dis). -[ -z "$dis" ] && exit $OG_ERR_FORMAT - -# Toma valores de distribución de particiones, separados por "%". -declare -a CFG # Valores de configuración. -declare -a TBP # Tabla de particionado. -declare -a TBF # Tabla de formateo. - -unset TBPRM -IFS='%' read -a TBPRM <<<"$sparam" - -maxp=0 -for ((i=0; i<${#TBPRM[@]}; i++)); do - # Leer datos de la partición, separados por "*". - unset par - IFS='*' read -a CFG <<<"${TBPRM[i]}" 2>/dev/null - [[ ${CFG} =~ = ]] && eval ${CFG[@]} # Comprobar asignación antes de exportar valores. - # Componer datos de particionado. - if [ "$cpt" != "CACHE" ]; then - TBP[par]="$cpt:$tam" - fi - # Si se activa operación de formatear, componer datos de formateo. - if [ "$ope" == 1 ]; then - # Comprobamos que la particion y el s.f sean validos. - ogCheckStringInGroup $cpt "EMPTY EXTENDED LINUX-LVM LVM ZPOOL" - [ $? -ne 0 ] && TBF[par]="$sfi" - fi - # Obtener la partición mayor. - [ $par -gt $maxp ] && maxp=$par -done -#____________________________________________________ -# -# Proceso -#____________________________________________________ - -# Tamaño actual de la cache -CACHESIZE=$(ogGetCacheSize) - -# Desmonta todas las particiones y la caché - -ogEcho session log "[10] $MSG_HELP_ogUnmountAll" -ogUnmountAll $dis &>/dev/null -ogUnmountCache - -# Elimina la tabla de particiones -if [ `ogGetPartitionTableType 1` != 'MSDOS' ]; then - ogDeletePartitionTable $dis - ogExecAndLog COMMAND ogUpdatePartitionTable $dis - - # Crea tabla de particiones MSDOS (NOTA: adaptar para tablas GPT). - ogCreatePartitionTable $dis MSDOS -fi - -# Inicia la cache. -if echo "$sparam" |grep "CACHE" >/dev/null; then - ogEcho session log "[30] $MSG_HELP_ogCreateCache" - ogEcho session log " initCache $tch" - ogExecAndLog COMMAND initCache $tch -fi - -# Definir particionado. -ogEcho session log "[50] $MSG_HELP_ogCreatePartitions" -ogEcho session log " ogCreatePartitions $dis ${TBP[@]}" -ogExecAndLog COMMAND ogCreatePartitions $dis ${TBP[@]} -if [ $? -ne 0 ]; then - kill $COPROC_PID - exit $(ogRaiseError session log $OG_ERR_GENERIC "ogCreatePartitions $dis ${TBP[@]}") -fi -ogExecAndLog COMMAND ogUpdatePartitionTable $dis - -# Formatear particiones -ogEcho session log "[70] $MSG_HELP_ogFormat" - -for ((par=1; par<=$maxp; par++)); do - case "${TBF[par]}" in - CACHE) # Si el tamaño es distinto ya se ha formateado. - if [ "$CACHESIZE" == $tch ]; then - ogEcho session log " ogFormatCache" - ogExecAndLog COMMAND ogFormatCache - fi - ;; - "") ;; - *) ogEcho session log " ogFormatFs $dis $par ${TBF[par]}" - ogExecAndLog COMMAND ogFormatFs $dis $par ${TBF[par]} - if [ $? -ne 0 ]; then - kill $COPROC_PID - exit $(ogRaiseError session log $OG_ERR_GENERIC "ogFormatFs $dis $par ${TBF[par]}"); - fi - ;; - esac -done -RETVAL=$? -# Registro de fin de ejecución -ogEcho log session "$MSG_INTERFACE_END $RETVAL" - -#___________________________________________________________________ -# -# Retorno -#___________________________________________________________________ - -kill $COPROC_PID -exit 0 - diff --git a/sources/interface/ConsolaRemota b/sources/interface/ConsolaRemota deleted file mode 100755 index f569771..0000000 --- a/sources/interface/ConsolaRemota +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -chmod +x $1 -$1>$2 || exit $? diff --git a/sources/interface/CrearImagen b/sources/interface/CrearImagen deleted file mode 100755 index e3b21c7..0000000 --- a/sources/interface/CrearImagen +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -#___________________________________________________ -# -# PARAMETROS RECIBIDOS DESDE EL CLIENTE: -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen (sin extensión) -# $4 Dirección del repositorio (REPO, por defecto) -#___________________________________________________ - - -#$OG_ERR_NOTEXEC Si no es llamada por OG client -#$OG_ERR_LOCKED=4 Si la particion está bloqueada. - - -#Codigos de error del scripts createImage -#@exception OG_ERR_FORMAT # 1 formato incorrecto. -#@exception OG_ERR_PARTITION # 3 Error en partición de disco o en su sistema de archivos -#@exception OG_ERR_IMAGE # 5 Error en funcion ogCreateImage o ogRestoreImage. -#@exception OG_ERR_NOTWRITE # 14 error de escritura -#@exception OG_ERR_NOTCACHE # 15 si cache no existe 15 -#@exception OG_ERR_CACHESIZE # 16 si espacio de la cache local o remota no tiene espacio 16 -#@exception OG_ERR_REDUCEFS # 17 error al reducir sistema de archivos. -#@exception OG_ERR_EXTENDFS # 18 Errror al expandir el sistema de archivos. - - -#Códigos de error de la funcion ogCreateImage - - - -TIME1=$SECONDS - -#Load engine configurator from engine.cfg file. -#Carga el configurador del engine desde el fichero engine.cfg -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - -# Clear temporary file used as log track by httpdlog -# Limpia los ficheros temporales usados como log de seguimiento para httpdlog -echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp - -# Registro de inicio de ejecución -ogEcho log session "$MSG_INTERFACE_START $0 $*" - -# Solo ejecutable por OpenGnsys Client. -PATH=$PATH:$(dirname $0) -PROG=$(basename $0) -CALLER=$(ogGetCaller) -if [ "$CALLER" != "ogAdmClient" ]; then - ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG" - exit $? -fi - -# Valor por defecto para el repositorio. -REPO=${4:-"REPO"} -[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE" -# Si es una ip y es distinta a la del recurso samba cambiamos de REPO. -ogCheckIpAddress $REPO -if [ $? == 0 -o $REPO == "REPO" ] ; then - # Unidad organizativa - [ "$ogunit" != "" ] && OGUNIT="$ogunit" - # Si falla el cambio -> salimos con error repositorio no valido - ogChangeRepo $REPO $OGUNIT || exit $(ogRaiseError $OG_ERR_NOTFOUND '$REPO'; echo $?) - REPO="REPO" -fi - -# Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura, -if [ "$REPO" == "REPO" -a "$boot" != "admin" ] -then - CambiarAcceso admin &>> $OGLOGFILE - RETVAL=$? - [ $RETVAL -gt 0 ] && exit $RETVAL -fi - -ogEcho createImage "$1" "$2" "$4" /"$3" -# Si existe, ejecuta script personalizado "createImageCustom"; si no, llama al genérico "createImage". -if which createImageCustom &>/dev/null; then - createImageCustom "$1" "$2" "$4" /"$3" &>> $OGLOGCOMMAND -else - createImage "$1" "$2" "$4" /"$3" &>> $OGLOGCOMMAND -fi -RETVAL=$? - -# Cambiar acceso a modo usuario, si es necesario. -[ "$REPO" == "REPO" -a "$boot" != "admin" ] && CambiarAcceso user - -# Registro de fin de ejecución -ogEcho log session "$MSG_INTERFACE_END $RETVAL" - -exit $RETVAL - diff --git a/sources/interface/CrearImagenBasica b/sources/interface/CrearImagenBasica deleted file mode 100755 index 8aaf5aa..0000000 --- a/sources/interface/CrearImagenBasica +++ /dev/null @@ -1,98 +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 -# $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 Método de syncronización 1=Sincronización1 2=Sincronizacion2 -# $8 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - - PROG="$(basename $0)" - if [ $# -lt 7 ]; 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 - - #Load engine configurator from engine.cfg file. - #Carga el configurador del engine desde el fichero engine.cfg - [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - - # Clear temporary file used as log track by httpdlog - # Limpia los ficheros temporales usados como log de seguimiento para httpdlog - echo -n "" > $OGLOGSESSION; echo -n "" > $OGLOGCOMMAND - - # Registro de inicio de ejecución - ogEcho log session "$MSG_INTERFACE_START $0 $*" - - # Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura, - PATH=$PATH:$(dirname $0) - CLIENTIP=$(ogGetIpAddress) - [ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO - if [ "$DEST" == "REPO" -a "$boot" != "admin" ]; then - CambiarAcceso admin &>> $OGLOGFILE - RETVAL=$? - [ $RETVAL -gt 0 ] && exit $RETVAL - fi - - if [ $7 -eq 1 ]; then - #sincronizacion1 - ogCrearImagenBasica "$@" - RETVAL=$? - fi - - if [ $7 -eq 2 ]; then - # Sincronizacion2 - flag=$5 - WHOLE=${flag:0:1} - DELFILE=${flag:1:1} - COMPRESS=${flag:2:1} - - # Nota los valores se pasan como variables de entorno, - # la idea es que mas adelante vayan en el fichero PXE. - [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false - [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false - [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false - - # [ "$4" == "0.0.0.0" ] && DEST="CACHE" || DEST="REPO" - - createBaseImage $1 $2 $DEST "$3" - RETVAL=$? - - fi - - # Si estamos en modo user montamos el repositorio en modo lectura. - [ "$DEST" == "REPO" -a "$boot" != "admin" ] && CambiarAcceso user - # Registro de fin de ejecución - ogEcho log session "$MSG_INTERFACE_END $RETVAL" - - - - exit $RETVAL - diff --git a/sources/interface/CrearSoftIncremental b/sources/interface/CrearSoftIncremental deleted file mode 100755 index fc29451..0000000 --- a/sources/interface/CrearSoftIncremental +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# CREAR IMAGEN INCREMENTAL -#___________________________________________________________________ -# -# 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 -# $5 Nombre canónico de la imagen incremental (sin extensión) -# $6 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 -# $7 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la imagen incremental del repositorio antes de crearla -# X1XX: Copiar imagen incremental también a la cache -# 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 Método de syncronización 1=Sincronización1 2=Sincronizacion2 -# $9 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - PROG="$(basename $0)" - 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 - - #Load engine configurator from engine.cfg file. - #Carga el configurador del engine desde el fichero engine.cfg - [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - - # Clear temporary file used as log track by httpdlog - # Limpia los ficheros temporales usados como log de seguimiento para httpdlog - echo -n "" > $OGLOGSESSION; echo -n "" > $OGLOGCOMMAND - - # Registro de inicio de ejecución - ogEcho log session "$MSG_INTERFACE_START $0 $*" - - - # Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura, - PATH=$PATH:$(dirname $0) - CLIENTIP=$(ogGetIpAddress) - [ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO - if [ "$DEST" == "REPO" -a "$boot" != "admin" ]; then - CambiarAcceso admin &>> $OGLOGFILE - RETVAL=$? - [ $RETVAL -gt 0 ] && exit $RETVAL - fi - - if [ $8 -eq 1 ]; then - #sincronizacion1 - ogCrearSoftIncremental "$@" - RETVAL=$? - fi - - - if [ $8 -eq 2 ]; then - #sincronizacion 2 - flag=$6 - WHOLE=${flag:0:1} - DELFILE=${flag:1:1} - COMPRESS=${flag:2:1} - - # Nota los valores se pasan como variables de entorno, - # la idea es que mas adelante vayan en el fichero PXE. - [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false - [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false - [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false - - # REPOSITORIO: Si la ip es la del propio equipo CACHE, si no REPO - #CLIENTIP=$(ogGetIpAddress) - #[ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO - createDiffImage $1 $2 $DEST "$3" "$5" - RETVAL=$? - - fi - - # Si estamos en modo user montamos el repositorio en modo lectura. - [ "$DEST" == "REPO" -a "$boot" != "admin" ] && CambiarAcceso user - - # Registro de fin de ejecución - ogEcho log session "$MSG_INTERFACE_END $RETVAL" - - exit $RETVAL diff --git a/sources/interface/EjecutarScript b/sources/interface/EjecutarScript deleted file mode 100755 index 26453ed..0000000 --- a/sources/interface/EjecutarScript +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -TIME1=$SECONDS - - -#Load engine configurator from engine.cfg file. -#Carga el configurador del engine desde el fichero engine.cfg -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - -# Clear temporary file used as log track by httpdlog -# Limpia los ficheros temporales usados como log de seguimiento para httpdlog -echo -n "" > $OGLOGSESSION; echo -n "" > $OGLOGCOMMAND - -# Registro de inicio de ejecución -ogEcho log session "$MSG_INTERFACE_START $0 $*" - -echo -e "\n Instrucciones a ejecutar: *****************************" >> $OGLOGFILE -cat $1 >> $OGLOGFILE - - -echo -e "\n Salida de las instrucciones: *****************************" >> $OGLOGFILE -chmod +x $1 -# Si mandamos la salida a OGLOGCOMMAND reescribimos lo que manda el comando. -#$1 &>> $OGLOGCOMMAND -$1 -RETVAL=$? - - - -TIME=$[SECONDS-TIME1] -if [ $RETVAL == 0 ] -then - ogEcho log session "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" -else - ogRaiseError log session $RETVAL - ogEcho log session error "Operacion no realizada" -fi - - -# Registro de fin de ejecución -ogEcho log session "$MSG_INTERFACE_END $RETVAL" - - -exit $RETVAL - diff --git a/sources/interface/IniciarSesion b/sources/interface/IniciarSesion deleted file mode 100755 index 750d96d..0000000 --- a/sources/interface/IniciarSesion +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# UHU - Comprobamos el disco, si solo hay un parametro, disco es 1, por compatibilidad con clientes antiguos -if [ $# == 1 ] -then - disk=1 - part=$1 -else - disk=$1 - part=$2 -fi - -bootOs $disk $part diff --git a/sources/interface/InventarioHardware b/sources/interface/InventarioHardware deleted file mode 100755 index 17614a5..0000000 --- a/sources/interface/InventarioHardware +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -# Script de interfaz para guardar en un fichero el inventario de hardware de un cliente. - -file=$(listHardwareInfo) -tail -n+2 $file >$1 - diff --git a/sources/interface/InventarioSoftware b/sources/interface/InventarioSoftware deleted file mode 100755 index fa96565..0000000 --- a/sources/interface/InventarioSoftware +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -TIME1=$SECONDS - -#Carga el configurador del engine desde el fichero engine.cfg -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - -# Limpia los ficheros temporales usados como log de seguimiento para httpdlog -echo -n " " | tee $OGLOGSESSION $OGLOGCOMMAND ${OGLOGCOMMAND}.tmp - -# Registro de inicio de ejecución -ogEcho log session "$MSG_INTERFACE_START $0 $*" - -file=$(listSoftwareInfo $1 $2) -cp $file $3 - -TIME=$[SECONDS-TIME1] -ogEcho log session " [ ] $MSG_SCRIPTS_TIME_PARTIAL : $[TIME/60]m $[TIME%60]s" - diff --git a/sources/interface/Reiniciar b/sources/interface/Reiniciar deleted file mode 100755 index df93c1b..0000000 --- a/sources/interface/Reiniciar +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -reboot -exit 0 diff --git a/sources/interface/RestaurarImagen b/sources/interface/RestaurarImagen deleted file mode 100755 index 6f9ae24..0000000 --- a/sources/interface/RestaurarImagen +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -#_______________________________________________________________________________________________________________________________ -# -# PARAMETROS RECIBIDOS DESDE EL CLIENTE: -# $1 disco -# $2 par=Número de particion -# $3 Nombre canónico de la imagen -# $4 Dirección IP del repositorio -# $5 Protocolo UNICAST MULTICAST TORRENT -# $6 Opciones del protocolo -#_______________________________________________________________________________________________________________________________ - -# Llamar al script de despliegue "deployImage". -deployImage "$4" "$3" "$1" "$2" "$5" "$6" "$7" "$8" || exit $? - diff --git a/sources/interface/RestaurarImagenBasica b/sources/interface/RestaurarImagenBasica deleted file mode 100755 index c87b318..0000000 --- a/sources/interface/RestaurarImagenBasica +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# RESTAURAR 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 -# $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. -# 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 -# $7 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 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 -# $8 Método de clonación 0=Desde caché 1=Desde repositorio -# $9 Metodo de sincronizacion 1=Sincronización1 2=Sincronizacion2 -# $10 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - PROG="$(basename $0)" - if [ $# -lt 9 ]; 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 - - #Load engine configurator from engine.cfg file. - #Carga el configurador del engine desde el fichero engine.cfg - [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - - # Clear temporary file used as log track by httpdlog - # Limpia los ficheros temporales usados como log de seguimiento para httpdlog - echo -n "" > $OGLOGSESSION; echo " " > $OGLOGCOMMAND - - # Registro de inicio de ejecución - ogEcho log session "$MSG_INTERFACE_START $0 $*" - - if [ $9 -eq 1 ]; then - #sincronizacion1 - ogRestaurarImagenBasica "$@" - RETVAL=$? - fi - - if [ $9 -eq 2 ]; then - #sincronizacion2 - # Opciones de clonacion - flag=$6 - WHOLE=${flag:0:1} - DELFILE=${flag:1:1} - COMPRESS=${flag:2:1} - - # Nota los valores se pasan como variables de entorno, - # la idea es que mas adelante vayan en el fichero PXE. - [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false - [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false - [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false - - # Origen de la imagen. - [ $8 -eq 0 ] && DEST="CACHE" || DEST="REPO" - - # Protocolo de clonacion y opciones - PROTO=${5%_*} - OPT=${5#*_} - - restoreBaseImage $DEST "$3" $1 $2 $PROTO $OPT - RETVAL=$? - fi - - # Registro de fin de ejecución - ogEcho log session "$MSG_INTERFACE_END $RETVAL" - - exit $RETVAL diff --git a/sources/interface/RestaurarSoftIncremental b/sources/interface/RestaurarSoftIncremental deleted file mode 100755 index ee895d9..0000000 --- a/sources/interface/RestaurarSoftIncremental +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# RESTAURAR IMAGEN INCREMENTAL -#___________________________________________________________________ -# -# 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 -# $5 Nombre canónico del software incremental (sin extensión) -# $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 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 -# $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 -#___________________________________________________________________ - #Load engine configurator from engine.cfg file. - #Carga el configurador del engine desde el fichero engine.cfg - [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - - # Clear temporary file used as log track by httpdlog - # Limpia los ficheros temporales usados como log de seguimiento para httpdlog - echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND - - # Registro de inicio de ejecución - ogEcho log session "$MSG_INTERFACE_START $0 $*" - - - if [ ${10} -eq 1 ]; then - #sincronizacion1 - ogRestaurarSoftIncremental "$@" - RETVAL=$? - fi - - if [ ${10} -eq 2 ]; then - #sincronizacion2 - # Opciones de clonacion - flag=$7 - WHOLE=${flag:0:1} - DELFILE=${flag:1:1} - COMPRESS=${flag:2:1} - - # Nota los valores se pasan como variables de entorno, - # la idea es que mas adelante vayan en el fichero PXE. - [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false - [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false - [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false - - # Origen de la imagen. - [ $9 -eq 0 ] && DEST="CACHE" || DEST="REPO" - - # Protocolo de clonacion y opciones - PROTO=${6%_*} - OPT=${6#*_} - - restoreDiffImage $DEST "$3" "$5" $1 $2 $PROTO $OPT - RETVAL=$? - fi - - # Registro de fin de ejecución - ogEcho log session "$MSG_INTERFACE_END $RETVAL" - - exit $RETVAL diff --git a/sources/interface/getConfiguration b/sources/interface/getConfiguration deleted file mode 100755 index ddfc382..0000000 --- a/sources/interface/getConfiguration +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash - -#_______________________________________________________________________________________________________________________________ -# -# Formato de salida: -# disk=Número de disco\tpar=Número de particion\tcod=Código de partición\tsfi=Sistema de ficheros\tsoi=Sistema instalado\ttam=Tamaño de la partición\n -#_______________________________________________________________________________________________________________________________ - - -# No registrar los errores. -export DEBUG="no" - -ser=$(ogGetSerialNumber) -cfg="" -disks=$(ogDiskToDev | wc -w) -for ((dsk=1; dsk<=$disks; dsk++)); do - particiones=$(ogGetPartitionsNumber $dsk) - particiones=${particiones:-0} - # Tipo de tabla de particiones: 1=MSDOS, 2=GPT - ptt=$(ogGetPartitionTableType $dsk) - case "$ptt" in - MSDOS) ptt=1 ;; - GPT) ptt=2 ;; - LVM) ptt=3 ;; - ZPOOL) ptt=4 ;; - *) ptt=0 ;; - esac - # Información de disco (partición 0) - cfg="$cfg$dsk:0:$ptt:::$(ogGetDiskSize $dsk):0;" - for ((par=1;par<=$particiones;par++)); do - # Código del identificador de tipo de partición - cod=$(ogGetPartitionId $dsk $par 2>/dev/null) - # Tipo del sistema de ficheros - fsi=$(getFsType $dsk $par 2>/dev/null) - fsi=${fsi:-"EMPTY"} - # Tamaño de la particón - tam=$(ogGetPartitionSize $dsk $par 2>/dev/null) - tam=${tam:-"0"} - # Sistema operativo instalado - case "$fsi" in - ""|EMPTY|LINUX-SWAP|LINUX-LVM|ZVOL) - soi=""; uso=0 ;; - *) if [ -n "$(ogMount $dsk $par 2>/dev/null)" ]; then - soi=$(getOsVersion $dsk $par 2>/dev/null | cut -f2 -d:) - # Hacer un 2º intento para algunos casos especiales. - [ -z "$soi" ] && soi=$(getOsVersion $dsk $par 2>/dev/null | cut -f2 -d:) - # Sistema de archivos para datos (sistema operativo "DATA") - [ -z "$soi" -a "$fsi" != "EMPTY" -a "$fsi" != "CACHE" ] && soi="DATA" - # Obtener porcentaje de uso. - uso=$(df $(ogGetMountPoint $dsk $par) | awk '{getline; printf "%d",$5}') - uso=${uso:0} - else - soi=""; uso=0 - fi - ;; - esac - cfg="$cfg$dsk:$par:$cod:$fsi:$soi:$tam:$uso;" - done -done - -# Crear configuración por defecto para cliente sin disco. -[ -z "$cfg" ] && cfg="1:0:0:::0;" - -# Guardar salida en fichero temporal. -cfgfile=/tmp/getconfig -echo "${ser:+$ser;}$cfg" > $cfgfile - -# Crear el menú por defecto a partir del fichero generado (no dar ninguna salida). -generateMenuDefault &>/dev/null - -# Componer salida formateada. -awk '{ n=split($0,sep,";"); - for (i=1; i