source: admin/Services/ogAdmServer/sources/ogAdmServer.h @ 9a2cda1e

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 9a2cda1e was d08ec1cc, checked in by alonso <alonso@…>, 16 years ago

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

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