source: admin/Services/ogAdmServer/sources/ogAdmServer.h @ a3fb8b2

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 a3fb8b2 was b1f0d31, checked in by alonso <alonso@…>, 16 years ago

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

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