diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-08-28 20:27:47 +0200 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-08-28 20:27:47 +0200 |
commit | 303513ab472c2d6405f72c75130c61760935e0d8 (patch) | |
tree | 0f29707a9c9d95356959af14da150c3f0849d664 | |
parent | ef69cf674c3c45d255fdef6bbd3ec7a5230544cc (diff) | |
download | chd_gestion-303513ab472c2d6405f72c75130c61760935e0d8.zip chd_gestion-303513ab472c2d6405f72c75130c61760935e0d8.tar.gz chd_gestion-303513ab472c2d6405f72c75130c61760935e0d8.tar.bz2 |
api/img_adt_svc_relais.php: add node coloring from monitoring info
get_node_status.php is dummy for now, need SQL and ask the monitoring machine
-rw-r--r-- | api/get_node_status.php | 62 | ||||
-rw-r--r-- | api/img_adt_svc_relais.php | 27 | ||||
-rw-r--r-- | generator/after-bake/src/Template/Adherents/view.ctp | 2 |
3 files changed, 90 insertions, 1 deletions
diff --git a/api/get_node_status.php b/api/get_node_status.php new file mode 100644 index 0000000..4886bfe --- /dev/null +++ b/api/get_node_status.php @@ -0,0 +1,62 @@ +<?php +/** + * Copyright 2016 Ludovic Pouzenc <ludovic@pouzenc.fr> + * Copyright 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> + * + * This file is part of CHD Gestion. + * + * CHD Gestion is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CHD Gestion is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with CHD Gestion. If not, see <http://www.gnu.org/licenses/>. +**/ +include_once('inc/config.php'); +$mysqli = new mysqli($db_config['host'], $db_config['username'], $db_config['password'], $db_config['database']); +if (mysqli_connect_errno()) { + die(mysqli_connect_error()); +} +unset($db_config); +$mysqli->set_charset("utf8") or die($mysqli->error); + +/* Parse arguments */ +$arg_keys=(array_key_exists('k', $_GET) && preg_match('/^([a-z][0-9]+,)*[a-z][0-9]+$/', $_GET['k']))?(explode(',', $_GET['k'])):array(); + +/* Firlter out keys to keep only equipments */ +$eids=array(); +foreach ( $arg_keys as $k ) { + if ( $k['0'] == 'e' ) { + $eids[]=substr($k,1); + } +} + +/* TODO : SQL query to get IPs from equipement WHERE id in $eids */ + +/* TODO : ask moniteur.chd.sx to ping them */ + +$arr_out = array(); +foreach ( $eids as $eid ) { + + $result=42; /*TODO dummy */ + + switch ($result) { + case 0: + $color='green'; + case 1: + $color='red'; + default: + $color='purple'; + } + $arr_out[] = array('eid'=>'e'.$eid, 'color'=>$color); +} + +/* Output arr_out as JSON to the web client */ +echo json_encode($arr_out); + diff --git a/api/img_adt_svc_relais.php b/api/img_adt_svc_relais.php index ba1be49..d62145c 100644 --- a/api/img_adt_svc_relais.php +++ b/api/img_adt_svc_relais.php @@ -29,12 +29,39 @@ $mysqli->set_charset("utf8") or die($mysqli->error); $opt_show_source=array_key_exists('s', $_GET); $opt_embed=array_key_exists('e', $_GET); +$opt_ping=array_key_exists('p', $_GET); $arg_adt=(array_key_exists('a', $_GET) && is_numeric($_GET['a']))?(0+$_GET['a']):NULL; if (!$arg_adt) { die("Wrong args"); } +if ($opt_ping) { +?> +<script type='text/javascript'> + var nodes = new Array(); + + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (xhttp.readyState == 4 && xhttp.status == 200) { + var json = JSON.parse(xhttp.responseText); + console.log('json', json); + for ( o of json ) { + nodes[o.eid].style.fill = o.color; + } + } + }; + window.onload = function () { + for ( var n of document.getElementsByClassName("node") ) { + nodes[n.firstElementChild.innerHTML] = n; + } + console.log('nodes', nodes); + xhttp.open("GET", "https://priv.chd.sx/api/get_node_status.php?k=" + Object.keys(nodes), true); + xhttp.send(); + } +</script> +<?php +} // Piping to Graphviz' dot command or to browser if opt_show_source is set if (!$opt_show_source) { $descriptorspec = array( diff --git a/generator/after-bake/src/Template/Adherents/view.ctp b/generator/after-bake/src/Template/Adherents/view.ctp index 9beccb2..81af061 100644 --- a/generator/after-bake/src/Template/Adherents/view.ctp +++ b/generator/after-bake/src/Template/Adherents/view.ctp @@ -236,7 +236,7 @@ </table> <div class="synoptique"> <?php - $url = "https://priv.chd.sx/api/img_adt_svc_relais.php?e=yes&a=" . $adherent->id; + $url = "https://priv.chd.sx/api/img_adt_svc_relais.php?p=yes&e=yes&a=" . $adherent->id; $fh = fopen($url, 'r'); if ( is_resource($fh) ) { stream_set_timeout($fh,1); |