mirror of https://git.48k.eu/ogserver
#915 remove Sondeo(), respuestaSondeo(), ConsolaRemota(), Arrancar() and EcoConsola()
The new REST API obsoletes the following commands: - Sondeo() has been replaced by GET /clients. - respuestaSondeo() has been replaced by POST /clients. - ConsolaRemota() has been replaced by POST /shell/run. - EcoConsola() has been replaced by POST /shell/output. - Arrancar() has been replaced by POST /wol.master
parent
7ab5f0cbfb
commit
8abc82f647
|
@ -138,78 +138,6 @@ static inline int og_client_socket(const struct og_client *cli)
|
||||||
return cli->io.fd;
|
return cli->io.fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
// Función: Sondeo
|
|
||||||
//
|
|
||||||
// Descripción:
|
|
||||||
// Solicita a los clientes su disponibiliad para recibir comandos interactivos
|
|
||||||
// Parámetros:
|
|
||||||
// - socket_c: Socket del cliente que envió el mensaje
|
|
||||||
// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje
|
|
||||||
// Devuelve:
|
|
||||||
// true: Si el proceso es correcto
|
|
||||||
// false: En caso de ocurrir algún error
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
static bool Sondeo(TRAMA* ptrTrama, struct og_client *cli)
|
|
||||||
{
|
|
||||||
if (!enviaComando(ptrTrama, CLIENTE_APAGADO)) {
|
|
||||||
respuestaConsola(og_client_socket(cli), ptrTrama, false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
respuestaConsola(og_client_socket(cli), ptrTrama, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
// Función: respuestaSondeo
|
|
||||||
//
|
|
||||||
// Descripción:
|
|
||||||
// Recupera el estatus de los ordenadores solicitados leyendo la tabla de sockets
|
|
||||||
// Parámetros:
|
|
||||||
// - socket_c: Socket del cliente que envió el mensaje
|
|
||||||
// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje
|
|
||||||
// Devuelve:
|
|
||||||
// true: Si el proceso es correcto
|
|
||||||
// false: En caso de ocurrir algún error
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
static bool respuestaSondeo(TRAMA* ptrTrama, struct og_client *cli)
|
|
||||||
{
|
|
||||||
int socket_c = og_client_socket(cli);
|
|
||||||
int i;
|
|
||||||
long lSize;
|
|
||||||
char *iph, *Ipes;
|
|
||||||
|
|
||||||
iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP
|
|
||||||
lSize = strlen(iph); // Calcula longitud de la cadena de direccion/es IPE/S
|
|
||||||
Ipes = (char*) reservaMemoria(lSize + 1);
|
|
||||||
if (Ipes == NULL) {
|
|
||||||
liberaMemoria(iph);
|
|
||||||
syslog(LOG_ERR, "%s:%d OOM\n", __FILE__, __LINE__);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
strcpy(Ipes, iph); // Copia cadena de IPES
|
|
||||||
liberaMemoria(iph);
|
|
||||||
initParametros(ptrTrama,0);
|
|
||||||
strcpy(ptrTrama->parametros, "tso="); // Compone retorno tso (sistemas operativos de los clientes )
|
|
||||||
for (i = 0; i < MAXIMOS_CLIENTES; i++) {
|
|
||||||
if (strncmp(tbsockets[i].ip, "\0", 1) != 0) { // Si es un cliente activo
|
|
||||||
if (contieneIP(Ipes, tbsockets[i].ip)) { // Si existe la IP en la cadena
|
|
||||||
strcat(ptrTrama->parametros, tbsockets[i].ip); // Compone retorno
|
|
||||||
strcat(ptrTrama->parametros, "/"); // "ip/sistema operativo;"
|
|
||||||
strcat(ptrTrama->parametros, tbsockets[i].estado);
|
|
||||||
strcat(ptrTrama->parametros, ";");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
strcat(ptrTrama->parametros, "\r");
|
|
||||||
liberaMemoria(Ipes);
|
|
||||||
if (!mandaTrama(&socket_c, ptrTrama)) {
|
|
||||||
syslog(LOG_ERR, "failed to send response to %s:%hu reason=%s\n",
|
|
||||||
inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port),
|
|
||||||
strerror(errno));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// ________________________________________________________________________________________________________
|
// ________________________________________________________________________________________________________
|
||||||
// Función: Actualizar
|
// Función: Actualizar
|
||||||
//
|
//
|
||||||
|
@ -251,84 +179,6 @@ static bool Purgar(TRAMA* ptrTrama, struct og_client *cli)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// ________________________________________________________________________________________________________
|
// ________________________________________________________________________________________________________
|
||||||
// Función: ConsolaRemota
|
|
||||||
//
|
|
||||||
// Descripción:
|
|
||||||
// Envia un script al cliente, éste lo ejecuta y manda el archivo que genera la salida por pantalla
|
|
||||||
// Parámetros:
|
|
||||||
// - socket_c: Socket del cliente que envió el mensaje
|
|
||||||
// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje
|
|
||||||
// Devuelve:
|
|
||||||
// true: Si el proceso es correcto
|
|
||||||
// false: En caso de ocurrir algún error
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
static bool ConsolaRemota(TRAMA* ptrTrama, struct og_client *cli)
|
|
||||||
{
|
|
||||||
char *iph, fileco[LONPRM], *ptrIpes[MAXIMOS_CLIENTES];;
|
|
||||||
FILE* f;
|
|
||||||
int i,lon;
|
|
||||||
|
|
||||||
if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) {
|
|
||||||
respuestaConsola(og_client_socket(cli), ptrTrama, false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
INTROaFINCAD(ptrTrama);
|
|
||||||
/* Destruye contenido del fichero de eco anterior */
|
|
||||||
iph = copiaParametro("iph",ptrTrama); // Toma dirección ip del cliente
|
|
||||||
lon = splitCadena(ptrIpes,iph,';');
|
|
||||||
for (i = 0; i < lon; i++) {
|
|
||||||
sprintf(fileco,"/tmp/_Seconsola_%s",ptrIpes[i]); // Nombre que tendra el archivo en el Servidor
|
|
||||||
f = fopen(fileco, "wt");
|
|
||||||
fclose(f);
|
|
||||||
}
|
|
||||||
liberaMemoria(iph);
|
|
||||||
respuestaConsola(og_client_socket(cli), ptrTrama, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
// Función: EcoConsola
|
|
||||||
//
|
|
||||||
// Descripción:
|
|
||||||
// Solicita el eco de una consola remota almacenado en un archivo de eco
|
|
||||||
// Parámetros:
|
|
||||||
// - socket_c: Socket del cliente que envió el mensaje
|
|
||||||
// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros del mensaje
|
|
||||||
// Devuelve:
|
|
||||||
// true: Si el proceso es correcto
|
|
||||||
// false: En caso de ocurrir algún error
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
static bool EcoConsola(TRAMA* ptrTrama, struct og_client *cli)
|
|
||||||
{
|
|
||||||
int socket_c = og_client_socket(cli);
|
|
||||||
char *iph,fileco[LONPRM],*buffer;
|
|
||||||
int lSize;
|
|
||||||
|
|
||||||
INTROaFINCAD(ptrTrama);
|
|
||||||
// Lee archivo de eco de consola
|
|
||||||
iph = copiaParametro("iph",ptrTrama); // Toma dirección ip del cliente
|
|
||||||
sprintf(fileco,"/tmp/_Seconsola_%s",iph); // Nombre del archivo en el Servidor
|
|
||||||
liberaMemoria(iph);
|
|
||||||
lSize=lonArchivo(fileco);
|
|
||||||
if(lSize>0){ // Si el fichero tiene contenido...
|
|
||||||
initParametros(ptrTrama,lSize+LONGITUD_PARAMETROS);
|
|
||||||
buffer=leeArchivo(fileco);
|
|
||||||
sprintf(ptrTrama->parametros,"res=%s\r",buffer);
|
|
||||||
liberaMemoria(buffer);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
initParametros(ptrTrama,0);
|
|
||||||
sprintf(ptrTrama->parametros,"res=\r");
|
|
||||||
}
|
|
||||||
ptrTrama->tipo=MSG_RESPUESTA; // Tipo de mensaje
|
|
||||||
if (!mandaTrama(&socket_c, ptrTrama)) {
|
|
||||||
syslog(LOG_ERR, "failed to send response to %s:%hu reason=%s\n",
|
|
||||||
inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port),
|
|
||||||
strerror(errno));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
// Función: clienteDisponible
|
// Función: clienteDisponible
|
||||||
//
|
//
|
||||||
// Descripción:
|
// Descripción:
|
||||||
|
@ -1394,50 +1244,6 @@ bool respuestaConsola(int socket_c, TRAMA *ptrTrama, int res)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// ________________________________________________________________________________________________________
|
// ________________________________________________________________________________________________________
|
||||||
// Función: Arrancar
|
|
||||||
//
|
|
||||||
// Descripción:
|
|
||||||
// Procesa el comando Arrancar
|
|
||||||
// Parámetros:
|
|
||||||
// - socket_c: Socket de la consola al envió el mensaje
|
|
||||||
// - ptrTrama: Trama recibida por el servidor con el contenido y los parámetros
|
|
||||||
// Devuelve:
|
|
||||||
// true: Si el proceso es correcto
|
|
||||||
// false: En caso de ocurrir algún error
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
static bool Arrancar(TRAMA* ptrTrama, struct og_client *cli)
|
|
||||||
{
|
|
||||||
char *ptrIP[MAXIMOS_CLIENTES],*ptrMacs[MAXIMOS_CLIENTES];
|
|
||||||
char *iph,*mac,*mar;
|
|
||||||
bool res;
|
|
||||||
int lon;
|
|
||||||
|
|
||||||
iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP
|
|
||||||
mac = copiaParametro("mac",ptrTrama); // Toma dirección/es MAC
|
|
||||||
mar = copiaParametro("mar",ptrTrama); // Método de arranque (Broadcast o Unicast)
|
|
||||||
|
|
||||||
lon = splitCadena(ptrIP, iph, ';');
|
|
||||||
lon = splitCadena(ptrMacs, mac, ';');
|
|
||||||
|
|
||||||
res = Levanta(ptrIP, ptrMacs, lon, mar);
|
|
||||||
|
|
||||||
liberaMemoria(iph);
|
|
||||||
liberaMemoria(mac);
|
|
||||||
liberaMemoria(mar);
|
|
||||||
|
|
||||||
if(!res){
|
|
||||||
respuestaConsola(og_client_socket(cli), ptrTrama, false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) {
|
|
||||||
respuestaConsola(og_client_socket(cli), ptrTrama, false);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
respuestaConsola(og_client_socket(cli), ptrTrama, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// ________________________________________________________________________________________________________
|
|
||||||
// Función: Levanta
|
// Función: Levanta
|
||||||
//
|
//
|
||||||
// Descripción:
|
// Descripción:
|
||||||
|
@ -3426,10 +3232,6 @@ static struct {
|
||||||
const char *nf; // Nombre de la función
|
const char *nf; // Nombre de la función
|
||||||
bool (*fcn)(TRAMA *, struct og_client *cli);
|
bool (*fcn)(TRAMA *, struct og_client *cli);
|
||||||
} tbfuncionesServer[] = {
|
} tbfuncionesServer[] = {
|
||||||
{ "Sondeo", Sondeo, },
|
|
||||||
{ "respuestaSondeo", respuestaSondeo, },
|
|
||||||
{ "ConsolaRemota", ConsolaRemota, },
|
|
||||||
{ "EcoConsola", EcoConsola, },
|
|
||||||
{ "Actualizar", Actualizar, },
|
{ "Actualizar", Actualizar, },
|
||||||
{ "Purgar", Purgar, },
|
{ "Purgar", Purgar, },
|
||||||
{ "InclusionCliente", InclusionCliente, },
|
{ "InclusionCliente", InclusionCliente, },
|
||||||
|
@ -3437,7 +3239,6 @@ static struct {
|
||||||
{ "AutoexecCliente", AutoexecCliente, },
|
{ "AutoexecCliente", AutoexecCliente, },
|
||||||
{ "ComandosPendientes", ComandosPendientes, },
|
{ "ComandosPendientes", ComandosPendientes, },
|
||||||
{ "DisponibilidadComandos", DisponibilidadComandos, },
|
{ "DisponibilidadComandos", DisponibilidadComandos, },
|
||||||
{ "Arrancar", Arrancar, },
|
|
||||||
{ "RESPUESTA_Arrancar", RESPUESTA_Arrancar, },
|
{ "RESPUESTA_Arrancar", RESPUESTA_Arrancar, },
|
||||||
{ "Apagar", Apagar, },
|
{ "Apagar", Apagar, },
|
||||||
{ "RESPUESTA_Apagar", RESPUESTA_Apagar, },
|
{ "RESPUESTA_Apagar", RESPUESTA_Apagar, },
|
||||||
|
|
Loading…
Reference in New Issue