1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
<?php
// *************************************************************************************************************************************************
// Aplicación WEB: ogAdmWebCon
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: Año 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: sondeo.php
// Descripción :
// Consulta el estado de los ordenadores
// *************************************************************************************************************************************************
include_once("../includes/ctrlacc.php");
include_once("../includes/restfunctions.php");
include_once("../clases/SockHidra.php");
include_once("../clases/AdoPhp.php");
include_once("../includes/constantes.php");
include_once("../includes/comunes.php");
include_once("../includes/CreaComando.php");
include_once("../includes/RecopilaIpesMacs.php");
//________________________________________________________________________________________________________
$ambito=0;
$idambito=0;
$sw=0; // Swich para conmutar entre sondeo a clientes o sólo consulta a la tabla de sockets
if (isset($_POST["ambito"])) $ambito=$_POST["ambito"];
if (isset($_POST["idambito"])) $idambito=$_POST["idambito"];
if (isset($_POST["sw"])) $sw=$_POST["sw"];
//________________________________________________________________________________________________________
$cmd=CreaComando($cadenaconexion);
if (!$cmd)
Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
//________________________________________________________________________________________________________
$funcion="Sondeo"; // Nombre de la función que procesa la petición
if($sw==2)
$funcion="respuestaSondeo"; // Nombre de la función que procesa la petición
$atributos="";
$aplicacion=""; // Ámbito de aplicación (cadena de ipes separadas por ";" y de identificadores de ordenadores por ","
$acciones=""; // Cadena de identificadores de acciones separadas por ";" para seguimiento
//________________________________________________________________________________________________________
// Ámbito de aplicación de la petición
//________________________________________________________________________________________________________
$cadenaid="";
$cadenaip="";
$cadenamac="";
RecopilaIpesMacs($cmd,$ambito,$idambito); // Ámbito de aplicación
$aplicacion="ido=".$cadenaid.chr(13)."iph=".$cadenaip.chr(13);
// Reset status.
echo "$cadenaip;";
//________________________________________________________________________________________________________
// Envio al servidor de la petición
//________________________________________________________________________________________________________
$resul=false;
$trama="";
$shidra=new SockHidra($servidorhidra,$hidraport);
if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra
$parametros="nfn=".$funcion.chr(13);
$parametros.=$aplicacion;
$parametros.=$atributos;
$parametros.=$acciones;
$resul=$shidra->envia_peticion($parametros);
if($resul)
$trama=$shidra->recibe_respuesta();
$shidra->desconectar();
}
if($resul){
$hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM));
$parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm);
$ValorParametros=extrae_parametros($parametros,chr(13),'=');
if (isset ($ValorParametros["tso"])) {
$trama_notificacion=$ValorParametros["tso"];
echo $trama_notificacion; // Devuelve respuesta
}
}
// Send REST requests to new OGAgent clients.
$urls = array();
// Compose array of REST URLs.
foreach (explode (';', $cadenaip) as $ip) {
$urls[$ip] = "https://$ip:8000/opengnsys/status";
}
// Launch concurrent requests.
$responses = multiRequest($urls);
// Process responses array (IP as array index).
foreach ($responses as $ip => $resp) {
if (isset($resp['data'])) {
$data = json_decode($resp['data']);
// If user session is oppened, then append "S" to client status.
if (isset($data->status) and isset($data->loggedin)) {
// Output format: IP1/Status1;...
echo "$ip/".$data->status.($data->loggedin?"S;":";");
}
}
}
?>
|