1 | // *************************************************************************
|
---|
2 | // Aplicación: OPENGNSYS
|
---|
3 | // Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
|
---|
4 | // Fecha Creación: Año 2003-2004
|
---|
5 | // Fecha Última modificación: Marzo-2006
|
---|
6 | // Nombre del fichero: ogAdmServer.php
|
---|
7 | // Descripción :
|
---|
8 | // Este fichero aporta las funciones de localización y ejecución de tareas, trabajos o reservas.
|
---|
9 | // Necesita el servicio ogAdmServer para su envio a la red.
|
---|
10 | // *********************************************************************************************************************************************************
|
---|
11 | #include <sys/types.h>
|
---|
12 | #include <sys/socket.h>
|
---|
13 | #include <netinet/in.h>
|
---|
14 | #include <arpa/inet.h>
|
---|
15 | #include <stdio.h>
|
---|
16 | #include <stdlib.h>
|
---|
17 | #include <string.h>
|
---|
18 | #include <errno.h>
|
---|
19 | #include <unistd.h>
|
---|
20 | #include <time.h>
|
---|
21 | #include <ctype.h>
|
---|
22 | #include </usr/include/mysql/mysql.h>
|
---|
23 | #include <pthread.h>
|
---|
24 | #include "Database.h"
|
---|
25 | #include "ogAdmLib.h"
|
---|
26 |
|
---|
27 |
|
---|
28 |
|
---|
29 | #define SERVIDORHIDRA "127.0.0.1" // Servidor Hidra
|
---|
30 | #define PUERTO_DEFAULT 2003 // Puerto por defecto
|
---|
31 | #define USUARIO "usuhidra" // Usuario por defecto
|
---|
32 | #define PASGUOR "passusuhidra" // Password por defecto
|
---|
33 | #define DATASOURCE "127.0.0.1" // Servidor de base de datos
|
---|
34 | #define CATALOG "BDHidra" // Base de datos
|
---|
35 | #define CADENACONEXION "Provider=SQLOLEDB.1;Initial Catalog=%s;Data Source=%s;Packet Size=4096;"
|
---|
36 |
|
---|
37 | #define LONGITUD_PARAMETROS 4000 // Longitud máxima de la información de la trama (parametros)
|
---|
38 |
|
---|
39 | #define PROCESOS 0x01
|
---|
40 |
|
---|
41 | #define ACCION_EXITOSA "1" // Finalizada con exito
|
---|
42 | #define ACCION_FALLIDA "2" // Finalizada con errores
|
---|
43 | #define ACCION_TERMINADA "3" // Finalizada manualmente con indicacion de exito
|
---|
44 | #define ACCION_ABORTADA "4" // Finalizada manualmente con indicacion de errores
|
---|
45 | #define ACCION_SINERRORES "5" // Activa y sin ningún error
|
---|
46 | #define ACCION_CONERRORES "6" // Activa y con algún error
|
---|
47 |
|
---|
48 | #define ACCION_DETENIDA "0" // Acción momentanemente parada
|
---|
49 | #define ACCION_INICIADA "1" // Acción activa
|
---|
50 | #define ACCION_FINALIZADA "2" // Accion finalizada
|
---|
51 |
|
---|
52 | #define EJECUCION_COMANDO 0x0001 // Accion Comando
|
---|
53 | #define EJECUCION_TAREA 0x0002 // Accion Tarea
|
---|
54 | #define EJECUCION_TRABAJO 0x0003 // Accion Trabajo
|
---|
55 | #define EJECUCION_RESERVA 0x0004 // Reserva de aulas
|
---|
56 |
|
---|
57 | #define CHKREGISTRY(f) if (!(f)) { return 0;}
|
---|
58 | #define HIVE HKEY_LOCAL_MACHINE // Rama del registro donde estarán los parametros de conexión
|
---|
59 | #define BASEKEY "SOFTWARE\\Alonsoft" // Key del registro para parametros de conexión
|
---|
60 | #define BASE "SOFTWARE\\Alonsoft\\Hidra" // SubKey del registro para parametros de conexión
|
---|
61 |
|
---|
62 | char servidorhidra[20];
|
---|
63 | int puerto; // Puerto
|
---|
64 | char usuario[20];
|
---|
65 | char pasguor[20];
|
---|
66 | char datasource[20];
|
---|
67 | char catalog[50];
|
---|
68 | char cadenaconexion[1024];
|
---|
69 |
|
---|
70 | FILE *FLog; // Fichero de log
|
---|
71 |
|
---|
72 | BYTE HEX_annos[9];
|
---|
73 | WORD HEX_meses[13];
|
---|
74 | LONG HEX_dias[32];
|
---|
75 | WORD HEX_horas[13];
|
---|
76 | BYTE HEX_diasemana[8];
|
---|
77 | BYTE HEX_semanas[7];
|
---|
78 |
|
---|
79 | WORD dias_meses[13];
|
---|
80 |
|
---|
81 | typedef struct{ // Estructura de la trama recibida
|
---|
82 | char arroba; // Caracter arroba siempre
|
---|
83 | char identificador[9]; // Identificador de la trama, siempre JMMLCAMDJ:
|
---|
84 | char ejecutor; // Identificador del encargado de ejecutar la función ( 1= Servidor 2=Cliente rembo:
|
---|
85 | char parametros[LONGITUD_PARAMETROS]; // Contenido de la trama (parámetros)
|
---|
86 | }TRAMA;
|
---|
87 |
|
---|
88 | // Prototipo de funciones
|
---|
89 | void inicializa(void);
|
---|
90 | void Pausa(int);
|
---|
91 | int GestionaProgramacion(SYSTEMTIME);
|
---|
92 | int busca_accion(WORD ,WORD ,WORD ,WORD ,WORD,WORD );
|
---|
93 | int busca_reserva(WORD ,WORD ,WORD ,WORD ,WORD,WORD );
|
---|
94 |
|
---|
95 | int DiadelaSemana(WORD ,WORD ,WORD );
|
---|
96 | bool bisiesto(WORD );
|
---|
97 | int SemanadelMes(int ,int );
|
---|
98 | int EjecutarTrabajo(int ,Database,char* );
|
---|
99 | int EjecutarTarea(int ,int ,int ,int ,Database,char* );
|
---|
100 | int EjecutarReserva(int,Database,char*);
|
---|
101 |
|
---|
102 | int envia_comando(char*);
|
---|
103 | SOCKET AbreConexion(char*,int);
|
---|
104 | int TomaConfiguracion(void);
|
---|
105 | int manda_trama(SOCKET ,TRAMA* );
|
---|