1 | //**************************************************************************************************************************************************** |
---|
2 | // Aplicación OpenGNSys |
---|
3 | // Autor: José Manuel Alonso. |
---|
4 | // Licencia: Open Source |
---|
5 | // Fichero: ogAdmServer.h |
---|
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 | #include "ogAdmLib.h" |
---|
24 | |
---|
25 | #define AUTOINCORPORACION_OFF 0x0000 // Los ordenadores no se pueden dar de alta autmáticamente |
---|
26 | #define AUTOINCORPORACION_ONA 0x0001 // Los ordenadores se pueden dar de alta automáticamente si existe el aula |
---|
27 | #define AUTOINCORPORACION_ONX 0x0002 // Los ordenadores se pueden dar de alta automáticamente y si no existe el aula la crea |
---|
28 | |
---|
29 | char ecofile[512],msglog[512]; |
---|
30 | FILE *FLog,*Fconfig; |
---|
31 | char AulaUp[2]; |
---|
32 | int aulaup; // Switch para permitir que un ordenador se de de alta automáticamente en un aula existenta |
---|
33 | // Valores: |
---|
34 | // 0: El ordenador No se da de alta automáticamente en un aula |
---|
35 | // 1: El ordenador se da de alta en un aula si existe |
---|
36 | // 2: El ordenador se da de alta en un aula si existe y si no existe la crea para darse de alta |
---|
37 | |
---|
38 | char IPlocal[20]; // Ip local |
---|
39 | char servidorhidra[20]; // IP servidor HIDRA |
---|
40 | char Puerto[20]; // Puerto Unicode |
---|
41 | int puerto; // Puerto |
---|
42 | char usuario[20]; |
---|
43 | char pasguor[20]; |
---|
44 | char datasource[20]; |
---|
45 | char catalog[50]; |
---|
46 | |
---|
47 | |
---|
48 | struct s_socketCLRMB{ // Estructura usada para guardar información de los clientes |
---|
49 | char ip[16]; // IP del cliente |
---|
50 | char estado[4]; // Tipo de sistema Operativo del cliente "RMB"=rembo,"W98"=windows98,"W2K"=windows 2000, etc |
---|
51 | SOCKET sock; // Socket por el que se comunica |
---|
52 | char ipsrvdhcp[16]; // IP del servidor dhcp |
---|
53 | char ipsrvrmb[16]; // IP del servidor rembo |
---|
54 | }; |
---|
55 | struct s_socketCLRMB tbsockets[MAXIMOS_SOCKETS]; |
---|
56 | |
---|
57 | struct s_socketSRVRMB{ // Estructura usada para guardar información de los servidores REMBO |
---|
58 | char ip[16]; // IP del servidor rembo |
---|
59 | int puertorepo; |
---|
60 | char ipes[MAXLON_PARAMETROSIPH]; // IP de los clientes rembo |
---|
61 | int swenv; // Switch de envio |
---|
62 | |
---|
63 | }; |
---|
64 | struct s_socketSRVRMB tbsocketsSRVRMB[MAXIMOS_SRVRMB]; |
---|
65 | |
---|
66 | static pthread_mutex_t guardia; // Controla acceso exclusivo de hebras |
---|
67 | |
---|
68 | // Prototipo de funciones |
---|
69 | void* GestionaConexion(void*); |
---|
70 | void gestiona_comando(SOCKET s,TRAMA trama); |
---|
71 | int manda_comando(SOCKET sock,char* parametros); |
---|
72 | int manda_trama(SOCKET sock,TRAMA* trama); |
---|
73 | int manda_trama_servidorrembo(char* ,char *,int); |
---|
74 | SOCKET UDPConnect(char *); |
---|
75 | int envia_comandos(SOCKET ,TRAMA* , char* ,int); |
---|
76 | int hay_hueco(int *); |
---|
77 | BOOLEAN cliente_existente(char *,int*); |
---|
78 | int hay_huecoservidorrembo(int *); |
---|
79 | BOOLEAN servidorrembo_existente(char *,int*); |
---|
80 | char * corte_iph(char *); |
---|
81 | char * escaparComillas(char*); |
---|
82 | int respuesta_cortesia(SOCKET ); |
---|
83 | int NoComandosPendientes(SOCKET); |
---|
84 | int Coloca_estado(char *,const char *,SOCKET); |
---|
85 | int actualiza_configuracion(Database , Table ,char* ,int,int ,char* ); |
---|
86 | int actualiza_hardware(Database , Table ,char* ,char* ,char*); |
---|
87 | int actualiza_software(Database , Table ,char* ,char*,char*,char* ,char*); |
---|
88 | int CuestionPerfilHardware(Database , Table ,int ,char* ,int *,int ,char*); |
---|
89 | int CuestionPerfilSoftware(Database, Table ,int ,char* ,int *,int,char *,char*); |
---|
90 | |
---|
91 | void TomaParticiones(char*, char* ,int ); |
---|
92 | int Toma_menu(Database,Table,char*,int,int); |
---|
93 | int RecuperaItem(SOCKET,char *); |
---|
94 | int ComandosPendientes(SOCKET ,char *); |
---|
95 | int procesaCOMANDOS(SOCKET ,char *); |
---|
96 | int DisponibilidadComandos(SOCKET ,char *); |
---|
97 | |
---|
98 | int InclusionCliente(SOCKET,char *); |
---|
99 | int inclusion_srvRMB(char *,int); |
---|
100 | int inclusion_REPO(SOCKET,char *); |
---|
101 | int inclusion_cliWINLNX(SOCKET ,char *); |
---|
102 | |
---|
103 | int Sondeo(SOCKET ,char *); |
---|
104 | int EcoConsola(SOCKET ,char *); |
---|
105 | int enviaEcoConsola(SOCKET ,const char *); |
---|
106 | int Arrancar(char *); |
---|
107 | int Actualizar(char *); |
---|
108 | int FicheroOperador(char *); |
---|
109 | int IconoItem(TRAMA*); |
---|
110 | int Conmutar(char *); |
---|
111 | int ConsolaRemota(char *); |
---|
112 | int RenovarItems(char *); |
---|
113 | |
---|
114 | void PurgarTablaSockets(char *); |
---|
115 | int borra_entrada(int); |
---|
116 | int RESPUESTA_Arrancar(SOCKET ,char *); |
---|
117 | int RESPUESTA_Apagar(SOCKET ,char *); |
---|
118 | int RESPUESTA_Reiniciar(SOCKET ,char *); |
---|
119 | int RESPUESTA_IniciarSesion(SOCKET ,char *); |
---|
120 | int RESPUESTA_Actualizar(SOCKET,char *); |
---|
121 | int RESPUESTA_ExecShell(SOCKET ,char *); |
---|
122 | int RespuestaEstandar(char *,char *,char *,char*,Database, Table); |
---|
123 | int RESPUESTA_CrearPerfilSoftware(SOCKET ,char *); |
---|
124 | int RESPUESTA_CrearSoftwareIncremental(SOCKET,char *); |
---|
125 | int RESPUESTA_RestaurarImagen(SOCKET,char *); |
---|
126 | int RESPUESTA_ParticionaryFormatear(SOCKET ,char *); |
---|
127 | int RESPUESTA_Configurar(SOCKET ,char *); |
---|
128 | int RESPUESTA_TomaConfiguracion(SOCKET ,char *); |
---|
129 | int RESPUESTA_TomaHardware(SOCKET ,char *); |
---|
130 | int RESPUESTA_TomaSoftware(SOCKET ,char *); |
---|
131 | |
---|
132 | int RESPUESTA_inclusionREPO(TRAMA*); |
---|
133 | |
---|
134 | int Actualiza_ordenador_imagen(char *,const char *,char *,Database); |
---|
135 | int Actualiza_ordenador_perfil(char *,char *, char*, Database); |
---|
136 | int busca_comandos(char* ,char*,char *,int *); |
---|
137 | int InsertaNotificaciones(int,int,int,char *,Database); |
---|
138 | int comprueba_resultados(int ,Database ); |
---|
139 | int comprueba_finalizada(int ,char *,Database ); |
---|
140 | |
---|
141 | void EnviaServidoresRembo(char*,int); |
---|
142 | void DesmarcaServidoresRembo(void); |
---|
143 | void MarcaServidoresRembo(char*,char*); |
---|
144 | |
---|
145 | int EjecutarItem(SOCKET,char *); |
---|
146 | BOOLEAN TomaIPServidorRembo(char*,int*); |
---|
147 | |
---|
148 | void envia_tarea(char* ); |
---|
149 | int EjecutarTarea(int ,int ,int ,int , Database,char * ); |
---|
150 | int EjecutarTrabajo(int ,Database,char * ); |
---|
151 | int cuestion_nuevoordenador(Database,Table ,int*,char *,char *,char *,char *,char*,char*,char*); |
---|
152 | int alta_ordenador(Database db,Table tbl,int*,char *,char *,char*,int,int,int); |
---|
153 | int Toma_idservidorres(Database ,Table ,char*,char*,int*,int*); |
---|
154 | int tomaIpRepoPort(char *,char *,char *); |
---|
155 | void cambiacarac(char *,char , char ); |
---|
156 | int TomaConfiguracion(char* ); |
---|
157 | |
---|
158 | unsigned int TomaEnvio(); |
---|
159 | int recibeFichero(char *,char *,char *,char *); |
---|