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