summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2016-08-28 20:27:47 +0200
committerLudovic Pouzenc <ludovic@pouzenc.fr>2016-08-28 20:27:47 +0200
commit303513ab472c2d6405f72c75130c61760935e0d8 (patch)
tree0f29707a9c9d95356959af14da150c3f0849d664
parentef69cf674c3c45d255fdef6bbd3ec7a5230544cc (diff)
downloadchd_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.php62
-rw-r--r--api/img_adt_svc_relais.php27
-rw-r--r--generator/after-bake/src/Template/Adherents/view.ctp2
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);