[5ea3638] | 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* );
|
---|