[85179ef] | 1 | //**************************************************************************************************************************************************** |
---|
[34fc87f] | 2 | // Aplicación OpenGNSys |
---|
| 3 | // Autor: José Manuel Alonso. |
---|
| 4 | // Licencia: Open Source |
---|
[9182fd9] | 5 | // Fichero: ogAdmServer.h |
---|
[34fc87f] | 6 | // Descripción: |
---|
[85179ef] | 7 | // Este módulo de la aplicación OpenGNSys implementa las comunicaciones con el Servidor. |
---|
[34fc87f] | 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" |
---|
[9fd5e97] | 23 | #include "ogAdmLib.h" |
---|
[34fc87f] | 24 | |
---|
[9fd5e97] | 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]; |
---|
[34fc87f] | 30 | FILE *FLog,*Fconfig; |
---|
| 31 | char AulaUp[2]; |
---|
[9fd5e97] | 32 | int aulaup; // Switch para permitir que un ordenador se de de alta automáticamente en un aula existenta |
---|
[9182fd9] | 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 |
---|
[34fc87f] | 42 | char usuario[20]; |
---|
| 43 | char pasguor[20]; |
---|
| 44 | char datasource[20]; |
---|
| 45 | char catalog[50]; |
---|
| 46 | |
---|
| 47 | |
---|
[9fd5e97] | 48 | struct s_socketCLRMB{ // Estructura usada para guardar información de los clientes |
---|
[34fc87f] | 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 | |
---|
[9fd5e97] | 57 | struct s_socketSRVRMB{ // Estructura usada para guardar información de los servidores REMBO |
---|
[34fc87f] | 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 *); |
---|
[b0bb14f] | 81 | char * escaparComillas(char*); |
---|
[34fc87f] | 82 | int respuesta_cortesia(SOCKET ); |
---|
| 83 | int NoComandosPendientes(SOCKET); |
---|
[dad9f34] | 84 | int Coloca_estado(char *,const char *,SOCKET); |
---|
[34fc87f] | 85 | int actualiza_configuracion(Database , Table ,char* ,int,int ,char* ); |
---|
| 86 | int actualiza_hardware(Database , Table ,char* ,char* ,char*); |
---|
[b1f0d31] | 87 | int actualiza_software(Database , Table ,char* ,char*,char*,char* ,char*); |
---|
[536adc4] | 88 | int CuestionPerfilHardware(Database , Table ,int ,char* ,int *,int ,char*); |
---|
[ec01697] | 89 | int CuestionPerfilSoftware(Database, Table ,int ,char* ,int *,int,char *,char*); |
---|
[536adc4] | 90 | |
---|
[34fc87f] | 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 | |
---|
[a6b881e] | 98 | int InclusionCliente(SOCKET,char *); |
---|
[34fc87f] | 99 | int inclusion_srvRMB(char *,int); |
---|
| 100 | int inclusion_REPO(SOCKET,char *); |
---|
| 101 | int inclusion_cliWINLNX(SOCKET ,char *); |
---|
| 102 | |
---|
| 103 | int Sondeo(SOCKET ,char *); |
---|
[2f4f9ff] | 104 | int EcoConsola(SOCKET ,char *); |
---|
[90f061f6] | 105 | int enviaEcoConsola(SOCKET ,const char *); |
---|
[34fc87f] | 106 | int Arrancar(char *); |
---|
| 107 | int Actualizar(char *); |
---|
| 108 | int FicheroOperador(char *); |
---|
| 109 | int IconoItem(TRAMA*); |
---|
| 110 | int Conmutar(char *); |
---|
[2f4f9ff] | 111 | int ConsolaRemota(char *); |
---|
[34fc87f] | 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 *); |
---|
[b0bb14f] | 119 | int RESPUESTA_IniciarSesion(SOCKET ,char *); |
---|
[34fc87f] | 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 *); |
---|
[536adc4] | 130 | int RESPUESTA_TomaSoftware(SOCKET ,char *); |
---|
[34fc87f] | 131 | |
---|
| 132 | int RESPUESTA_inclusionREPO(TRAMA*); |
---|
| 133 | |
---|
[dad9f34] | 134 | int Actualiza_ordenador_imagen(char *,const char *,char *,Database); |
---|
[34fc87f] | 135 | |
---|
| 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 | |
---|
[90f061f6] | 141 | void EnviaServidoresRembo(char*,int); |
---|
[34fc87f] | 142 | void DesmarcaServidoresRembo(void); |
---|
| 143 | void MarcaServidoresRembo(char*,char*); |
---|
| 144 | |
---|
| 145 | int EjecutarItem(SOCKET,char *); |
---|
| 146 | BOOLEAN TomaIPServidorRembo(char*,int*); |
---|
[277d0cd] | 147 | |
---|
[34fc87f] | 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*); |
---|
[90f061f6] | 154 | int tomaIpRepoPort(char *,char *,char *); |
---|
[34fc87f] | 155 | void cambiacarac(char *,char , char ); |
---|
| 156 | int TomaConfiguracion(char* ); |
---|
[9fd5e97] | 157 | |
---|
[90f061f6] | 158 | unsigned int TomaEnvio(); |
---|
| 159 | int recibeFichero(char *,char *,char *,char *); |
---|