summaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
authoralonso <alonso@us.es>2010-06-29 11:50:45 +0000
committeralonso <alonso@us.es>2010-06-29 11:50:45 +0000
commit81b43511317aad3531f28c8d3b204b9f62c9c32a (patch)
treeaf0d866a1154e21448abe791dddd31bf6dbe90ac /admin
parent29b9d13e8bbb9b1759d3b337509648b44ae10031 (diff)
git-svn-id: https://opengnsys.es/svn/trunk@1073 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'admin')
-rw-r--r--admin/Services/ogAdmClient/sources/ogAdmClient.c43
-rw-r--r--admin/Services/ogAdmRepo/sources/ogAdmRepo.cpp26
-rw-r--r--admin/Services/ogAdmServer/sources/ogAdmServer.cpp64
-rw-r--r--admin/Services/ogAdmServer/sources/ogAdmServer.h1
4 files changed, 89 insertions, 45 deletions
diff --git a/admin/Services/ogAdmClient/sources/ogAdmClient.c b/admin/Services/ogAdmClient/sources/ogAdmClient.c
index ea8b8aa6..b7eb195c 100644
--- a/admin/Services/ogAdmClient/sources/ogAdmClient.c
+++ b/admin/Services/ogAdmClient/sources/ogAdmClient.c
@@ -927,6 +927,45 @@ int sesionMulticast(char *fileimg,char *nipes,char *ide)
// ________________________________________________________________________________________________________
int ProcesaComandos()
{
+ int lon;
+
+ while(TRUE){
+ lon=sprintf(trama->parametros,"nfn=DisponibilidadComandos\r");
+ lon+=sprintf(trama->parametros+lon,"swd=1\r"); // Disponible
+
+ if(AbreConexionTCP()){
+ if(!EnviaTramasHidra(sock,trama)){
+ UltimoError(21,"ProcesaComandos()"); // No se pudo enviar trama
+ return(false);
+ }
+ if(!recibe_tramas(sock,trama)){
+ UltimoError(22,"ProcesaComandos()"); // No se pudo recuperar trama
+ return(false);
+ }
+ CierraConexionTCP();
+ GestionTramas(trama); // Analiza procesa la trama
+ }
+ else{
+ UltimoError(2,"ProcesaComandos()");
+ return(false);
+ }
+ }
+ return(true);
+}
+//______________________________________________________________________________________________________
+// Función: ProcesaComandos
+//
+// Descripción:
+// Espera comando desde el Servidor de Administración para ejecutarlos
+// Parámetros:
+// Ninguno
+// Devuelve:
+// true si el archivo se ha eliminado correctamente o false en caso contrario
+// ________________________________________________________________________________________________________
+/*
+int ProcesaComandos()
+
+{
sprintf(filecmd,"/comandos/CMD_%s",Propiedades.IPlocal); // Nombre del fichero de comandos
if(ExisteFichero(filecmd)) // Borra fichero de comandos si previamente exista de anteriores procesos
RemoveFile(filecmd);
@@ -959,6 +998,8 @@ int ProcesaComandos()
}
return(true);
}
+*/
+
//______________________________________________________________________________________________________
// Función: DisponibilidadComandos
//
@@ -969,6 +1010,7 @@ int ProcesaComandos()
// Devuelve:
// true si el proceso es correcto y false en caso contrario
// ________________________________________________________________________________________________________
+/*
int DisponibilidadComandos(int swdis)
{
int lon;
@@ -997,6 +1039,7 @@ int DisponibilidadComandos(int swdis)
}
return(true);
}
+*/
//______________________________________________________________________________________________________
// Función: GestionTramas
//
diff --git a/admin/Services/ogAdmRepo/sources/ogAdmRepo.cpp b/admin/Services/ogAdmRepo/sources/ogAdmRepo.cpp
index 42c95f8c..b93b9f92 100644
--- a/admin/Services/ogAdmRepo/sources/ogAdmRepo.cpp
+++ b/admin/Services/ogAdmRepo/sources/ogAdmRepo.cpp
@@ -645,7 +645,7 @@ BOOLEAN respuesta_clienteHidra(TramaRepos *trmInfo)
Encriptar((char*)&trmInfo->trama);
ret=sendto(trmInfo->sck,(char*)&trmInfo->trama,strlen(trmInfo->trama.parametros)+11,0,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize);
if (ret == SOCKET_ERROR){
- RegistraLog("***sendto() fallo al enviar respuesta modulo respuesta_clienteHidra() :",true);
+ RegistraLog("sendto() fallo al enviar respuesta modulo respuesta_clienteHidra() :",true);
return(false);
}
return(true);
@@ -679,7 +679,7 @@ BOOLEAN respuesta_peticion(TramaRepos *trmInfo,const char *LitRes,char* swf,char
Encriptar((char*)trama);
ret=sendto(trmInfo->sck,(char*)trama,lon+11,0,(struct sockaddr*)&trmInfo->cliente,trmInfo->sockaddrsize);
if (ret == SOCKET_ERROR){
- RegistraLog("***sendto() fallo al enviar respuesta a peticin de comando:",true);
+ RegistraLog("sendto() fallo al enviar respuesta a peticin de comando:",true);
return(false);
}
return(true);
@@ -821,7 +821,7 @@ BOOLEAN sesionMulticast(TramaRepos *trmInfo)
sprintf(cmdshell,"%s/sendFileMcast %s \"%s:%s:%s:%sM:%s:%s\"",reposcripts,img,pom,mom,ipm,vlm,nip,"0");
res=system(cmdshell);
if(res>0)
- RegistraLog("*** Ha habido algún problema al iniciar sesión multicast",false);
+ RegistraLog(" Ha habido algún problema al iniciar sesión multicast",false);
}
return(true);
}
@@ -853,7 +853,7 @@ BOOLEAN iniSesionMulticast(char *iph,char *ide,char *nip)
}
if(!sw){ // No existe la entrada de la sesión
if (!hay_hueco(&idx)){ // Busca hueco para el nuevo cliente
- RegistraLog("*** No hay hueco para nueva sesión multicast",false);
+ RegistraLog(" No hay hueco para nueva sesión multicast",false);
return(false); // No hay huecos
}
strcpy(tbsmul[idx].ides,ide);// Copia identificador de la sesión
@@ -909,7 +909,7 @@ char * Buffer(int l)
char *buf;
buf=(char*)malloc(l);
if(buf==NULL){
- RegistraLog("*** fallo de reserva de memoria en modulo Buffer()",true);
+ RegistraLog(" fallo de reserva de memoria en modulo Buffer()",true);
return(false);
}
memset(buf,0,l);
@@ -1048,14 +1048,14 @@ int main(int argc, char **argv)
tbsmul[i].ipes=(char)NULL;
}
- RegistraLog("***Inicio de sesion***",false);
+ RegistraLog("Inicio de sesion***",false);
socket_s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // Crea socket para UDP
if (socket_s == SOCKET_ERROR){
- RegistraLog("***Error al crear socket para servicio del Repositorio:",true);
+ RegistraLog("Error al crear socket para servicio del Repositorio:",true);
exit(EXIT_FAILURE);
}
- RegistraLog("***Creando Socket para comunicaciones***",false);
+ RegistraLog("Creando Socket para comunicaciones***",false);
local.sin_addr.s_addr = inet_addr(IPlocal);// selecciona interface
local.sin_family = AF_INET;
@@ -1063,14 +1063,14 @@ int main(int argc, char **argv)
// Enlaza socket
if (bind(socket_s,(struct sockaddr *)&local,sizeof(local)) == SOCKET_ERROR){
- RegistraLog("***Error al enlazar socket con interface para servicio de Repositorio Hidra",true);
+ RegistraLog("Error al enlazar socket con interface para servicio de Repositorio Hidra",true);
exit(EXIT_FAILURE);;
}
- RegistraLog("***Enlazado Socket para comunicaciones***",false);
+ RegistraLog("Enlazado Socket para comunicaciones***",false);
while(true){
trmInfo = (TramaRepos*)malloc(sizeof(TramaRepos)); // Crea estructura de control para hebra
if (trmInfo == NULL){
- RegistraLog("***Fallo al crear estructura de control para protocolo REPO",false);
+ RegistraLog("Fallo al crear estructura de control para protocolo REPO",false);
exit(EXIT_FAILURE);;
}
// Inicializa trmInfo
@@ -1080,7 +1080,7 @@ int main(int argc, char **argv)
// Espera trmInfos Repositorio
ret = recvfrom(trmInfo->sck,(char *)&trmInfo->trama, sizeof(trmInfo->trama),0,(struct sockaddr *)&trmInfo->cliente, &trmInfo->sockaddrsize);
if (ret == SOCKET_ERROR){
- RegistraLog("***Error al recibir mensaje de cliente hidra. Se para el servicio de repositorio",true);
+ RegistraLog("Error al recibir mensaje de cliente hidra. Se para el servicio de repositorio",true);
exit(EXIT_FAILURE);
}
else{
@@ -1088,7 +1088,7 @@ int main(int argc, char **argv)
/*
resul=pthread_create(&hThread,NULL,GestionaServicioRepositorio,(LPVOID)trmInfo);
if(resul!=0){
- RegistraLog("***Fallo al crear la hebra cliente de repositorio Hidra",false);
+ RegistraLog("Fallo al crear la hebra cliente de repositorio Hidra",false);
exit(EXIT_FAILURE);
}
pthread_detach(hThread);
diff --git a/admin/Services/ogAdmServer/sources/ogAdmServer.cpp b/admin/Services/ogAdmServer/sources/ogAdmServer.cpp
index 653712eb..848f2c47 100644
--- a/admin/Services/ogAdmServer/sources/ogAdmServer.cpp
+++ b/admin/Services/ogAdmServer/sources/ogAdmServer.cpp
@@ -219,7 +219,6 @@ void gestiona_comando(SOCKET s, TRAMA trama) {
resul = strcmp(nombrefuncion, "DisponibilidadComandos");
if (resul == 0) {
DisponibilidadComandos(s, parametros);
- respuesta_cortesia(s);
return;
}
resul = strcmp(nombrefuncion, "EcoConsola");
@@ -374,12 +373,12 @@ void gestiona_comando(SOCKET s, TRAMA trama) {
estado_cliente = strcmp(tbsockets[i].estado, CLIENTE_REMBO);
if (estado_cliente == 0) { // Cliente Rembo ...
strcpy(tbsockets[i].estado, CLIENTE_OCUPADO);
- contOG++;
- MarcaServidoresRembo(tbsockets[i].ipsrvrmb,
- tbsockets[i].ip);
+ //contOG++;
+ //MarcaServidoresRembo(tbsockets[i].ipsrvrmb,tbsockets[i].ip);
+ manda_comando(tbsockets[i].sock, parametros);
+ close(tbsockets[i].sock);
} else {
- estado_cliente = strcmp(tbsockets[i].estado,
- CLIENTE_OCUPADO);
+ estado_cliente = strcmp(tbsockets[i].estado,CLIENTE_OCUPADO);
if (estado_cliente != 0) { // Cliente Windows(Windows98,Windows2000,windows XP...) y Linux
strcpy(tbsockets[i].estado, CLIENTE_OCUPADO);
manda_comando(tbsockets[i].sock, parametros);
@@ -391,7 +390,7 @@ void gestiona_comando(SOCKET s, TRAMA trama) {
}
}
}
- EnviaServidoresRembo(parametros, contOG);
+ //EnviaServidoresRembo(parametros, contOG);
}
}
// ________________________________________________________________________________________________________
@@ -434,7 +433,7 @@ int manda_trama(SOCKET sock, TRAMA* trama) {
if (ret == 0) {
break;
} else if (ret == SOCKET_ERROR) {
- RegistraLog("***send() fallo en hebra cliente", true);
+ RegistraLog("send() fallo en hebra cliente", true);
return (FALSE);
}
nLeft -= ret;
@@ -460,7 +459,7 @@ int recibe_trama(SOCKET sock, TRAMA* trama) {
break;
else {
if (ret == SOCKET_ERROR) {
- RegistraLog("***recv() fallo en recepcion trama", true);
+ RegistraLog("recv() fallo en recepcion trama", true);
return (FALSE);
} else
// Datos recibidos
@@ -1902,6 +1901,7 @@ int DisponibilidadComandos(SOCKET s, char *parametros) {
if (cliente_existente(iph, &i)) // Si ya existe la IP ...
resul = borra_entrada(i); // Cliente apagado
}
+ swcSocket=true;
return (resul);
}
// ________________________________________________________________________________________________________
@@ -2170,33 +2170,30 @@ int Actualizar(char *parametros) {
if (!trama)
return (false);
int i, estado_cliente, lon;
- char *iph, *rmb;
+ char *iph;
+ //char *rmb;
iph = toma_parametro("iph", parametros); // Toma ip
- rmb = toma_parametro("rmb", parametros); // Toma ipe del servidor rembo
+ //rmb = toma_parametro("rmb", parametros); // Toma ipe del servidor rembo
for (i = 0; i < MAXIMOS_SOCKETS; i++) {
if (strncmp(tbsockets[i].ip, "\0", 1) != 0) { // Si es un cliente activo
if (IgualIP(iph, tbsockets[i].ip)) { // Si existe la IP en la cadena
estado_cliente = strcmp(tbsockets[i].estado, CLIENTE_OCUPADO);
if (estado_cliente != 0) { // Cliente NO OCUPADO ...
- estado_cliente = strcmp(tbsockets[i].estado,
- CLIENTE_INICIANDO);
+ estado_cliente = strcmp(tbsockets[i].estado,CLIENTE_INICIANDO);
if (estado_cliente != 0) { // Cliente NO INICIANDO ...
- estado_cliente = strcmp(tbsockets[i].estado,
- CLIENTE_REMBO);
- if (estado_cliente != 0) { // Cliente windows o linux ...
- lon
- = sprintf(trama->parametros,
- "nfn=Actualizar\r");
- manda_comando(tbsockets[i].sock,
- (char*) trama->parametros);
- }
+ //estado_cliente = strcmp(tbsockets[i].estado,CLIENTE_REMBO);
+ //if (estado_cliente != 0) { // Cliente windows o linux ...
+ lon = sprintf(trama->parametros,"nfn=Actualizar\r");
+ manda_comando(tbsockets[i].sock,(char*) trama->parametros);
+ //}
borra_entrada(i);
}
}
}
}
}
+ /*
int j;
for (j = 0; j < MAXIMOS_SRVRMB; j++) {
if (strcmp(rmb, tbsocketsSRVRMB[j].ip) == 0) { // Si existe la IP ...
@@ -2205,7 +2202,8 @@ int Actualizar(char *parametros) {
tbsocketsSRVRMB[j].puertorepo));
}
}
- return (false);
+ */
+ return (true);
}
// ________________________________________________________________________________________________________
// Función: ConsolaRemota
@@ -3298,7 +3296,7 @@ int recibeFichero(char *ipr, char *rep, char *nomfilesrc, char *nomfiledst) {
f = fopen(nomfiledst, "wb");
if (!f) {
- RegistraLog("*** No se ha podido crear archivo", false);
+ RegistraLog(" No se ha podido crear archivo", false);
close(udpsock);
return (false);
}
@@ -3321,7 +3319,7 @@ int recibeFichero(char *ipr, char *rep, char *nomfilesrc, char *nomfiledst) {
return (true);
}
} else {
- RegistraLog("*** Error de recepción de archivo", false);
+ RegistraLog(" Error de recepción de archivo", false);
break;
}
envia_comandos(udpsock, &trama, ipr, atoi(rep));
@@ -3771,7 +3769,7 @@ int envia_comandos(SOCKET s, TRAMA* trama, char* ipsrv, int puerto) {
ret = sendto(s, (char *) trama, lon, 0, (struct sockaddr *) &addrRepo,
sizeof(addrRepo));
if (ret == SOCKET_ERROR) {
- RegistraLog("***send() fallo en envío al repositorio", true);
+ RegistraLog("send() fallo en envío al repositorio", true);
return (FALSE);
}
return true;
@@ -4445,11 +4443,11 @@ int main(int argc, char *argv[]) {
tbsockets[i].ip[0] = '\0'; // Inicializa IP
tbsockets[i].sock = INVALID_SOCKET; // Inicializa Socket
}
- RegistraLog("***Inicio de sesion***", false);
+ RegistraLog("Inicio de sesion***", false);
socket_s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Crea socket
if (socket_s == SOCKET_ERROR) {
- RegistraLog("***socket() fallo:", true);
+ RegistraLog("socket() fallo:", true);
}
local.sin_addr.s_addr = htonl(INADDR_ANY); // selecciona interface
local.sin_family = AF_INET;
@@ -4457,7 +4455,7 @@ int main(int argc, char *argv[]) {
if (bind(socket_s, (struct sockaddr *) &local, // Enlaza socket
sizeof(local)) == SOCKET_ERROR) {
- RegistraLog("***bind() fallo:", true);
+ RegistraLog("bind() fallo:", true);
exit(EXIT_FAILURE);
}
@@ -4467,18 +4465,20 @@ int main(int argc, char *argv[]) {
while (true) { // Bucle para escuchar peticiones de clientes
socket_c = accept(socket_s, (struct sockaddr *) &cliente, &iAddrSize);
if (socket_c == INVALID_SOCKET) {
- RegistraLog("***accept() fallo:", true);
+ RegistraLog("accept() fallo:", true);
break;
}
+ swcSocket=true;
//resul=pthread_create(&hThread,NULL,GestionaConexion,(void*)&socket_c);
GestionaConexion(&socket_c);
/*if(resul!=0){2
- RegistraLog("***Fallo al crear la hebra cliente",false);
+ RegistraLog("Fallo al crear la hebra cliente",false);
break;
}
*/
//pthread_detach(hThread);
- close(socket_c); // Cierra la conexión con el servidor hidra
+ if(!swcSocket)
+ close(socket_c); // Cierra la conexión sólo cuando el cliente no espera comandos interactivos
}
close(socket_s);
exit(EXIT_SUCCESS);
diff --git a/admin/Services/ogAdmServer/sources/ogAdmServer.h b/admin/Services/ogAdmServer/sources/ogAdmServer.h
index 87c78ff9..e2ac4006 100644
--- a/admin/Services/ogAdmServer/sources/ogAdmServer.h
+++ b/admin/Services/ogAdmServer/sources/ogAdmServer.h
@@ -44,6 +44,7 @@ char pasguor[20];
char datasource[20];
char catalog[50];
+int swcSocket;
struct s_socketCLRMB{ // Estructura usada para guardar información de los clientes
char ip[16]; // IP del cliente