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 | |
---|
35 | #define CLIENTE_OCUPADO "BSY" // Cliente ocupado |
---|
36 | #define CLIENTE_APAGADO "OFF" // Cliente apagado |
---|
37 | #define CLIENTE_INICIANDO "INI" // Cliente iniciando |
---|
38 | |
---|
39 | #define ACCION_SINRESULTADO 0 // Sin resultado |
---|
40 | #define ACCION_EXITOSA 1 // Finalizada con éxito |
---|
41 | #define ACCION_FALLIDA 2 // Finalizada con errores |
---|
42 | |
---|
43 | #define ACCION_INICIADA 1 // Acción activa |
---|
44 | #define ACCION_DETENIDA 2 // Acción momentanemente parada |
---|
45 | #define ACCION_FINALIZADA 3 // Accion finalizada |
---|
46 | |
---|
47 | #define EJECUCION_COMANDO 1 |
---|
48 | #define EJECUCION_PROCEDIMIENTO 2 |
---|
49 | #define EJECUCION_TAREA 3 |
---|
50 | #define EJECUCION_RESERVA 4 |
---|
51 | |
---|
52 | #define AMBITO_CENTROS 0x01 |
---|
53 | #define AMBITO_GRUPOSAULAS 0x02 |
---|
54 | #define AMBITO_AULAS 0x04 |
---|
55 | #define AMBITO_GRUPOSORDENADORES 0x08 |
---|
56 | #define AMBITO_ORDENADORES 0x10 |
---|
57 | |
---|
58 | #define ANNOREF 2009 // Año de referencia base |
---|
59 | |
---|
60 | #define PUERTO_WAKEUP 9 // Puerto wake up |
---|
61 | |
---|
62 | #define MAXHARDWARE 128 // Máximos elementos hardware a detectar |
---|
63 | #define MAXSOFTWARE 8096 // Máximos elementos software a detectar |
---|
64 | // ________________________________________________________________________________________________________ |
---|
65 | // Tipos definidos |
---|
66 | // ________________________________________________________________________________________________________ |
---|
67 | typedef unsigned long DWORD; |
---|
68 | typedef unsigned short WORD; |
---|
69 | typedef int BOOLEAN; |
---|
70 | typedef char BYTE; |
---|
71 | typedef int SOCKET; |
---|
72 | typedef void* LPVOID; |
---|
73 | |
---|
74 | #define TRUE 1 |
---|
75 | #define FALSE 0 |
---|
76 | |
---|
77 | // ________________________________________________________________________________________________________ |
---|
78 | // Variables globales |
---|
79 | // ________________________________________________________________________________________________________ |
---|
80 | char szPathFileCfg[LONSTD],szPathFileLog[LONSTD]; |
---|
81 | int ndebug; // Nivel de debuger |
---|
82 | |
---|
83 | typedef struct{ // Estructura de las tramas |
---|
84 | char arroba; // Caracter arroba siempre |
---|
85 | char identificador[14]; // Identificador de la trama, siempre JMMLCAMDJ_MCDJ |
---|
86 | char tipo; // Tipo de mensaje |
---|
87 | long lonprm; // Longitud en hexadecimal de los parámetros |
---|
88 | char *parametros; // Parámetros de la trama |
---|
89 | }TRAMA; |
---|
90 | // ________________________________________________________________________________________________________ |
---|
91 | // Prototipo de funciones |
---|
92 | // ________________________________________________________________________________________________________ |
---|
93 | BOOLEAN validacionParametros(int,char**,int); |
---|
94 | char* reservaMemoria(int); |
---|
95 | char* ampliaMemoria(char*,int); |
---|
96 | void liberaMemoria(void*); |
---|
97 | BOOLEAN initParametros(TRAMA*,int); |
---|
98 | int splitCadena(char **,char *, char); |
---|
99 | char* StrToUpper(char *); |
---|
100 | void FINCADaINTRO(TRAMA*); |
---|
101 | char *tomaParametro(const char*,TRAMA*); |
---|
102 | char *copiaParametro(const char*,TRAMA *); |
---|
103 | BOOLEAN contieneIP(char *,char *); |
---|
104 | char* rTrim(char *); |
---|
105 | BOOLEAN enviaMensaje(SOCKET *,TRAMA *,char); |
---|
106 | BOOLEAN mandaTrama(SOCKET*,TRAMA*); |
---|
107 | BOOLEAN sendData(SOCKET *, char* ,int ); |
---|
108 | BOOLEAN enviaTrama(SOCKET *,TRAMA *); |
---|
109 | TRAMA* recibeTrama(SOCKET*); |
---|
110 | char* escaparCadena(char *cadena); |
---|
111 | |
---|
112 | #include <stddef.h> /* for offsetof. */ |
---|
113 | |
---|
114 | #define container_of(ptr, type, member) ({ \ |
---|
115 | typeof( ((type *)0)->member ) *__mptr = (ptr); \ |
---|
116 | (type *)( (char *)__mptr - offsetof(type,member) );}) |
---|
117 | |
---|
118 | #include <stdbool.h> |
---|
119 | |
---|
120 | bool tomaConfiguracion(const char *filecfg); |
---|