[3ec149c] | 1 | // ******************************************************************************************************** |
---|
| 2 | // Cliernte: ogAdmClient |
---|
| 3 | // Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla |
---|
| 4 | // Fecha Creación: Marzo-2010 |
---|
| 5 | // Fecha Última modificación: Marzo-2010 |
---|
| 6 | // Nombre del fichero: ogAdmClient.h |
---|
| 7 | // Descripción :Este fichero implementa el cliente general del sistema |
---|
| 8 | // ******************************************************************************************************** |
---|
| 9 | #include <stdio.h> |
---|
| 10 | #include <stdlib.h> |
---|
| 11 | #include <string.h> |
---|
| 12 | #include <ctype.h> |
---|
| 13 | #include <errno.h> |
---|
| 14 | #include <unistd.h> |
---|
| 15 | #include <time.h> |
---|
| 16 | #include <sys/types.h> |
---|
| 17 | #include <sys/socket.h> |
---|
| 18 | #include <sys/wait.h> |
---|
| 19 | #include <netinet/in.h> |
---|
| 20 | #include <arpa/inet.h> |
---|
| 21 | #include <signal.h> |
---|
| 22 | #include "ogAdmLib.h" |
---|
| 23 | // ________________________________________________________________________________________________________ |
---|
| 24 | // Variables globales |
---|
| 25 | // ________________________________________________________________________________________________________ |
---|
[4329e85] | 26 | char *idordenador; // Identificador del ordenador |
---|
| 27 | char *nombreordenador; // Nombre del ordenador |
---|
| 28 | char *cache; // Tamaño de la caché |
---|
| 29 | char *idproautoexec; // Identificador del procedimiento de autoexec |
---|
| 30 | char *idcentro; // Identificador de la Unidad Organizativa |
---|
| 31 | char *idaula; // Identificador del aula |
---|
[3ec149c] | 32 | char IPlocal[LONIP]; // Ip local |
---|
| 33 | |
---|
| 34 | char servidoradm[LONPRM]; // Dirección IP del servidor de administración |
---|
| 35 | char puerto[LONPRM]; // Puerto de comunicación |
---|
| 36 | char pathinterface[LONPRM]; // Path donde está la interface entre la administración y el módulo de clonación |
---|
| 37 | |
---|
| 38 | char interface[LONFUN]; // Nombre del módulo,función o script de la interface con el módulo de administración |
---|
| 39 | char parametros[LONSTD]; // Parámetros para la llamada |
---|
| 40 | int herror; |
---|
| 41 | |
---|
| 42 | BOOLEAN CMDPTES; // Para bucle de comandos pendientes |
---|
| 43 | |
---|
| 44 | pid_t pidbrowser; // Identificador del proceso que se crea para mostrar una página web con el browser |
---|
| 45 | pid_t pidbash; // Identificador del proceso que se crea cuando se conmuta el browser |
---|
| 46 | |
---|
| 47 | char urlmenu[MAXLONURL]; // Url de la pagina de menu para el browser |
---|
| 48 | char urlmsg[MAXLONURL]; // Url de la página de mensajed para el browser |
---|
| 49 | |
---|
| 50 | |
---|
| 51 | typedef struct{ // Estructura usada para referenciar las funciones que procesan las tramas |
---|
| 52 | char nf[LONFUN]; // Nombre de la función |
---|
| 53 | BOOLEAN (*fptr)(TRAMA*); // Puntero a la función que procesa la trama |
---|
| 54 | }MSGFUN; |
---|
| 55 | MSGFUN tbfuncionesClient[MAXIMAS_FUNCIONES]; |
---|
| 56 | // ________________________________________________________________________________________________________ |
---|
| 57 | // Tabla de errores de la ejecución de los scripts |
---|
| 58 | // ________________________________________________________________________________________________________ |
---|
[4329e85] | 59 | char* tbErroresScripts[]={"Se han generado errores desconocidos. No se puede continuar la ejecución de este módulo",\ |
---|
[3ec149c] | 60 | "001-Formato de ejecución incorrecto.",\ |
---|
| 61 | "002-Fichero o dispositivo no encontrado",\ |
---|
| 62 | "003-Error en partición de disco",\ |
---|
| 63 | "004-Partición o fichero bloqueado",\ |
---|
| 64 | "005-Error al crear o restaurar una imagen",\ |
---|
| 65 | "006-Sin sistema operativo",\ |
---|
[4329e85] | 66 | "007-Programa o función BOOLEAN no ejecutable",\ |
---|
[3ec149c] | 67 | "008-Error en la creación del archivo de eco para consola remota",\ |
---|
| 68 | "009-Error en la lectura del archivo temporal de intercambio",\ |
---|
| 69 | "010-Error al ejecutar la llamada a la interface de administración",\ |
---|
| 70 | "011-La información retornada por la interface de administración excede de la longitud permitida",\ |
---|
| 71 | "012-Error en el envío de fichero por la red",\ |
---|
| 72 | "013-Error en la creación del proceso hijo",\ |
---|
[eb9424f] | 73 | "014-Error de escritura en destino",\ |
---|
| 74 | "015-Sin Cache en el Cliente",\ |
---|
| 75 | "016-No hay espacio en la cache para almacenar fichero-imagen",\ |
---|
| 76 | "017-Error al Reducir el Sistema Archivos",\ |
---|
| 77 | "018-Error al Expandir el Sistema Archivos",\ |
---|
| 78 | "019-Error no definido",\ |
---|
| 79 | "020-Error no definido",\ |
---|
| 80 | "021-Error no definido",\ |
---|
| 81 | "022-Error no definido",\ |
---|
| 82 | "023-Error no definido",\ |
---|
| 83 | "024-Error no definido",\ |
---|
| 84 | "025-Error no definido",\ |
---|
| 85 | "026-Error no definido",\ |
---|
| 86 | "027-Error no definido",\ |
---|
| 87 | "028-Error no definido",\ |
---|
| 88 | "029-Error no definido",\ |
---|
| 89 | "030-Error al restaurar imagen - Imagen mas grande que particion",\ |
---|
| 90 | "031-Error no definido",\ |
---|
| 91 | "032-Error no definido",\ |
---|
| 92 | "033-Error no definido",\ |
---|
| 93 | "034-Error no definido",\ |
---|
| 94 | "035-Error no definido",\ |
---|
| 95 | "036-Error no definido",\ |
---|
| 96 | "037-Error no definido",\ |
---|
| 97 | "038-Error no definido",\ |
---|
| 98 | "039-Error no definido",\ |
---|
| 99 | "040-Error no definido",\ |
---|
| 100 | "041-Error no definido",\ |
---|
| 101 | "042-Error no definido",\ |
---|
| 102 | "043-Error no definido",\ |
---|
| 103 | "044-Error no definido",\ |
---|
| 104 | "045-Error no definido",\ |
---|
| 105 | "046-Error no definido",\ |
---|
| 106 | "047-Error no definido",\ |
---|
| 107 | "048-Error no definido",\ |
---|
| 108 | "049-Error no definido",\ |
---|
| 109 | "050-Error en la generación de sintaxis de transferenica unicast",\ |
---|
| 110 | "051-Error en envio UNICAST de una particion",\ |
---|
| 111 | "052-Error en envio UNICAST de un fichero",\ |
---|
| 112 | "053-Error en la recepcion UNICAST de una particion",\ |
---|
| 113 | "054-Error en la recepcion UNICAST de un fichero",\ |
---|
| 114 | "055-Error en la generacion de sintaxis de transferenica Multicast",\ |
---|
| 115 | "056-Error en envio MULTICAST de un fichero",\ |
---|
| 116 | "057-Error en la recepcion MULTICAST de un fichero",\ |
---|
| 117 | "058-Error en envio MULTICAST de una particion",\ |
---|
| 118 | "059-Error en la recepcion MULTICAST de una particion",\ |
---|
| 119 | "060-Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER",\ |
---|
[3ec149c] | 120 | "Error desconocido " |
---|
| 121 | }; |
---|
[4329e85] | 122 | #define MAXERRORSCRIPT 60 // Error máximo cometido |
---|
[3ec149c] | 123 | // ________________________________________________________________________________________________________ |
---|
| 124 | // Prototipo de funciones |
---|
| 125 | // ________________________________________________________________________________________________________ |
---|
| 126 | BOOLEAN autoexecCliente(TRAMA*); |
---|
| 127 | BOOLEAN RESPUESTA_AutoexecCliente(TRAMA*); |
---|
| 128 | void procesaComandos(TRAMA*); |
---|
| 129 | |
---|
| 130 | BOOLEAN tomaConfiguracion(char*); |
---|
| 131 | BOOLEAN tomaIPlocal(void); |
---|
| 132 | void scriptLog(const char *,int ); |
---|
| 133 | |
---|
| 134 | BOOLEAN gestionaTrama(TRAMA *); |
---|
| 135 | BOOLEAN inclusionCliente(); |
---|
[12a35e7] | 136 | char* LeeConfiguracion(); |
---|
[3ec149c] | 137 | BOOLEAN RESPUESTA_InclusionCliente(TRAMA *); |
---|
| 138 | |
---|
| 139 | BOOLEAN comandosPendientes(TRAMA*); |
---|
| 140 | BOOLEAN NoComandosPtes(TRAMA *); |
---|
| 141 | |
---|
| 142 | BOOLEAN respuestaEjecucionComando(TRAMA *,int,char*); |
---|
| 143 | BOOLEAN Sondeo(TRAMA *); |
---|
| 144 | BOOLEAN Actualizar(TRAMA *); |
---|
| 145 | int Purgar(TRAMA* ); |
---|
| 146 | |
---|
| 147 | BOOLEAN ConsolaRemota(TRAMA*); |
---|
| 148 | |
---|
| 149 | BOOLEAN Arrancar(TRAMA *); |
---|
| 150 | BOOLEAN Apagar(TRAMA *); |
---|
| 151 | BOOLEAN Reiniciar(TRAMA *); |
---|
| 152 | BOOLEAN IniciarSesion(TRAMA *); |
---|
| 153 | BOOLEAN CrearImagen(TRAMA *); |
---|
[4329e85] | 154 | BOOLEAN CrearImagenBasica(TRAMA *); |
---|
| 155 | BOOLEAN CrearSoftIncremental(TRAMA*); |
---|
| 156 | |
---|
[3ec149c] | 157 | BOOLEAN InventarioHardware(TRAMA *); |
---|
| 158 | BOOLEAN InventariandoSoftware(TRAMA *,BOOLEAN,char*); |
---|
| 159 | BOOLEAN EjecutarScript(TRAMA *); |
---|
| 160 | BOOLEAN ejecutaArchivo(char*,TRAMA*); |
---|
| 161 | |
---|
| 162 | BOOLEAN cuestionCache(char*); |
---|
| 163 | int cargaPaginaWeb(char *); |
---|
| 164 | void muestraMenu(void); |
---|
| 165 | void muestraMensaje(int idx,char*); |
---|
| 166 | |
---|
| 167 | BOOLEAN enviaMensajeServidor(SOCKET *,TRAMA *,char); |
---|
| 168 | |
---|
| 169 | |
---|
| 170 | |
---|
| 171 | |
---|