gluon-status-page: add generic respondd cgi-bin
Adding a cgi-bin script which allows to query a node's respondd over HTTP. This is especially useful when the response is expected to be large and a UDP response would lead to an unreliable transfer of multiple IP fragments, like for the upcoming "statistics-extended" respondd provider. HTTP/TCP is then the more reliable approach. Query examples with HTTP GET: $ curl --compressed "http://<IP6ADDR>/cgi-bin/respondd" -> defaults to nodeinfo $ curl --compressed "http://<IP6ADDR>/cgi-bin/respondd?nodeinfo+statistics" Query examples with HTTP POST: $ curl --data "" --compressed "http://<IP6ADDR>/cgi-bin/respondd" -> defaults to nodeinfo $ curl --data "nodeinfo statistics" --compressed "http://<IP6ADDR>/cgi-bin/respondd" Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
This commit is contained in:
parent
d0fa7dd0bb
commit
c6693b7316
35
package/gluon-status-page/files/lib/gluon/status-page/www/cgi-bin/respondd
Executable file
35
package/gluon-status-page/files/lib/gluon/status-page/www/cgi-bin/respondd
Executable file
@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
|
||||
badrequest() {
|
||||
echo 'Status: 400 Bad Request'
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
case "${REQUEST_METHOD}" in
|
||||
GET)
|
||||
;;
|
||||
POST)
|
||||
QUERY_STRING="$(cat)"
|
||||
;;
|
||||
*)
|
||||
badrequest
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "${QUERY_STRING}" ]; then
|
||||
# default to nodeinfo
|
||||
QUERY_STRING="nodeinfo"
|
||||
else
|
||||
# replace URL encoded spaces via '+' with real space
|
||||
QUERY_STRING="${QUERY_STRING//+/ }"
|
||||
fi
|
||||
|
||||
|
||||
# Return deflate compressed ("GET" prefix), JSON formatted response
|
||||
|
||||
echo "Content-Type: application/json"
|
||||
echo "Content-Encoding: deflate"
|
||||
echo ""
|
||||
|
||||
exec gluon-neighbour-info -i lo -d ::1 -p 1001 -r "GET ${QUERY_STRING}"
|
Loading…
Reference in New Issue
Block a user