summaryrefslogtreecommitdiffstats
path: root/admin/ogAdmSources/ogAdmServer/sources/ogAdmServer.h
diff options
context:
space:
mode:
Diffstat (limited to 'admin/ogAdmSources/ogAdmServer/sources/ogAdmServer.h')
-rw-r--r--admin/ogAdmSources/ogAdmServer/sources/ogAdmServer.h238
1 files changed, 238 insertions, 0 deletions
diff --git a/admin/ogAdmSources/ogAdmServer/sources/ogAdmServer.h b/admin/ogAdmSources/ogAdmServer/sources/ogAdmServer.h
new file mode 100644
index 00000000..6b8417b9
--- /dev/null
+++ b/admin/ogAdmSources/ogAdmServer/sources/ogAdmServer.h
@@ -0,0 +1,238 @@
+//****************************************************************************************************************************************************
+// Aplicación OpenGNSys
+// Autor: José Manuel Alonso.
+// Licencia: Open Source
+// Fichero: ogAdmServer.cpp
+// Descripción:
+// Este módulo de la aplicación OpenGNSys implementa las comunicaciones con el Servidor.
+// ****************************************************************************************************************************************************
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <time.h>
+#include <ctype.h>
+#include </usr/include/mysql/mysql.h>
+#include <pthread.h>
+#include "Database.h"
+
+#define LONGITUD_PARAMETROS 4000 // Longitud m�ima de la informaci� de la trama (parametros)
+#define LONGITUD_TRAMA LONGITUD_PARAMETROS+11 // Longitud m�ima de la trama completa
+#define MAXCMD_PARAMETROS 200 // M�imo numero de par�etros de una trama de comandos
+#define MAXIMOS_SOCKETS 4000 // M�imo numero de conexiones con ordenadores clientes
+#define MAXIMOS_SRVRMB 200 // Maximo numero de servidores rembo
+#define MAXLON_PARAMETROSIPH 3000 // M�ima longitud de un parametro iph
+
+#define MAX_INTERFACE_LIST 20
+#define MAX_NUM_CSADDRS 20
+
+#define MAXHARDWARE 30 // mÁXIMOS ELEMENTOS HARDSWARE A DETECTAR
+
+#define PUERTOMINUSER 40000
+#define PUERTOMAXUSER 60000
+
+#define LITAMBITO_CENTROS "centros"
+#define LITAMBITO_GRUPOSAULAS "gruposaulas"
+#define LITAMBITO_AULAS "aulas"
+#define LITAMBITO_GRUPOSORDENADORES "gruposordenadores"
+#define LITAMBITO_ORDENADORES "ordenadores"
+
+#define ACCION_EXITOSA "1" // Finalizada con exito
+#define ACCION_FALLIDA "2" // Finalizada con errores
+#define ACCION_TERMINADA "3" // Finalizada manualmente con indicacion de exito
+#define ACCION_ABORTADA "4" // Finalizada manualmente con indicacion de errores
+#define ACCION_SINERRORES "5" // Activa y sin ningn error
+#define ACCION_CONERRORES "6" // Activa y con algn error
+
+#define ACCION_DETENIDA "0" // Acci� momentanemente parada
+#define ACCION_INICIADA "1" // Acci� activa
+#define ACCION_FINALIZADA "2" // Accion finalizada
+
+#define PROCESOS 0x01
+
+#define EJECUCION_PROCEDIMIENTO 0x0000 // Accion Procedimiento
+#define EJECUCION_COMANDO 0x0001 // Accion Comando
+#define EJECUCION_TAREA 0x0002 // Accion Tarea
+#define EJECUCION_TRABAJO 0x0003 // Accion Trabajo
+
+#define EJECUTOR_servidorHIDRA 0x0001 // Ejecutor Servidor hidra
+#define EJECUTOR_clienteREMBO 0x0002 // Ejecutor cliente rembo
+#define EJECUTOR_servidorREMBO 0x0003 // Ejecutor Servidor rembo
+
+#define CLIENTE_REMBO "RMB" // Sistema operativo Rembo
+#define CLIENTE_OCUPADO "BSY" // Cliente ocupado
+#define CLIENTE_APAGADO "OFF" // Cliente apagado
+#define CLIENTE_INICIANDO "INI" // Cliente iniciando
+
+#define AUTOINCORPORACION_OFF 0x0000 // Los ordenadores no se pueden dar de alta autm�icamente
+#define AUTOINCORPORACION_ONA 0x0001 // Los ordenadores se pueden dar de alta autom�icamente si existe el aula
+#define AUTOINCORPORACION_ONX 0x0002 // Los ordenadores se pueden dar de alta autom�icamente y si no existe el aula la crea
+
+#define MAX_NUM_CSADDRS 20
+#define MAX_INTERFACE_LIST 20
+
+#define TRUE 1
+#define FALSE 0
+
+#define true 1
+#define false 0
+
+#define SOCKET_ERROR (-1)
+#define INVALID_SOCKET (SOCKET)(~0)
+
+// __________________________________________________________________________________________________________
+typedef unsigned long DWORD;
+typedef unsigned short WORD;
+typedef int BOOLEAN;
+typedef char BYTE;
+typedef int SOCKET;
+// __________________________________________________________________________________________________________
+
+char szPathFileLog[128],szPathFileCfg[128];
+FILE *FLog,*Fconfig;
+char AulaUp[2];
+int aulaup; // Switch para permitir que un ordenador se de de alta autom�icamente en un aula existenta
+ // Valores:
+ // 0: El ordenador No se da de alta autom�icamente en un aula
+ // 1: El ordenador se da de alta en un aula si existe
+ // 2: El ordenador se da de alta en un aula si existe y si no existe la crea para darse de alta
+
+char IPlocal[20]; // Ip local
+char servidorhidra[20]; // IP servidor HIDRA
+char Puerto[20]; // Puerto Unicode
+int puerto; // Puerto
+char usuario[20];
+char pasguor[20];
+char datasource[20];
+char catalog[50];
+
+typedef struct{ // Estructura de la trama recibida
+ char arroba; // Caracter arroba siempre
+ char identificador[9]; // Identificador de la trama, siempre JMMLCAMDJ:
+ char ejecutor; // Identificador del encargado de ejecutar la funci� ( 1= Servidor 2=Cliente rembo:
+ char parametros[LONGITUD_PARAMETROS]; // Contenido de la trama (par�etros)
+}TRAMA;
+
+struct s_socketCLRMB{ // Estructura usada para guardar informaci� de los clientes
+ char ip[16]; // IP del cliente
+ char estado[4]; // Tipo de sistema Operativo del cliente "RMB"=rembo,"W98"=windows98,"W2K"=windows 2000, etc
+ SOCKET sock; // Socket por el que se comunica
+ char ipsrvdhcp[16]; // IP del servidor dhcp
+ char ipsrvrmb[16]; // IP del servidor rembo
+};
+struct s_socketCLRMB tbsockets[MAXIMOS_SOCKETS];
+
+struct s_socketSRVRMB{ // Estructura usada para guardar informaci� de los servidores REMBO
+ char ip[16]; // IP del servidor rembo
+ int puertorepo;
+ char ipes[MAXLON_PARAMETROSIPH]; // IP de los clientes rembo
+ int swenv; // Switch de envio
+
+};
+struct s_socketSRVRMB tbsocketsSRVRMB[MAXIMOS_SRVRMB];
+
+static pthread_mutex_t guardia; // Controla acceso exclusivo de hebras
+
+// Prototipo de funciones
+void* GestionaConexion(void*);
+void gestiona_comando(SOCKET s,TRAMA trama);
+int manda_comando(SOCKET sock,char* parametros);
+int manda_trama(SOCKET sock,TRAMA* trama);
+int recibe_trama(SOCKET sock,TRAMA* trama);
+int manda_trama_servidorrembo(char* ,char *,int);
+
+SOCKET UDPConnect(char *);
+int envia_comandos(SOCKET ,TRAMA* , char* ,int);
+
+
+int hay_hueco(int *);
+BOOLEAN cliente_existente(char *,int*);
+int hay_huecoservidorrembo(int *);
+BOOLEAN servidorrembo_existente(char *,int*);
+BOOLEAN IgualIP(char*,char*);
+
+void INTROaFINCAD(char* );
+void FINCADaINTRO(char*,char*);
+
+int cuenta_ipes(char*);
+char * toma_parametro(const char*,char *);
+char * corte_iph(char *);
+
+int respuesta_cortesia(SOCKET );
+int NoComandosPendientes(SOCKET);
+int Coloca_estado(char *,const char *,SOCKET);
+int actualiza_configuracion(Database , Table ,char* ,int,int ,char* );
+int actualiza_hardware(Database , Table ,char* ,char* ,char*);
+int CuestrionPerfilHardware(Database , Table ,int ,char* ,int *,int ,char*);
+void TomaParticiones(char*, char* ,int );
+int Toma_menu(Database,Table,char*,int,int);
+int RecuperaItem(SOCKET,char *);
+int ComandosPendientes(SOCKET ,char *);
+int procesaCOMANDOS(SOCKET ,char *);
+int DisponibilidadComandos(SOCKET ,char *);
+
+int InclusionClienteHIDRA(SOCKET,char *);
+int inclusion_srvRMB(char *,int);
+int inclusion_REPO(SOCKET,char *);
+int inclusion_cliWINLNX(SOCKET ,char *);
+
+int Sondeo(SOCKET ,char *);
+int Arrancar(char *);
+int Actualizar(char *);
+int FicheroOperador(char *);
+int IconoItem(TRAMA*);
+int Conmutar(char *);
+int RenovarItems(char *);
+
+SOCKET AbreConexion(char *,int);
+void RegistraLog(const char *,int);
+
+void PurgarTablaSockets(char *);
+int borra_entrada(int);
+int RESPUESTA_Arrancar(SOCKET ,char *);
+int RESPUESTA_Apagar(SOCKET ,char *);
+int RESPUESTA_RemboOffline(SOCKET ,char *);
+int RESPUESTA_Reiniciar(SOCKET ,char *);
+int RESPUESTA_Actualizar(SOCKET,char *);
+int RESPUESTA_ExecShell(SOCKET ,char *);
+int RespuestaEstandar(char *,char *,char *,char*,Database, Table);
+int RESPUESTA_CrearPerfilSoftware(SOCKET ,char *);
+int RESPUESTA_CrearSoftwareIncremental(SOCKET,char *);
+int RESPUESTA_RestaurarImagen(SOCKET,char *);
+int RESPUESTA_ParticionaryFormatear(SOCKET ,char *);
+int RESPUESTA_Configurar(SOCKET ,char *);
+int RESPUESTA_TomaConfiguracion(SOCKET ,char *);
+int RESPUESTA_TomaHardware(SOCKET ,char *);
+
+int RESPUESTA_inclusionREPO(TRAMA*);
+
+int Actualiza_ordenador_imagen(char *,const char *,char *,Database);
+
+int busca_comandos(char* ,char*,char *,int *);
+int InsertaNotificaciones(int,int,int,char *,Database);
+int comprueba_resultados(int ,Database );
+int comprueba_finalizada(int ,char *,Database );
+
+void EnviaServidoresRembo(char*);
+void DesmarcaServidoresRembo(void);
+void MarcaServidoresRembo(char*,char*);
+
+int EjecutarItem(SOCKET,char *);
+BOOLEAN TomaIPServidorRembo(char*,int*);
+
+void envia_tarea(char* );
+int EjecutarTarea(int ,int ,int ,int , Database,char * );
+int EjecutarTrabajo(int ,Database,char * );
+int cuestion_nuevoordenador(Database,Table ,int*,char *,char *,char *,char *,char*,char*,char*);
+int alta_ordenador(Database db,Table tbl,int*,char *,char *,char*,int,int,int);
+int Toma_idservidorres(Database ,Table ,char*,char*,int*,int*);
+
+void cambiacarac(char *,char , char );
+int TomaConfiguracion(char* );
+int split_parametros(char **,char *, char *);
+struct tm * TomaHora();