source: admin/Services/ogAdmServer/sources/ogAdmServer.h @ 06be672

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 06be672 was 2f4f9ff, checked in by alonso <alonso@…>, 15 years ago

git-svn-id: https://opengnsys.es/svn/trunk@848 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 9.2 KB
Line 
1//****************************************************************************************************************************************************
2//      Aplicación OpenGNSys
3//      Autor: José Manuel Alonso.
4//      Licencia: Open Source
5//      Fichero: ogAdmServer.cpp
6//      Descripción:
7//              Este módulo de la aplicación OpenGNSys implementa las comunicaciones con el Servidor.
8// ****************************************************************************************************************************************************
9#include <sys/types.h>
10#include <sys/socket.h>
11#include <netinet/in.h>
12#include <arpa/inet.h>
13#include <stdio.h>
14#include <stdlib.h>
15#include <string.h>
16#include <errno.h>
17#include <unistd.h>
18#include <time.h>
19#include <ctype.h>
20#include </usr/include/mysql/mysql.h>
21#include <pthread.h>
22#include "Database.h"
23
24#define LONGITUD_PARAMETROS 4000        // Longitud m�ima de la informaci� de la trama (parametros)
25#define LONGITUD_TRAMA          LONGITUD_PARAMETROS+11  // Longitud m�ima de la trama completa
26#define MAXCMD_PARAMETROS  200  // M�imo numero de par�etros de una trama de comandos
27#define MAXIMOS_SOCKETS    4000 // M�imo numero de conexiones con ordenadores clientes
28#define MAXIMOS_SRVRMB          200 // Maximo numero de servidores rembo
29#define MAXLON_PARAMETROSIPH  3000 // M�ima longitud de un parametro iph
30
31#define MAX_INTERFACE_LIST     20
32#define MAX_NUM_CSADDRS        20
33
34#define MAXHARDWARE 128 //       mÁXIMOS ELEMENTOS HARDSWARE A DETECTAR
35#define MAXSOFTWARE 2048 //      mÁXIMOS ELEMENTOS SOFTWARE A DETECTAR
36
37#define PUERTOMINUSER 40000
38#define PUERTOMAXUSER 60000
39
40#define COMILLAS_SIMPES 0x27
41#define DOBLES_COMILLAS 0x22
42#define BARRA_INVERTIDA 0x5c
43
44#define LITAMBITO_CENTROS               "centros"
45#define LITAMBITO_GRUPOSAULAS           "gruposaulas"
46#define LITAMBITO_AULAS                 "aulas"
47#define LITAMBITO_GRUPOSORDENADORES     "gruposordenadores"
48#define LITAMBITO_ORDENADORES           "ordenadores"
49
50#define ACCION_EXITOSA          "1" // Finalizada con exito
51#define ACCION_FALLIDA          "2" // Finalizada con errores
52#define ACCION_TERMINADA        "3" // Finalizada manualmente con indicacion de exito
53#define ACCION_ABORTADA         "4" // Finalizada manualmente con indicacion de errores
54#define ACCION_SINERRORES       "5" // Activa y sin ningn error
55#define ACCION_CONERRORES       "6" // Activa y con algn error
56
57#define ACCION_DETENIDA         "0" // Acci� momentanemente parada
58#define ACCION_INICIADA                 "1" // Acci� activa
59#define ACCION_FINALIZADA       "2" // Accion finalizada
60
61#define PROCESOS 0x01
62
63#define EJECUCION_PROCEDIMIENTO 0x0000 // Accion Procedimiento
64#define EJECUCION_COMANDO       0x0001 // Accion Comando
65#define EJECUCION_TAREA         0x0002 // Accion Tarea
66#define EJECUCION_TRABAJO               0x0003 // Accion Trabajo
67
68#define EJECUTOR_servidorHIDRA  0x0001 // Ejecutor Servidor hidra
69#define EJECUTOR_clienteREMBO   0x0002 // Ejecutor cliente rembo
70#define EJECUTOR_servidorREMBO  0x0003 // Ejecutor Servidor rembo
71
72#define CLIENTE_REMBO   "RMB" // Sistema operativo Rembo
73#define CLIENTE_OCUPADO "BSY" // Cliente ocupado
74#define CLIENTE_APAGADO "OFF" // Cliente apagado
75#define CLIENTE_INICIANDO       "INI" // Cliente iniciando
76
77#define AUTOINCORPORACION_OFF   0x0000 // Los ordenadores no se pueden dar de alta autm�icamente
78#define AUTOINCORPORACION_ONA   0x0001 // Los ordenadores se pueden dar de alta autom�icamente si existe el aula
79#define AUTOINCORPORACION_ONX   0x0002 // Los ordenadores se pueden dar de alta autom�icamente y si no existe el aula la crea
80
81#define MAX_NUM_CSADDRS        20
82#define MAX_INTERFACE_LIST     20
83
84#define TRUE 1
85#define FALSE 0
86
87#define true 1
88#define false 0
89
90#define SOCKET_ERROR            (-1)
91#define INVALID_SOCKET  (SOCKET)(~0)
92
93// __________________________________________________________________________________________________________
94typedef unsigned long DWORD;
95typedef unsigned short  WORD;
96typedef  int  BOOLEAN;
97typedef char  BYTE;
98typedef  int  SOCKET;
99// __________________________________________________________________________________________________________
100
101char szPathFileLog[128],szPathFileCfg[128],ecofile[250],msglog[250];
102FILE *FLog,*Fconfig;
103char AulaUp[2];
104int aulaup;     // Switch para permitir  que un ordenador se de de alta autom�icamente en un aula existenta
105                                                // Valores:
106                                                //      0: El ordenador No se da de alta autom�icamente en un aula
107                                                //      1: El ordenador se da de alta en un aula si existe
108                                                //      2: El ordenador se da de alta en un aula si existe y si no existe la crea para darse de alta
109
110char IPlocal[20];               // Ip local
111char servidorhidra[20];                 // IP servidor HIDRA
112char Puerto[20];                // Puerto Unicode
113int puerto;     // Puerto
114char usuario[20];
115char pasguor[20];
116char datasource[20];
117char catalog[50];
118
119typedef struct{         // Estructura de la trama recibida
120                char arroba;    // Caracter arroba siempre
121                char identificador[9];  // Identificador de la trama, siempre JMMLCAMDJ:
122                char ejecutor;  // Identificador del encargado de ejecutar la funci� ( 1= Servidor  2=Cliente rembo:
123                char parametros[LONGITUD_PARAMETROS]; // Contenido de la trama (par�etros)
124}TRAMA;
125
126struct s_socketCLRMB{ // Estructura usada para guardar informaci� de los clientes
127        char ip[16]; // IP del cliente
128        char estado[4]; // Tipo de sistema Operativo del cliente "RMB"=rembo,"W98"=windows98,"W2K"=windows 2000, etc
129        SOCKET sock; // Socket por el que se comunica
130        char ipsrvdhcp[16]; // IP del servidor dhcp
131        char ipsrvrmb[16]; // IP del servidor rembo
132};
133struct s_socketCLRMB tbsockets[MAXIMOS_SOCKETS];
134
135struct s_socketSRVRMB{ // Estructura usada para guardar informaci� de los servidores REMBO
136        char ip[16]; // IP del servidor rembo
137        int puertorepo;
138        char ipes[MAXLON_PARAMETROSIPH]; // IP de los clientes rembo
139        int swenv; // Switch de envio
140
141};
142struct s_socketSRVRMB tbsocketsSRVRMB[MAXIMOS_SRVRMB];
143
144static pthread_mutex_t guardia; // Controla acceso exclusivo de hebras
145
146// Prototipo de funciones
147void* GestionaConexion(void*);
148void gestiona_comando(SOCKET s,TRAMA trama);
149int manda_comando(SOCKET sock,char* parametros);
150int manda_trama(SOCKET sock,TRAMA* trama);
151int recibe_trama(SOCKET sock,TRAMA* trama);
152int manda_trama_servidorrembo(char* ,char *,int);
153
154SOCKET UDPConnect(char *);
155int envia_comandos(SOCKET ,TRAMA* , char* ,int);
156
157
158int hay_hueco(int *);
159BOOLEAN cliente_existente(char *,int*);
160int hay_huecoservidorrembo(int *);
161BOOLEAN servidorrembo_existente(char *,int*);
162BOOLEAN IgualIP(char*,char*);
163
164void INTROaFINCAD(char* );
165void FINCADaINTRO(char*,char*);
166
167int cuenta_ipes(char*);
168char * toma_parametro(const char*,char *);
169char * corte_iph(char *);
170char * escaparComillas(char*);
171
172int respuesta_cortesia(SOCKET );
173int NoComandosPendientes(SOCKET);
174int Coloca_estado(char *,const char *,SOCKET);
175int actualiza_configuracion(Database , Table ,char* ,int,int ,char* );
176int actualiza_hardware(Database , Table ,char* ,char* ,char*);
177int actualiza_software(Database , Table ,char* ,char*,char*,char* ,char*);
178int CuestionPerfilHardware(Database , Table ,int ,char* ,int *,int ,char*);
179int CuestionPerfilSoftware(Database, Table ,int ,char* ,int *,int,char *,char*);
180
181void TomaParticiones(char*, char* ,int );
182int     Toma_menu(Database,Table,char*,int,int);
183int RecuperaItem(SOCKET,char *);
184int ComandosPendientes(SOCKET ,char *);
185int procesaCOMANDOS(SOCKET ,char *);
186int DisponibilidadComandos(SOCKET ,char *);
187
188int InclusionCliente(SOCKET,char *);
189int inclusion_srvRMB(char *,int);
190int inclusion_REPO(SOCKET,char *);
191int inclusion_cliWINLNX(SOCKET ,char *);
192
193int Sondeo(SOCKET ,char *);
194int EcoConsola(SOCKET ,char *);
195int Arrancar(char *);
196int Actualizar(char *);
197int FicheroOperador(char *);
198int IconoItem(TRAMA*);
199int Conmutar(char *);
200int ConsolaRemota(char *);
201int RenovarItems(char *);
202
203SOCKET AbreConexion(char *,int);
204void RegistraLog(const char *,int);
205
206void PurgarTablaSockets(char *);
207int borra_entrada(int);
208int RESPUESTA_Arrancar(SOCKET ,char *);
209int RESPUESTA_Apagar(SOCKET ,char *);
210int RESPUESTA_Reiniciar(SOCKET ,char *);
211int RESPUESTA_IniciarSesion(SOCKET ,char *);
212int RESPUESTA_Actualizar(SOCKET,char *);
213int RESPUESTA_ExecShell(SOCKET ,char *);
214int RespuestaEstandar(char *,char *,char *,char*,Database, Table);
215int RESPUESTA_CrearPerfilSoftware(SOCKET ,char *);
216int RESPUESTA_CrearSoftwareIncremental(SOCKET,char *);
217int RESPUESTA_RestaurarImagen(SOCKET,char *);
218int RESPUESTA_ParticionaryFormatear(SOCKET ,char *);
219int RESPUESTA_Configurar(SOCKET ,char *);
220int RESPUESTA_TomaConfiguracion(SOCKET ,char *);
221int RESPUESTA_TomaHardware(SOCKET ,char *);
222int RESPUESTA_TomaSoftware(SOCKET ,char *);
223
224int     RESPUESTA_inclusionREPO(TRAMA*);
225
226int Actualiza_ordenador_imagen(char *,const char *,char *,Database);
227
228int busca_comandos(char* ,char*,char *,int *);
229int InsertaNotificaciones(int,int,int,char *,Database);
230int comprueba_resultados(int ,Database );
231int comprueba_finalizada(int ,char *,Database );
232
233void EnviaServidoresRembo(char*);
234void DesmarcaServidoresRembo(void);
235void MarcaServidoresRembo(char*,char*);
236
237int EjecutarItem(SOCKET,char *);
238BOOLEAN TomaIPServidorRembo(char*,int*);
239 
240void envia_tarea(char* );
241int EjecutarTarea(int ,int ,int ,int , Database,char * );
242int EjecutarTrabajo(int ,Database,char *  );
243int cuestion_nuevoordenador(Database,Table ,int*,char *,char *,char *,char *,char*,char*,char*);
244int alta_ordenador(Database db,Table tbl,int*,char *,char *,char*,int,int,int);
245int Toma_idservidorres(Database ,Table ,char*,char*,int*,int*);
246
247void cambiacarac(char *,char , char );
248int TomaConfiguracion(char* );
249int split_parametros(char **,char *, char *);
250struct tm * TomaHora();
Note: See TracBrowser for help on using the repository browser.