diff options
author | ramon <ramongomez@us.es> | 2016-03-17 12:15:10 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2016-03-17 12:15:10 +0000 |
commit | 8c9fcb2861cc222c16ab9e17b0167e125c6358fa (patch) | |
tree | 1e4743058feb48d44a892a6927a0c7b63fd0ec78 | |
parent | b658596cdeebf762923d347f8bf80ab4203b28ad (diff) |
#718: Integrar sondeo de estados de antios servicios de cliente y de nuevo OGAdent.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@4835 a21b9725-9963-47de-94b9-378ad31fedc9
-rw-r--r-- | admin/WebConsole/comandos/includes/FiltradoAmbito.php | 66 | ||||
-rw-r--r-- | admin/WebConsole/includes/restfunctions.php | 67 | ||||
-rw-r--r-- | admin/WebConsole/jscripts/aula.js | 38 | ||||
-rw-r--r-- | admin/WebConsole/principal/aula.php | 8 | ||||
-rw-r--r-- | admin/WebConsole/principal/sondeo.php | 23 |
5 files changed, 132 insertions, 70 deletions
diff --git a/admin/WebConsole/comandos/includes/FiltradoAmbito.php b/admin/WebConsole/comandos/includes/FiltradoAmbito.php index 62b12952..abc42852 100644 --- a/admin/WebConsole/comandos/includes/FiltradoAmbito.php +++ b/admin/WebConsole/comandos/includes/FiltradoAmbito.php @@ -193,7 +193,7 @@ function RecorriendoOrdenadores($cmd) $ip=$rs->campos["ip"];
$cadenaip.=$ip.";";
$htmlCode.='<TABLE cellspacing=1 cellpadding=0>';
- $htmlCode.=' <TR><TD align="center"><img sondeo="ordenador_OFF.gif" id="img-'.$ip.'" width=24 src="../images/ordenador_OFF.gif"></TD></TR>';
+ $htmlCode.=' <TR><TD align="center"><img sondeo="ordenador_OFF.png" id="img-'.$ip.'" width=24 src="../images/ordenador_OFF.png"></TD></TR>';
$htmlCode.=' <TR><TD align="center"><SPAN style="FONT-SIZE:9px; COLOR: #4f4f4f;">'.$nombreordenador.'</SPAN></TD></TR>';
$htmlCode.=' <TR><TD align="center"><SPAN style="FONT-SIZE:8px; COLOR: #4f4f4f;">'.$ip.'</SPAN></TD></TR>';
$htmlCode.=' <TR><TD align="center"><INPUT id="chk-'.$ip.'" type="checkbox" checked></TD></TR>';
@@ -276,45 +276,31 @@ function soIMG(so) {
var MimgOrdenador="";
switch(so){
- case 'INI':
- MimgOrdenador="ordenador_INI.gif"; // Cliente ocupado
- break;
- case 'BSY':
- MimgOrdenador="ordenador_BSY.gif"; // Cliente ocupado
- break;
- case 'OPG':
- MimgOrdenador="ordenador_OPG.gif"; // Cliente Rembo
- break;
- case 'WS2':
- MimgOrdenador="ordenador_WS2.gif"; // Windows Server 2003
- break;
- case 'W2K':
- MimgOrdenador="ordenador_W2K.gif"; // Windows 2000
- break;
- case 'WXP':
- MimgOrdenador="ordenador_WXP.gif"; // Windows XP
- break;
- case 'WNT':
- MimgOrdenador="ordenador_WNT.gif"; // Windows NT
- break;
- case 'W95':
- MimgOrdenador="ordenador_W95.gif"; // Windows 95
- break;
- case 'W98':
- MimgOrdenador="ordenador_W98.gif"; // Windows 98
- break;
- case 'WML':
- MimgOrdenador="ordenador_WML.gif"; // Windows Millenium
- break;
- case 'WIN':
- MimgOrdenador="ordenador_WXP.gif"; // Windows
- break;
- case 'LNX':
- MimgOrdenador="ordenador_LNX.gif"; // Linux
- break;
- default:
- MimgOrdenador="ordenador_OFF.gif"; // Apagado
- break;
+ case 'INI':
+ MimgOrdenador="ordenador_INI.png"; // Cliente iniciando
+ break;
+ case 'BSY':
+ MimgOrdenador="ordenador_BSY.png"; // Cliente ocupado
+ break;
+ case 'OPG':
+ MimgOrdenador="ordenador_OPG.png"; // Cliente OpenGnsys
+ break;
+ case 'WIN':
+ case 'WXP':
+ MimgOrdenador="ordenador_WIN.png"; // Windows
+ break;
+ case 'WINS':
+ MimgOrdenador="ordenador_WINS.png"; // Sesi髇 Windows
+ break;
+ case 'LNX':
+ MimgOrdenador="ordenador_LNX.png"; // Linux
+ break;
+ case 'LNXS':
+ MimgOrdenador="ordenador_LNXS.png"; // Sesi髇 Linux
+ break;
+ default:
+ MimgOrdenador="ordenador_OFF.png"; // Apagado
+ break;
}
return(MimgOrdenador);
}
diff --git a/admin/WebConsole/includes/restfunctions.php b/admin/WebConsole/includes/restfunctions.php new file mode 100644 index 00000000..f3590969 --- /dev/null +++ b/admin/WebConsole/includes/restfunctions.php @@ -0,0 +1,67 @@ +<?php + +/* + * Function: multiRequest. + * Params: urls array, cURL options array. + * Returns: array with JSON requests. + * Date: 2015-10-14 + */ +function multiRequest($data, $options = array()) { + + // array of curl handles + $curly = array(); + // data to be returned + $result = array(); + + // multi handle + $mh = curl_multi_init(); + + // loop through $data and create curl handles + // then add them to the multi-handle + foreach ($data as $id => $d) { + + + $curly[$id] = curl_init(); + + $url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d; + curl_setopt($curly[$id], CURLOPT_URL, $url); + curl_setopt($curly[$id], CURLOPT_HEADER, 0); + curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1); + + // post? + if (is_array($d)) { + if (!empty($d['post'])) { + curl_setopt($curly[$id], CURLOPT_POST, 1); + curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']); + } + } + + // extra options? + if (!empty($options)) { + curl_setopt_array($curly[$id], $options); + } + + curl_multi_add_handle($mh, $curly[$id]); + } + + // execute the handles + $running = null; + do { + curl_multi_exec($mh, $running); + } while($running > 0); + + + // get content and remove handles + foreach($curly as $id => $c) { + $result[$id] = curl_multi_getcontent($c); + curl_multi_remove_handle($mh, $c); + } + + // all done + curl_multi_close($mh); + + return $result; +} + +?> + diff --git a/admin/WebConsole/jscripts/aula.js b/admin/WebConsole/jscripts/aula.js index f34c01ba..a1428740 100644 --- a/admin/WebConsole/jscripts/aula.js +++ b/admin/WebConsole/jscripts/aula.js @@ -111,43 +111,29 @@ function soIMG(so) var MimgOrdenador=""; switch(so){ case 'INI': - MimgOrdenador="ordenador_INI.gif"; // Iniciando cliente + MimgOrdenador="ordenador_INI.png"; // Iniciando cliente break; case 'BSY': - MimgOrdenador="ordenador_BSY.gif"; // Cliente ocupado + MimgOrdenador="ordenador_BSY.png"; // Cliente ocupado break; case 'OPG': - MimgOrdenador="ordenador_OPG.gif"; // Cliente OpenGnSys - break; - case 'WS2': - MimgOrdenador="ordenador_WS2.gif"; // Windows Server 2003 - break; - case 'W2K': - MimgOrdenador="ordenador_W2K.gif"; // Windows 2000 + MimgOrdenador="ordenador_OPG.png"; // Cliente OpenGnsys break; + case 'WIN': case 'WXP': - MimgOrdenador="ordenador_WXP.gif"; // Windows XP - break; - case 'WNT': - MimgOrdenador="ordenador_WNT.gif"; // Windows NT - break; - case 'W95': - MimgOrdenador="ordenador_W95.gif"; // Windows 95 + MimgOrdenador="ordenador_WIN.png"; // Windows break; - case 'W98': - MimgOrdenador="ordenador_W98.gif"; // Windows 98 - break; - case 'WML': - MimgOrdenador="ordenador_WML.gif"; // Windows Millenium - break; - case 'WIN': - MimgOrdenador="ordenador_WXP.gif"; // Windows + case 'WINS': + MimgOrdenador="ordenador_WINS.png"; // Sesi贸n Windows break; case 'LNX': - MimgOrdenador="ordenador_LNX.gif"; // Linux + MimgOrdenador="ordenador_LNX.png"; // Linux + break; + case 'LNXS': + MimgOrdenador="ordenador_LNXS.png"; // Sesi贸n Linux break; default: - MimgOrdenador="ordenador_OFF.gif"; // Apagado + MimgOrdenador="ordenador_OFF.png"; // Apagado break; } return(MimgOrdenador); diff --git a/admin/WebConsole/principal/aula.php b/admin/WebConsole/principal/aula.php index aa606053..cd8ccbd8 100644 --- a/admin/WebConsole/principal/aula.php +++ b/admin/WebConsole/principal/aula.php @@ -1,4 +1,4 @@ -<? +<?php // ************************************************************************************************************************************************* // Aplicaci贸n WEB: ogAdmWebCon // Autor: Jos茅 Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla @@ -232,7 +232,7 @@ function RecorreOrdenadores($cmd){ $idordenador=$rs->campos["idordenador"]; $Midordenador[$k]=$rs->campos["idordenador"]; $Mnombreordenador[$k]=$rs->campos["nombreordenador"]; - $MimgOrdenador[$k]="ordenador_OFF.gif"; + $MimgOrdenador[$k]="ordenador_OFF.png"; $Mip[$k]=$rs->campos["ip"]; $Mmac[$k]=$rs->campos["mac"]; $cadenaip.=$rs->campos["ip"].";"; @@ -299,8 +299,8 @@ function pintaordenadores(){ <p> <table style="border: #d4d0c8 1px solid; background: #eeeeee" align=center> <tr align="center">'; - foreach ( Array ("OPG", "BSY", "WXP", "LNX", "OFF") as $status) { - echo ' <td><img src="../images/ordenador_'.$status.'.gif" alt="'.$status.'" width="24" /><br /><font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'.$TbMsg["STATUS_$status"].'</font></td>'; + foreach ( Array ("OPG", "BSY", "WIN", "LNX", "OFF") as $status) { + echo ' <td><img src="../images/ordenador_'.$status.'.png" alt="'.$status.'" width="24" /><br /><font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'.$TbMsg["STATUS_$status"].'</font></td>'; } echo ' </tr>'; echo '</table>'; diff --git a/admin/WebConsole/principal/sondeo.php b/admin/WebConsole/principal/sondeo.php index 137ec449..2cc30ea4 100644 --- a/admin/WebConsole/principal/sondeo.php +++ b/admin/WebConsole/principal/sondeo.php @@ -9,6 +9,7 @@ // 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"); @@ -42,6 +43,8 @@ $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 //________________________________________________________________________________________________________ @@ -67,5 +70,25 @@ 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, array(CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false)); + // Process responses array (IP as array index). + foreach ($responses as $ip => $data) { + if (isset($data)) { + $status = json_decode($data); + // If user session is oppened, then append "S" to client status. + if (isset($status->status) and isset($status->loggedin)) { + // Output format: IP1/Status1;... + echo "$ip/".$status->status.($status->loggedin?"S;":";"); + } + } + } ?> |