source: admin/Sources/Includes/ogAdmLib.h @ fe6843b

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since fe6843b was 6a830ffa, checked in by alonso <alonso@…>, 12 years ago

git-svn-id: https://opengnsys.es/svn/branches/version1.0@3782 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 17.0 KB
Line 
1// **************************************************************************************************************************************************
2// Libreria: ogAdmLib
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: ogAdmLib.h
7// Descripción: Este fichero implementa el archivo de cabecera de la libreria  ogAdmLib
8// **************************************************************************************************************************************************
9// ________________________________________________________________________________________________________
10// Valores definidos
11// ________________________________________________________________________________________________________
12#define LONSTD 1024     // Longitud de memoria estandar
13#define LONINT 16       // Longitud de memoria estandar para un número entero
14#define LONFIL 1024     // Longitud de memoria estandar para nombres de archivo completos (incluido path)
15#define LONIP 16        // Longitud de memoria estandar para cadenas que contiene una dirección IP
16#define LONMAC 16       // Longitud de memoria estandar para cadenas que contiene una dirección MAC
17#define LONSQL 8192     // Longitud de memoria estandar para una sentencia SQL
18#define LONPRM 4098     // Longitud estandar de los parámetros del fichero de configuración del servicio
19#define LONSCP 4098     // Longitud estandar de los parámetros de las tramas
20#define LONFUN 512      // Longitud estandar de los nombres de las funciones que procesan las tramas
21#define LONSUC 4098     // Longitud de los mensajes de sucesos
22#define LONBLK 8192     // Longitud de los paquetes de tramas leidos cada vez
23#define MAXPRM 20       // Máximo número de parámeros del fichero de configuración del servicio
24#define MAXPAR 128      // Maximo numero de particiones manejadas por el sistema, ahora con GPT es 128
25#define MAXLONURL 1024 // Longitud máxima de una dirección url con parámetros
26
27#define LONHEXPRM 5 // Longitud del campo que contiene el tamaño de la cadena de parámetros
28#define LONGITUD_CABECERATRAMA 16       // Longitud de la cabecera de las tramas
29#define LONGITUD_PARAMETROS 8192        // Longitud estandar de la información de la trama (parámetros)
30#define MAXCMD_PARAMETROS  200  // Máximo número de parámetros de una trama
31
32#define MAXIMOS_CLIENTES        4000    // Máximo número de conexiones con ordenadores clientes
33#define MAXIMAS_FUNCIONES       LONSTD  // Máximo número de funciones que procesan los mensajes entre servicio y clientes
34#define MAXIMAS_LINEAS 3000     // Longitud máxima de lineas en un archivo de comandos
35
36#define AUTOINCORPORACION_OFF   0x0000 // Los ordenadores no se pueden dar de alta automáticamente
37#define AUTOINCORPORACION_ONA   0x0001 // Los ordenadores se pueden dar de alta automáticamente si existe el aula
38#define AUTOINCORPORACION_ONX   0x0002 // Los ordenadores se pueden dar de alta automáticamentee y si no existe el aula la crea
39
40#define DEBUG_BAJO      1 // Nivel de debug bajo
41#define DEBUG_MEDIO     2 // Nivel de debug medio
42#define DEBUG_ALTO 3 // Nivel de debug alto
43#define DEBUG_MAXIMO 4 // Nivel de debug máximo
44
45#define CLIENTE_OCUPADO "BSY" // Cliente ocupado
46#define CLIENTE_APAGADO "OFF" // Cliente apagado
47#define CLIENTE_INICIANDO "INI" // Cliente iniciando
48
49#define CLIENTE_OPENGNSYS "OPG" // Cliente Opengnsys
50
51#define CLIENTE_WIN "WIN" // Cliente Windows genérico
52#define CLIENTE_WNT "WNT" // Windows NT
53#define CLIENTE_W2K "W2K" // Windows 2000
54#define CLIENTE_WS2 "WS2" // Windows Server 2003
55#define CLIENTE_WXP "WXP" // Cliente Windows XP
56#define CLIENTE_W95 "W95" // Windows 95
57#define CLIENTE_W98 "W98" // Windows 98
58#define CLIENTE_WML "WML" // Windows Milenium
59#define CLIENTE_MS2 "MS2" // MsDos
60#define CLIENTE_WVI "WVI" // Cliente Windows Vista
61#define CLIENTE_WI7 "WI7" // Cliente Windows 7
62
63#define CLIENTE_LNX "LNX" // Cliente Linux
64
65#define ACCION_SINRESULTADO 0 // Sin resultado
66#define ACCION_EXITOSA  1 // Finalizada con éxito
67#define ACCION_FALLIDA  2 // Finalizada con errores
68
69#define ACCION_INICIADA 1 // Acción activa
70#define ACCION_DETENIDA 2 // Acción momentanemente parada
71#define ACCION_FINALIZADA 3 // Accion finalizada
72
73#define EJECUCION_COMANDO 1
74#define EJECUCION_PROCEDIMIENTO 2
75#define EJECUCION_TAREA 3
76#define EJECUCION_RESERVA 4
77
78#define AMBITO_CENTROS 0x01
79#define AMBITO_GRUPOSAULAS 0x02
80#define AMBITO_AULAS 0x04
81#define AMBITO_GRUPOSORDENADORES 0x08
82#define AMBITO_ORDENADORES 0x10
83
84// Código de los tipos de mensajes
85#define MSG_COMANDO '1' // Mensaje del tipo comando
86#define MSG_NOTIFICACION '2' // Respuesta a la ejecución un comando
87#define MSG_PETICION '3' // Petición de cualquier actuación
88#define MSG_RESPUESTA '4' // Respuesta a una petición
89#define MSG_INFORMACION '5' // Envío de cualquier información sin espera de confirmación o respuesta
90
91#define ANNOREF 2009 // Año de referencia base
92
93#define LONGITUD_SCRIPTSALIDA 131072    // Longitud máxima de la información devuelta por una función de interface
94#define MAXARGS 16      // Número máximo de argumentos enviados a un scripts
95#define MAXCNX 5        // Máximos intentos de conexión al servidor de Administración
96
97#define PUERTO_WAKEUP   9 // Puerto wake up
98
99#define MAXHARDWARE 128 //       Máximos elementos hardware a detectar
100#define MAXSOFTWARE 8096 //      Máximos elementos software a detectar
101// ________________________________________________________________________________________________________
102// Tipos definidos
103// ________________________________________________________________________________________________________
104typedef unsigned long DWORD;
105typedef unsigned short  WORD;
106typedef int  BOOLEAN;
107typedef char BYTE;
108typedef int  SOCKET;
109typedef  void* LPVOID;
110
111#define TRUE 1
112#define FALSE 0
113
114#define SOCKET_ERROR    (-1)
115#define INVALID_SOCKET  (SOCKET)(~0)
116
117#define LEER            0
118#define ESCRIBIR        1
119
120#define CHARNULL '\0'
121
122// ________________________________________________________________________________________________________
123// Variables globales
124// ________________________________________________________________________________________________________
125char szPathFileCfg[LONSTD],szPathFileLog[LONSTD];
126int ndebug; // Nivel de debuger
127
128typedef struct{         // Estructura de las tramas
129        char arroba;    // Caracter arroba siempre
130        char identificador[14]; // Identificador de la trama, siempre JMMLCAMDJ_MCDJ
131        char tipo;      // Tipo de mensaje
132        long lonprm;    // Longitud en hexadecimal de los parámetros
133        char *parametros; // Parámetros de la trama
134}TRAMA;
135// ________________________________________________________________________________________________________
136// Tabla de errores
137// ________________________________________________________________________________________________________
138const char* tbErrores[]={"Se han generado errores. No se puede continuar la ejecución de este módulo",\
139                "001-El nombre del fichero de configuración del programa está vacío",\
140                "002-No existe fichero de configuración del programa",\
141                "003-No hay memoria suficiente para el buffer",\
142                "004-Error en el fichero de configuración del programa. No se ha definido el parámetro SERVIDORADM",\
143                "005-Error en el fichero de configuración del programa. No se ha definido el parámetro PUERTO",\
144                "006-Error en el fichero de configuración del programa. No se ha definido el parámetro USUARIO",\
145                "007-Error en el fichero de configuración del programa. No se ha definido el parámetro PASSWORD",\
146                "008-Error en el fichero de configuración del programa. No se ha definido el parámetro DATASOURCE",\
147                "009-Error en el fichero de configuración del programa. No se ha definido el parámetro CATALOG",\
148                "010-Error en los parámetros de ejecución del programa. Debe especificar el fichero de configuración",\
149                "011-Error en los parámetros de ejecución del programa. Debe especificar el fichero de log",\
150                "012-Error de sintaxis en los parámetros de ejecución del programa: Debe especificar -f nombre_del_fichero_de_configuración_del_programa -l nombre_del_fichero_de_log_del_programa -d nivel de debug",\
151                "013-Error al crear socket ***socket() fallo",\
152                "014-Error al enlazar socket al interface ***bind() fallo",\
153                "015-Error al acceptar conexión de clientes ***accept() fallo",\
154                "016-Error al crear hebra de cliente en módulo main()",\
155                "017-Error al recibir trama ***recv() fallo",\
156                "018-No se reconoce el mensaje enviado",\
157                "019-Trama recibida NO válida",\
158                "020-No se puede establecer conexión con la base de datos",\
159                "021-No se han podido recuperar los datos de la consulta o bien insertar, modificar o eliminar datos",\
160                "022-El cliente no se ha sido dado de alta en la base de datos del sistema. Se rechaza su petición de inclusión",\
161                "023-Ha habido algún problema en la incorporación automática del cliente",\
162                "024-Ha habido algún problema en la actualización de la configuración del cliente",\
163                "025-La tabla de clientes está llena, no pueden registrarse más clientes en el sistema",\
164                "026-Error al enviar trama ***send() fallo",\
165                "027-No se encuentra Repositorio del cliente",\
166                "028-Ha ocurrido algún error al tomar las particiones",\
167                "029-Ha ocurrido algún problema en el proceso de inclusión del cliente. Se rechaza su petición",\
168                "030-Ha ocurrido algún problema en el proceso de respuesta al comando",\
169                "031-No se ha encontrado la acción a notificar es posible que se haya eliminado el registro",\
170                "032-Ha ocurrido algún problema en el envío del comando",\
171                "033-Error en el fichero de configuración del programa. No se ha definido el parámetro PATHSCRIPTS",\
172                "034-Error en el fichero de configuración del programa. No se ha definido el parámetro URLMENU",\
173                "035-Error en el fichero de configuración del programa. No se ha definido el parámetro URLMSG",\
174                "036-No se ha podido recuperar la configuración de las particiones del disco",\
175                "037-Ha ocurrido algún problema en el proceso de inclusión del cliente",\
176                "038-No se ha podido establecer conexión con el Servidor de Administración",\
177                "039-Ha ocurrido algún problema al procesar la trama recibida",\
178                "040-Se han recibido parámetros con valores no válidos",\
179                "041-Ha ocurrido algún problema en el proceso de inclusión del cliente",\
180                "042-Ha ocurrido algún problema al enviar una petición de comandos o tareas pendientes al Servidor de Administración",\
181                "043-Ha ocurrido algún problema al enviar una petición de comandos interactivos al Servidor de Administración",\
182                "044-Ha ocurrido algún problema al enviar una respuesta de comandos al servidor",\
183                "045-Ha ocurrido algún problema al recibir una petición de comandos o tareas pendientes desde el Servidor de Administración",\
184                "046-Ha ocurrido algún problema al recibir un comando interactivo desde el Servidor de Administración",\
185                "047-El cliente no está registrado en la tabla de sockest del sistema",\
186                "048-Error al configurar opción BROADCAST para socket: setsockopt(SO_BROADCAST)",\
187                "049-Error al enviar trama magic packet",\
188                "050-Ha ocurrido algún problema al enviar un fichero por la red",\
189                "051-Error en el fichero de configuración del programa. No se ha definido el parámetro PATHLOGFIL",\
190                "052-No se puede crear archivo temporal para ejecución de Comandos",\
191                "053-Ha ocurrido algún problema al procesar el Inventario Hardware del cliente",\
192                "054-Existe un tipo de hardware que no está registrado",\
193                "055-Ha ocurrido algún problema al actualizar el hardware del cliente",\
194                "056-Error en el fichero de configuración del programa. No se ha definido el parámetro PATHINTERFACE",\
195                "057-Ha ocurrido algún problema al enviar un archivo por la red",\
196                "058-Ha ocurrido algún problema al recibir un archivo por la red",\
197                "059-Error al crear la hebra DHCP o BOOTP",\
198                "060-Error al crear la hebra TFTP",\
199                "061-Error al crear socket para servicio DHCP",\
200                "062-Error al enlazar socket con interface para servicio DHCP",\
201                "063-No hay puertos libres para la hebra del servicio",\
202                "064-Error al crear estructura de control para protocolo DHCP",\
203                "065-Error al recibir mensaje DHCP. Se para el servicio",\
204                "066-Error al crear la hebra cliente DHCP",\
205                "067-Error al crear socket para servicio BOOTP",\
206                "068-Error al enlazar socket con interface para servicio BOOTP",\
207                "069-Error al crear estructura de control para protocolo BOOTP",\
208                "070-Error al recibir mensaje BOOTP. Se para el servicio",\
209                "071-Error al crear la hebra cliente BOOTP",\
210                "072-Error al crear socket para servicio TFTP",\
211                "073-Error al enlazar socket con interface para servicio TFTP",\
212                "074-Error al crear estructura de control para protocolo TFTP",\
213                "075-Error al recibir mensaje TFTP. Se para el servicio",\
214                "076-Error al crear la hebra cliente TFTP",\
215                "077-No se encontró opción DHCP",\
216                "078-ERROR TFTP",\
217                "079-Error al recibir mensaje TFTP en hebra cliente",\
218                "080-Error al recibir mensaje DHCP",\
219                "081-Error al crear socket de usuario para hebra",\
220                "082-Ha ocurrido algún problema al procesar el Inventario software del cliente",\
221                "083-Ha ocurrido algún problema al actualizar el software del cliente",\
222                "084-Ha ocurrido algún problema al reiniciar la sesión del cliente",\
223                "085-No se ha podido recuperar la dirección IP del cliente",\
224                "086-Error al ejecutar el comando",\
225                "087-Error al leer o escribir el contenido del archivo de eco de consola remota",\
226                "088-Ha habido algún problerma al procesar la caché",\
227                "089-Error en el fichero de configuración del programa. No se ha definido el parámetro URLMENU",\
228                "090-Error en el fichero de configuración del programa. No se ha definido el parámetro URLMSG",\
229                "091-Ha habido algún problema al enviar un mensaje de tipo petición al Servidor",\
230                "092-Error en el fichero de configuración del programa. No se ha definido el parámetro IPLOCAL",\
231                "093-No se puede cargar la librería Windows para trabajar con sockets",\
232                "094-Ha habido algún problerma al procesar la actualización después de crear una imagen",\
233                "095-Ha habido algún problerma al procesar la actualización después de restaurar una imagen",\
234                "096-Ha habido algún problerma al procesar la actualización después de crear un software incremental",\
235
236};
237// ________________________________________________________________________________________________________
238// Tabla de mensajes
239// ________________________________________________________________________________________________________
240const char* tbMensajes[]={"",\
241                "001-Inicio de sesion",\
242                "002-Petición de inclusión de cliente",\
243                "003-Abriendo sesión en el servidor de Administración",\
244                "004-Cliente iniciado",\
245                "005-Ejecución de archivo Autoexec",\
246                "006-Procesa comandos pendientes",\
247                "007-Acciones pendientes procesadas",\
248                "008-Ejecución del script",\
249                "009-Parámetro del script",\
250                "010-Ha ocurrido algún error en la creación del proceso hijo",\
251                "011-Aviso: La información de salida del script excede de la longitud permitida. Puede haberse truncado",\
252                "012-Información devuelta por el script",\
253                "013-Estatus de finalización del script",\
254                "014-Configuración de particiones",\
255                "015-Enviando petición de inclusión en el sistema al Servidor de Administración",\
256                "016-Recibiendo respuesta de inclusión desde el Servidor de Administración",\
257                "017-Enviando petición de comandos o tareas pendientes al Servidor de Administración",\
258                "018-Recibiendo respuesta de comandos o tareas pendientes desde el Servidor de Administración",\
259                "019-Disponibilidad de comandos activada",\
260                "020-Disponibilidad de comandos desactivada",\
261                "021-Ejecución de comando",\
262                "022-Sin eco",\
263                "023-Procesando caché",\
264                "024-Repositorio iniciado",\
265
266};
267// ________________________________________________________________________________________________________
268// Prototipo de funciones
269// ________________________________________________________________________________________________________
270char *desencriptar(char *,int*);
271char *encriptar(char *,int*);
272struct tm * tomaHora();
273void registraLog(const char *,const char *,int );
274void errorLog(const char *,int ,int);
275void errorInfo(const char *,char *);
276void infoLog(int);
277void infoDebug(char*);
278BOOLEAN validacionParametros(int,char**,int);
279char* reservaMemoria(int);
280char* ampliaMemoria(char*,int);
281void liberaMemoria(void*);
282BOOLEAN initParametros(TRAMA*,int);
283int splitCadena(char **,char *, char);
284void sustituir(char *,char ,char );
285char* StrToUpper(char *);
286char* StrToLower(char *);
287void INTROaFINCAD(TRAMA*);
288void FINCADaINTRO(TRAMA*);
289int cuentaIPES(char*);
290char *tomaParametro(const char*,TRAMA*);
291char *copiaParametro(const char*,TRAMA *);
292BOOLEAN contieneIP(char *,char *);
293char* rTrim(char *);
294SOCKET TCPConnect(char *,char *);
295SOCKET abreConexion(void);
296BOOLEAN enviaMensaje(SOCKET *,TRAMA *,char);
297TRAMA* recibeMensaje(SOCKET *);
298BOOLEAN mandaTrama(SOCKET*,TRAMA*);
299BOOLEAN sendData(SOCKET *, char* ,int );
300BOOLEAN enviaTrama(SOCKET *,TRAMA *);
301TRAMA* recibeTrama(SOCKET*);
302BOOLEAN recData(SOCKET *,char*,int,int*);
303BOOLEAN sendFlag(SOCKET *, char* ,int );
304BOOLEAN recibeFlag(SOCKET*,TRAMA*);
305char* URLEncode(char *);
306char* URLDecode(char *);
307char* leeArchivo(char*);
308int lonArchivo(char *);
309BOOLEAN escribeArchivo(char *,char*);
310BOOLEAN sendArchivo(SOCKET *,char *);
311BOOLEAN recArchivo(SOCKET *,char *);
312SOCKET TCPConnect(char *,char*);
313int tomaPuerto(SOCKET);
314
Note: See TracBrowser for help on using the repository browser.