mirror of https://git.48k.eu/ogserver
Versión 1.0.5, #565: Integrar código del ticket:565 en rama de desarrollo.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3446 a21b9725-9963-47de-94b9-378ad31fedc9master
parent
eb99080b51
commit
0cee7a68a4
|
@ -148,7 +148,7 @@ BOOLEAN gestionaTrama(SOCKET *socket_c)
|
||||||
if (res == 0) { // Encontrada la función que procesa el mensaje
|
if (res == 0) { // Encontrada la función que procesa el mensaje
|
||||||
liberaMemoria(nfn);
|
liberaMemoria(nfn);
|
||||||
res=tbfuncionesServer[i].fptr(socket_c, ptrTrama); // Invoca la función
|
res=tbfuncionesServer[i].fptr(socket_c, ptrTrama); // Invoca la función
|
||||||
liberaMemoria(ptrTrama);
|
liberaMemoria((char*)ptrTrama);
|
||||||
return(res);
|
return(res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1364,20 +1364,27 @@ BOOLEAN respuestaConsola(SOCKET *socket_c, TRAMA *ptrTrama, int res) {
|
||||||
// FALSE: En caso de ocurrir algún error
|
// FALSE: En caso de ocurrir algún error
|
||||||
// ________________________________________________________________________________________________________
|
// ________________________________________________________________________________________________________
|
||||||
BOOLEAN Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) {
|
BOOLEAN Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) {
|
||||||
char *mac, msglog[LONSTD];
|
char *iph,*mac,*mar, msglog[LONSTD];
|
||||||
|
BOOLEAN res;
|
||||||
char modulo[] = "Arrancar()";
|
char modulo[] = "Arrancar()";
|
||||||
|
|
||||||
|
iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP
|
||||||
mac = copiaParametro("mac",ptrTrama); // Toma dirección/es MAC
|
mac = copiaParametro("mac",ptrTrama); // Toma dirección/es MAC
|
||||||
if (!Levanta(mac)) {
|
mar = copiaParametro("mar",ptrTrama); // Método de arranque (Broadcast o Unicast)
|
||||||
|
|
||||||
|
res=Levanta(iph,mac,mar);
|
||||||
|
|
||||||
|
liberaMemoria(iph);
|
||||||
liberaMemoria(mac);
|
liberaMemoria(mac);
|
||||||
|
liberaMemoria(mar);
|
||||||
|
|
||||||
|
if(!res){
|
||||||
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
|
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
|
||||||
errorInfo(modulo, msglog);
|
errorInfo(modulo, msglog);
|
||||||
respuestaConsola(socket_c, ptrTrama, FALSE);
|
respuestaConsola(socket_c, ptrTrama, FALSE);
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
liberaMemoria(mac);
|
|
||||||
|
|
||||||
if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) {
|
if (!enviaComando(ptrTrama, CLIENTE_OCUPADO)) {
|
||||||
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
|
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
|
||||||
errorInfo(modulo, msglog);
|
errorInfo(modulo, msglog);
|
||||||
|
@ -1393,13 +1400,16 @@ BOOLEAN Arrancar(SOCKET *socket_c, TRAMA* ptrTrama) {
|
||||||
// Descripción:
|
// Descripción:
|
||||||
// Enciende ordenadores a través de la red cuyas macs se pasan como parámetro
|
// Enciende ordenadores a través de la red cuyas macs se pasan como parámetro
|
||||||
// Parámetros:
|
// Parámetros:
|
||||||
|
// - iph: Cadena de direcciones ip separadas por ";"
|
||||||
// - mac: Cadena de direcciones mac separadas por ";"
|
// - mac: Cadena de direcciones mac separadas por ";"
|
||||||
|
// - mar: Método de arranque (1=Broadcast, 2=Unicast)
|
||||||
// Devuelve:
|
// Devuelve:
|
||||||
// TRUE: Si el proceso es correcto
|
// TRUE: Si el proceso es correcto
|
||||||
// FALSE: En caso de ocurrir algún error
|
// FALSE: En caso de ocurrir algún error
|
||||||
// ________________________________________________________________________________________________________
|
// ________________________________________________________________________________________________________
|
||||||
BOOLEAN Levanta(char *mac) {
|
BOOLEAN Levanta(char* iph,char *mac, char* mar)
|
||||||
char *ptrMacs[MAXIMOS_CLIENTES];
|
{
|
||||||
|
char *ptrIP[MAXIMOS_CLIENTES],*ptrMacs[MAXIMOS_CLIENTES];
|
||||||
int i, lon, res;
|
int i, lon, res;
|
||||||
SOCKET s;
|
SOCKET s;
|
||||||
BOOLEAN bOpt;
|
BOOLEAN bOpt;
|
||||||
|
@ -1426,9 +1436,10 @@ BOOLEAN Levanta(char *mac) {
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
/* fin creación de socket */
|
/* fin creación de socket */
|
||||||
|
lon = splitCadena(ptrIP, iph, ';');
|
||||||
lon = splitCadena(ptrMacs, mac, ';');
|
lon = splitCadena(ptrMacs, mac, ';');
|
||||||
for (i = 0; i < lon; i++) {
|
for (i = 0; i < lon; i++) {
|
||||||
if (!WakeUp(&s, ptrMacs[i])) {
|
if (!WakeUp(&s,ptrIP[i],ptrMacs[i],mar)) {
|
||||||
errorLog(modulo, 49, TRUE);
|
errorLog(modulo, 49, TRUE);
|
||||||
close(s);
|
close(s);
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
|
@ -1444,12 +1455,16 @@ BOOLEAN Levanta(char *mac) {
|
||||||
// Enciende el ordenador cuya MAC se pasa como parámetro
|
// Enciende el ordenador cuya MAC se pasa como parámetro
|
||||||
// Parámetros:
|
// Parámetros:
|
||||||
// - s : Socket para enviar trama magic packet
|
// - s : Socket para enviar trama magic packet
|
||||||
|
// - iph : Cadena con la dirección ip
|
||||||
// - mac : Cadena con la dirección mac en formato XXXXXXXXXXXX
|
// - mac : Cadena con la dirección mac en formato XXXXXXXXXXXX
|
||||||
|
// - mar: Método de arranque (1=Broadcast, 2=Unicast)
|
||||||
// Devuelve:
|
// Devuelve:
|
||||||
// TRUE: Si el proceso es correcto
|
// TRUE: Si el proceso es correcto
|
||||||
// FALSE: En caso de ocurrir algún error
|
// FALSE: En caso de ocurrir algún error
|
||||||
//_____________________________________________________________________________________________________________
|
//_____________________________________________________________________________________________________________
|
||||||
BOOLEAN WakeUp(SOCKET *s, char *mac) {
|
//
|
||||||
|
BOOLEAN WakeUp(SOCKET *s, char* iph,char *mac,char* mar)
|
||||||
|
{
|
||||||
int i, res;
|
int i, res;
|
||||||
char HDaddress_bin[6];
|
char HDaddress_bin[6];
|
||||||
struct {
|
struct {
|
||||||
|
@ -1470,6 +1485,9 @@ BOOLEAN WakeUp(SOCKET *s, char *mac) {
|
||||||
/* Creación de socket del cliente que recibe la trama magic packet */
|
/* Creación de socket del cliente que recibe la trama magic packet */
|
||||||
WakeUpCliente.sin_family = AF_INET;
|
WakeUpCliente.sin_family = AF_INET;
|
||||||
WakeUpCliente.sin_port = htons((short) PUERTO_WAKEUP);
|
WakeUpCliente.sin_port = htons((short) PUERTO_WAKEUP);
|
||||||
|
if(atoi(mar)==2)
|
||||||
|
WakeUpCliente.sin_addr.s_addr = inet_addr(iph); // Para hacerlo con IP
|
||||||
|
else
|
||||||
WakeUpCliente.sin_addr.s_addr = htonl(INADDR_BROADCAST); // Para hacerlo con broadcast
|
WakeUpCliente.sin_addr.s_addr = htonl(INADDR_BROADCAST); // Para hacerlo con broadcast
|
||||||
|
|
||||||
res = sendto(*s, (char *) &Trama_WakeUp, sizeof(Trama_WakeUp), 0,
|
res = sendto(*s, (char *) &Trama_WakeUp, sizeof(Trama_WakeUp), 0,
|
||||||
|
@ -3345,7 +3363,7 @@ BOOLEAN recibeArchivo(SOCKET *socket_c, TRAMA *ptrTrama) {
|
||||||
BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama)
|
BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama)
|
||||||
{
|
{
|
||||||
char sqlstr[LONSQL], msglog[LONSTD];
|
char sqlstr[LONSQL], msglog[LONSTD];
|
||||||
char *idp,iph[LONIP],mac[LONMAC];
|
char *idp,*mar,iph[LONIP],mac[LONMAC];
|
||||||
Database db;
|
Database db;
|
||||||
Table tbl;
|
Table tbl;
|
||||||
int idx,idcomando;
|
int idx,idcomando;
|
||||||
|
@ -3398,11 +3416,14 @@ BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama)
|
||||||
errorInfo(modulo, msglog);
|
errorInfo(modulo, msglog);
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
if (!Levanta(mac)) {
|
mar = copiaParametro("mar",ptrTrama); // Toma modo de arranque si el comando es Arrancar
|
||||||
|
if (!Levanta(iph,mac,mar)) {
|
||||||
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
|
sprintf(msglog, "%s:%s", tbErrores[32], modulo);
|
||||||
errorInfo(modulo, msglog);
|
errorInfo(modulo, msglog);
|
||||||
|
liberaMemoria(mar);
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
liberaMemoria(mar);
|
||||||
}
|
}
|
||||||
if (clienteDisponible(iph, &idx)) { // Si el cliente puede recibir comandos
|
if (clienteDisponible(iph, &idx)) { // Si el cliente puede recibir comandos
|
||||||
strcpy(tbsockets[idx].estado, CLIENTE_OCUPADO); // Actualiza el estado del cliente
|
strcpy(tbsockets[idx].estado, CLIENTE_OCUPADO); // Actualiza el estado del cliente
|
||||||
|
|
|
@ -84,8 +84,8 @@ BOOLEAN Comando(SOCKET *,TRAMA *);
|
||||||
BOOLEAN RESPUESTA_Comando(SOCKET *,TRAMA *);
|
BOOLEAN RESPUESTA_Comando(SOCKET *,TRAMA *);
|
||||||
|
|
||||||
BOOLEAN Arrancar(SOCKET *,TRAMA *);
|
BOOLEAN Arrancar(SOCKET *,TRAMA *);
|
||||||
BOOLEAN Levanta(char*);
|
BOOLEAN Levanta(char*,char*,char*);
|
||||||
BOOLEAN WakeUp(SOCKET *,char *);
|
BOOLEAN WakeUp(SOCKET *,char*,char*,char*);
|
||||||
void PasaHexBin(char *,char *);
|
void PasaHexBin(char *,char *);
|
||||||
BOOLEAN RESPUESTA_Arrancar(SOCKET *,TRAMA*);
|
BOOLEAN RESPUESTA_Arrancar(SOCKET *,TRAMA*);
|
||||||
BOOLEAN Apagar(SOCKET *,TRAMA *);
|
BOOLEAN Apagar(SOCKET *,TRAMA *);
|
||||||
|
|
Loading…
Reference in New Issue