From e2f2b9b06260a229632e5b4de9229f5e2152663d Mon Sep 17 00:00:00 2001 From: Christof Schulze Date: Wed, 27 Apr 2016 20:41:44 +0200 Subject: [PATCH 1/5] use gluon.mesh --- .../files/lib/gluon/status-page/www/cgi-bin/interfaces | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/interfaces b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/interfaces index 4eabf815..048038f3 100755 --- a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/interfaces +++ b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/interfaces @@ -3,16 +3,16 @@ util = require 'luci.util' json = require 'luci.jsonc' fs = require 'nixio.fs' +mesh = require 'gluon.mesh' io.write("Access-Control-Allow-Origin: *\n") io.write("Content-type: application/json\n\n") -list = util.exec('batctl if') +-- list = util.exec('batctl if') interfaces = {} -for _, line in ipairs(util.split(list)) do - ifname = line:match('^(.-):') +for interface, _ in ipairs(mesh.interfaces()) do if ifname ~= nil then pcall(function() local address = util.trim(fs.readfile('/sys/class/net/' .. ifname .. '/address')) From 0fe5bebe203d917b2d0fceeaa52932fc684faf3b Mon Sep 17 00:00:00 2001 From: Christof Schulze Date: Thu, 28 Apr 2016 17:59:07 +0200 Subject: [PATCH 2/5] replace batctl-calls with gluon.mesh --- .../lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo | 3 ++- .../files/lib/gluon/status-page/www/cgi-bin/dyn/stations | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo index 657f17e5..91743046 100755 --- a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo +++ b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo @@ -8,6 +8,7 @@ badrequest() { echo 'Access-Control-Allow-Origin: *' -batctl if | cut -d: -f1 | grep -qxF "$QUERY_STRING" || badrequest +#batctl if | cut -d: -f1 | grep -qxF "$QUERY_STRING" || badrequest +lua -e 'mesh = require(gluon.mesh); for interface, _ in ipairs(mesh.interfaces()) do print(interface .. "\n"); end;' | grep -qxF "$QUERY_STRING" || badrequest exec /usr/bin/gluon-neighbour-info -s neighbour -i "$QUERY_STRING" -d ff02::2:1001 -p 1001 -r nodeinfo diff --git a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations index 258122fb..fa6444ae 100755 --- a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations +++ b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations @@ -8,7 +8,8 @@ badrequest() { echo 'Access-Control-Allow-Origin: *' -batctl if | cut -d: -f1 | grep -qxF "$QUERY_STRING" || badrequest +#batctl if | cut -d: -f1 | grep -qxF "$QUERY_STRING" || badrequest +lua -e 'mesh = require(gluon.mesh); for interface, _ in ipairs(mesh.interfaces()) do print(interface .. "\n"); end;' | grep -qxF "$QUERY_STRING" || badrequest CMD="exec /lib/gluon/status-page/providers/stations '$QUERY_STRING'" From e2da35add3ff030298f0a0fde6bef72195ced79a Mon Sep 17 00:00:00 2001 From: Christof Schulze Date: Sun, 1 May 2016 11:27:58 +0200 Subject: [PATCH 3/5] we got git for history --- .../lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo | 1 - .../files/lib/gluon/status-page/www/cgi-bin/dyn/stations | 1 - .../files/lib/gluon/status-page/www/cgi-bin/interfaces | 2 -- 3 files changed, 4 deletions(-) diff --git a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo index 91743046..566e1f15 100755 --- a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo +++ b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo @@ -8,7 +8,6 @@ badrequest() { echo 'Access-Control-Allow-Origin: *' -#batctl if | cut -d: -f1 | grep -qxF "$QUERY_STRING" || badrequest lua -e 'mesh = require(gluon.mesh); for interface, _ in ipairs(mesh.interfaces()) do print(interface .. "\n"); end;' | grep -qxF "$QUERY_STRING" || badrequest exec /usr/bin/gluon-neighbour-info -s neighbour -i "$QUERY_STRING" -d ff02::2:1001 -p 1001 -r nodeinfo diff --git a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations index fa6444ae..42f96eb7 100755 --- a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations +++ b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations @@ -8,7 +8,6 @@ badrequest() { echo 'Access-Control-Allow-Origin: *' -#batctl if | cut -d: -f1 | grep -qxF "$QUERY_STRING" || badrequest lua -e 'mesh = require(gluon.mesh); for interface, _ in ipairs(mesh.interfaces()) do print(interface .. "\n"); end;' | grep -qxF "$QUERY_STRING" || badrequest CMD="exec /lib/gluon/status-page/providers/stations '$QUERY_STRING'" diff --git a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/interfaces b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/interfaces index 048038f3..f0803dc6 100755 --- a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/interfaces +++ b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/interfaces @@ -8,8 +8,6 @@ mesh = require 'gluon.mesh' io.write("Access-Control-Allow-Origin: *\n") io.write("Content-type: application/json\n\n") --- list = util.exec('batctl if') - interfaces = {} for interface, _ in ipairs(mesh.interfaces()) do From 8d4c688557cc3620c44b8b1ca1d3368dd072680b Mon Sep 17 00:00:00 2001 From: Christof Schulze Date: Wed, 4 May 2016 21:29:48 +0200 Subject: [PATCH 4/5] convert neighbors-nodeinfo to lua --- .../www/cgi-bin/dyn/neighbours-nodeinfo | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo index 566e1f15..4046a7fd 100755 --- a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo +++ b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/neighbours-nodeinfo @@ -1,13 +1,19 @@ -#!/bin/sh +#!/usr/bin/lua +local mesh = require 'gluon.mesh' +local querystring = os.getenv("QUERY_STRING") -badrequest() { - echo 'Status: 400 Bad Request' - echo - exit 1 -} +print('Access-Control-Allow-Origin: *\n') -echo 'Access-Control-Allow-Origin: *' +for interface, _ in pairs(mesh.interfaces()) do + if querystring + then + if string.find(interface, querystring) + then + os.execute("/usr/bin/gluon-neighbour-info -s neighbour -i " .. querystring .. " -d ff02::2:1001 -p 1001 -r nodeinfo"); + os.exit(0) + end + end +end -lua -e 'mesh = require(gluon.mesh); for interface, _ in ipairs(mesh.interfaces()) do print(interface .. "\n"); end;' | grep -qxF "$QUERY_STRING" || badrequest - -exec /usr/bin/gluon-neighbour-info -s neighbour -i "$QUERY_STRING" -d ff02::2:1001 -p 1001 -r nodeinfo +print("Status: 400 Bad Request\n") +os.exit(1) From dcb32b460bc2433d0ef09c01679cb3f0fe7794b4 Mon Sep 17 00:00:00 2001 From: Christof Schulze Date: Wed, 4 May 2016 22:12:39 +0200 Subject: [PATCH 5/5] rewrite stations in lua --- .../status-page/www/cgi-bin/dyn/stations | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations index 42f96eb7..67a9405b 100755 --- a/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations +++ b/package/gluon-status-page-api/files/lib/gluon/status-page/www/cgi-bin/dyn/stations @@ -1,15 +1,20 @@ -#!/bin/sh +#!/usr/bin/lua +local mesh = require 'gluon.mesh' +local querystring = os.getenv("QUERY_STRING") -badrequest() { - echo 'Status: 400 Bad Request' - echo - exit 1 -} +print('Access-Control-Allow-Origin: *\n') -echo 'Access-Control-Allow-Origin: *' +for interface, _ in pairs(mesh.interfaces()) do + if querystring + then + if string.find(interface, querystring) + then + os.execute("/usr/sbin/sse-multiplex /lib/gluon/status-page/providers/stations " .. querystring ); + os.exit(0) + end + end +end -lua -e 'mesh = require(gluon.mesh); for interface, _ in ipairs(mesh.interfaces()) do print(interface .. "\n"); end;' | grep -qxF "$QUERY_STRING" || badrequest -CMD="exec /lib/gluon/status-page/providers/stations '$QUERY_STRING'" - -exec /usr/sbin/sse-multiplex "$CMD" +print("Status: 400 Bad Request\n") +os.exit(1)