[949f074] | 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 | |
---|