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 | // ________________________________________________________________________________________________________ |
---|
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 |
---|
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 | |
---|
45 | char urlmenu[MAXLONURL]; // Url de la pagina de menu para el browser |
---|
46 | char urlmsg[MAXLONURL]; // Url de la página de mensajed para el browser |
---|
47 | |
---|
48 | |
---|
49 | typedef struct{ // Estructura usada para referenciar las funciones que procesan las tramas |
---|
50 | char nf[LONFUN]; // Nombre de la función |
---|
51 | BOOLEAN (*fptr)(TRAMA*); // Puntero a la función que procesa la trama |
---|
52 | }MSGFUN; |
---|
53 | MSGFUN tbfuncionesClient[MAXIMAS_FUNCIONES]; |
---|
54 | // ________________________________________________________________________________________________________ |
---|
55 | // Tabla de errores de la ejecución de los scripts |
---|
56 | // ________________________________________________________________________________________________________ |
---|
57 | char* tbErroresScripts[]={"Se han generado errores desconocidos. No se puede continuar la ejecución de este módulo",\ |
---|
58 | "001-Formato de ejecución incorrecto.",\ |
---|
59 | "002-Fichero o dispositivo no encontrado",\ |
---|
60 | "003-Error en partición de disco",\ |
---|
61 | "004-Partición o fichero bloqueado",\ |
---|
62 | "005-Error al crear o restaurar una imagen",\ |
---|
63 | "006-Sin sistema operativo",\ |
---|
64 | "007-Programa o función BOOLEAN no ejecutable",\ |
---|
65 | "008-Error en la creación del archivo de eco para consola remota",\ |
---|
66 | "009-Error en la lectura del archivo temporal de intercambio",\ |
---|
67 | "010-Error al ejecutar la llamada a la interface de administración",\ |
---|
68 | "011-La información retornada por la interface de administración excede de la longitud permitida",\ |
---|
69 | "012-Error en el envío de fichero por la red",\ |
---|
70 | "013-Error en la creación del proceso hijo",\ |
---|
71 | "014-Error de escritura en destino",\ |
---|
72 | "015-Sin Cache en el Cliente",\ |
---|
73 | "016-No hay espacio en la cache para almacenar fichero-imagen",\ |
---|
74 | "017-Error al Reducir el Sistema Archivos",\ |
---|
75 | "018-Error al Expandir el Sistema Archivos",\ |
---|
76 | "019-Valor fuera de rango o no válido.",\ |
---|
77 | "020-Sistema de archivos desconocido o no se puede montar",\ |
---|
78 | "021-Error en partición de caché local",\ |
---|
79 | "022-El disco indicado no contiene una particion GPT",\ |
---|
80 | "023-Error no definido",\ |
---|
81 | "024-Error no definido",\ |
---|
82 | "025-Error no definido",\ |
---|
83 | "026-Error no definido",\ |
---|
84 | "027-Error no definido",\ |
---|
85 | "028-Error no definido",\ |
---|
86 | "029-Error no definido",\ |
---|
87 | "030-Error al restaurar imagen - Imagen mas grande que particion",\ |
---|
88 | "031-Error al realizar el comando updateCache",\ |
---|
89 | "032-Error al formatear",\ |
---|
90 | "033-Archivo de imagen corrupto o de otra versión de partclone",\ |
---|
91 | "034-Error no definido",\ |
---|
92 | "035-Error no definido",\ |
---|
93 | "036-Error no definido",\ |
---|
94 | "037-Error no definido",\ |
---|
95 | "038-Error no definido",\ |
---|
96 | "039-Error no definido",\ |
---|
97 | "040-Error imprevisto no definido",\ |
---|
98 | "041-Error no definido",\ |
---|
99 | "042-Error no definido",\ |
---|
100 | "043-Error no definido",\ |
---|
101 | "044-Error no definido",\ |
---|
102 | "045-Error no definido",\ |
---|
103 | "046-Error no definido",\ |
---|
104 | "047-Error no definido",\ |
---|
105 | "048-Error no definido",\ |
---|
106 | "049-Error no definido",\ |
---|
107 | "050-Error en la generación de sintaxis de transferenica unicast",\ |
---|
108 | "051-Error en envio UNICAST de una particion",\ |
---|
109 | "052-Error en envio UNICAST de un fichero",\ |
---|
110 | "053-Error en la recepcion UNICAST de una particion",\ |
---|
111 | "054-Error en la recepcion UNICAST de un fichero",\ |
---|
112 | "055-Error en la generacion de sintaxis de transferenica Multicast",\ |
---|
113 | "056-Error en envio MULTICAST de un fichero",\ |
---|
114 | "057-Error en la recepcion MULTICAST de un fichero",\ |
---|
115 | "058-Error en envio MULTICAST de una particion",\ |
---|
116 | "059-Error en la recepcion MULTICAST de una particion",\ |
---|
117 | "060-Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER",\ |
---|
118 | "061-Error no definido",\ |
---|
119 | "062-Error no definido",\ |
---|
120 | "063-Error no definido",\ |
---|
121 | "064-Error no definido",\ |
---|
122 | "065-Error no definido",\ |
---|
123 | "066-Error no definido",\ |
---|
124 | "067-Error no definido",\ |
---|
125 | "068-Error no definido",\ |
---|
126 | "069-Error no definido",\ |
---|
127 | "070-Error al montar una imagen sincronizada.",\ |
---|
128 | "071-Imagen no sincronizable (es monolitica).",\ |
---|
129 | "072-Error al desmontar la imagen.",\ |
---|
130 | "073-No se detectan diferencias entre la imagen basica y la particion.",\ |
---|
131 | "074-Error al sincronizar, puede afectar la creacion/restauracion de la imagen.",\ |
---|
132 | "Error desconocido " |
---|
133 | }; |
---|
134 | #define MAXERRORSCRIPT 74 // Error máximo cometido |
---|
135 | // ________________________________________________________________________________________________________ |
---|
136 | // Prototipo de funciones |
---|
137 | // ________________________________________________________________________________________________________ |
---|
138 | BOOLEAN autoexecCliente(TRAMA*); |
---|
139 | BOOLEAN RESPUESTA_AutoexecCliente(TRAMA*); |
---|
140 | void procesaComandos(TRAMA*); |
---|
141 | |
---|
142 | BOOLEAN tomaConfiguracion(char*); |
---|
143 | BOOLEAN tomaIPlocal(void); |
---|
144 | void scriptLog(const char *,int ); |
---|
145 | |
---|
146 | BOOLEAN gestionaTrama(TRAMA *); |
---|
147 | BOOLEAN inclusionCliente(); |
---|
148 | char* LeeConfiguracion(); |
---|
149 | BOOLEAN RESPUESTA_InclusionCliente(TRAMA *); |
---|
150 | |
---|
151 | BOOLEAN comandosPendientes(TRAMA*); |
---|
152 | BOOLEAN NoComandosPtes(TRAMA *); |
---|
153 | |
---|
154 | BOOLEAN respuestaEjecucionComando(TRAMA *,int,char*); |
---|
155 | BOOLEAN Sondeo(TRAMA *); |
---|
156 | BOOLEAN Actualizar(TRAMA *); |
---|
157 | int Purgar(TRAMA* ); |
---|
158 | |
---|
159 | BOOLEAN ConsolaRemota(TRAMA*); |
---|
160 | |
---|
161 | BOOLEAN Arrancar(TRAMA *); |
---|
162 | BOOLEAN Apagar(TRAMA *); |
---|
163 | BOOLEAN Reiniciar(TRAMA *); |
---|
164 | BOOLEAN IniciarSesion(TRAMA *); |
---|
165 | BOOLEAN CrearImagen(TRAMA *); |
---|
166 | BOOLEAN CrearImagenBasica(TRAMA *); |
---|
167 | BOOLEAN CrearSoftIncremental(TRAMA*); |
---|
168 | |
---|
169 | BOOLEAN InventarioHardware(TRAMA *); |
---|
170 | BOOLEAN InventariandoSoftware(TRAMA *,BOOLEAN,char*); |
---|
171 | BOOLEAN EjecutarScript(TRAMA *); |
---|
172 | BOOLEAN ejecutaArchivo(char*,TRAMA*); |
---|
173 | |
---|
174 | BOOLEAN cuestionCache(char*); |
---|
175 | int cargaPaginaWeb(char *); |
---|
176 | void muestraMenu(void); |
---|
177 | void muestraMensaje(int idx,char*); |
---|
178 | |
---|
179 | BOOLEAN enviaMensajeServidor(SOCKET *,TRAMA *,char); |
---|
180 | |
---|
181 | |
---|
182 | |
---|
183 | |
---|