From b52801fe14c7ee9a1c834a5a66ba6f1e624bcba7 Mon Sep 17 00:00:00 2001 From: Dennis Eisold Date: Mon, 7 Mar 2022 10:07:59 +0100 Subject: [PATCH] Moved json part to own nodewatcher-json --- .../81-babeld.sh | 6 ++- .../files/usr/sbin/json-mqtt-proxy | 3 +- .../21-interfaces.sh | 6 ++- .../51-clients.sh | 5 ++- .../usr/lib/micron.d/fff-nodewatcher-json | 1 + .../11-systemdata.sh | 3 +- .../files/usr/sbin/nodewatcher-json | 45 +++++++++++++++++++ .../91-s2nproxy.sh | 5 ++- .../71-simple-tc.sh | 5 ++- .../61-airtime.sh | 6 ++- 10 files changed, 71 insertions(+), 14 deletions(-) rename src/packages/fff/fff-babeld/files/usr/lib/{nodewatcher.d => nodewatcher-json.d}/81-babeld.sh (81%) rename src/packages/fff/fff-network/files/usr/lib/{nodewatcher.d => nodewatcher-json.d}/21-interfaces.sh (93%) rename src/packages/fff/fff-network/files/usr/lib/{nodewatcher.d => nodewatcher-json.d}/51-clients.sh (81%) create mode 100644 src/packages/fff/fff-nodewatcher/files/usr/lib/micron.d/fff-nodewatcher-json rename src/packages/fff/fff-nodewatcher/files/usr/lib/{nodewatcher.d => nodewatcher-json.d}/11-systemdata.sh (94%) create mode 100644 src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher-json rename src/packages/fff/fff-s2nproxy/usr/lib/{nodewatcher.d => nodewatcher-json.d}/91-s2nproxy.sh (94%) rename src/packages/fff/fff-simple-tc/files/usr/lib/{nodewatcher.d => nodewatcher-json.d}/71-simple-tc.sh (78%) rename src/packages/fff/fff-wireless/files/usr/lib/{nodewatcher.d => nodewatcher-json.d}/61-airtime.sh (84%) diff --git a/src/packages/fff/fff-babeld/files/usr/lib/nodewatcher.d/81-babeld.sh b/src/packages/fff/fff-babeld/files/usr/lib/nodewatcher-json.d/81-babeld.sh similarity index 81% rename from src/packages/fff/fff-babeld/files/usr/lib/nodewatcher.d/81-babeld.sh rename to src/packages/fff/fff-babeld/files/usr/lib/nodewatcher-json.d/81-babeld.sh index 8c026c58..b383f484 100644 --- a/src/packages/fff/fff-babeld/files/usr/lib/nodewatcher.d/81-babeld.sh +++ b/src/packages/fff/fff-babeld/files/usr/lib/nodewatcher-json.d/81-babeld.sh @@ -1,7 +1,9 @@ #!/bin/sh +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json + . /usr/share/libubox/jshn.sh -json_load_file /tmp/nodewatcher.json +json_load_file $SCRIPT_DATA_FILE json_select babel @@ -30,6 +32,6 @@ fi json_close_object #neighbours -json_dump > /tmp/nodewatcher.json +json_dump > $SCRIPT_DATA_FILE #exit 0 \ No newline at end of file diff --git a/src/packages/fff/fff-mqtt-monitoring/files/usr/sbin/json-mqtt-proxy b/src/packages/fff/fff-mqtt-monitoring/files/usr/sbin/json-mqtt-proxy index dc53c942..652414c0 100644 --- a/src/packages/fff/fff-mqtt-monitoring/files/usr/sbin/json-mqtt-proxy +++ b/src/packages/fff/fff-mqtt-monitoring/files/usr/sbin/json-mqtt-proxy @@ -1,6 +1,7 @@ #!/bin/sh MACADDR=$(cat /sys/class/net/br-client/address | /bin/sed 's/://g') +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json if [ -n "$(uci -q get fff.mqtt.server)" ] ; then - mosquitto_pub -h "$(uci get fff.mqtt.server)" -p 1883 -t /monitoring/v2/$MACADDR -m "$(cat /tmp/nodewatcher.json)" + mosquitto_pub -h "$(uci get fff.mqtt.server)" -p 1883 -t /monitoring/v2/$MACADDR -m "$SCRIPT_DATA_FILE" fi diff --git a/src/packages/fff/fff-network/files/usr/lib/nodewatcher.d/21-interfaces.sh b/src/packages/fff/fff-network/files/usr/lib/nodewatcher-json.d/21-interfaces.sh similarity index 93% rename from src/packages/fff/fff-network/files/usr/lib/nodewatcher.d/21-interfaces.sh rename to src/packages/fff/fff-network/files/usr/lib/nodewatcher-json.d/21-interfaces.sh index a1e86e6e..a8229f52 100644 --- a/src/packages/fff/fff-network/files/usr/lib/nodewatcher.d/21-interfaces.sh +++ b/src/packages/fff/fff-network/files/usr/lib/nodewatcher-json.d/21-interfaces.sh @@ -17,8 +17,10 @@ inArray() { debug "Collecting information from network interfaces" +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json + . /usr/share/libubox/jshn.sh -json_load_file /tmp/nodewatcher.json +json_load_file $SCRIPT_DATA_FILE json_add_array "interfaces" @@ -94,5 +96,5 @@ for filename in $(grep 'up\|unknown' /sys/class/net/*/operstate); do json_close_object #iface object done -json_dump > /tmp/nodewatcher.json +json_dump > $SCRIPT_DATA_FILE #exit 0 \ No newline at end of file diff --git a/src/packages/fff/fff-network/files/usr/lib/nodewatcher.d/51-clients.sh b/src/packages/fff/fff-network/files/usr/lib/nodewatcher-json.d/51-clients.sh similarity index 81% rename from src/packages/fff/fff-network/files/usr/lib/nodewatcher.d/51-clients.sh rename to src/packages/fff/fff-network/files/usr/lib/nodewatcher-json.d/51-clients.sh index e5473b19..70c5c16c 100644 --- a/src/packages/fff/fff-network/files/usr/lib/nodewatcher.d/51-clients.sh +++ b/src/packages/fff/fff-network/files/usr/lib/nodewatcher-json.d/51-clients.sh @@ -1,6 +1,7 @@ #!/bin/sh MESH_INTERFACE=$(uci get nodewatcher.@network[0].mesh_interface) +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json debug() { (>&2 echo "nodewatcher: $1") @@ -9,7 +10,7 @@ debug() { debug "Collecting information about connected clients" . /usr/share/libubox/jshn.sh -json_load_file /tmp/nodewatcher.json +json_load_file $SCRIPT_DATA_FILE json_add_object "clients" @@ -30,6 +31,6 @@ json_close_object #interfaces array json_add_string "count" "$client_count" json_close_object #clients -json_dump > /tmp/nodewatcher.json +json_dump > $SCRIPT_DATA_FILE #exit 0 \ No newline at end of file diff --git a/src/packages/fff/fff-nodewatcher/files/usr/lib/micron.d/fff-nodewatcher-json b/src/packages/fff/fff-nodewatcher/files/usr/lib/micron.d/fff-nodewatcher-json new file mode 100644 index 00000000..8fb28355 --- /dev/null +++ b/src/packages/fff/fff-nodewatcher/files/usr/lib/micron.d/fff-nodewatcher-json @@ -0,0 +1 @@ +*/5 * * * * sleep $(/usr/bin/random 0 29); /usr/sbin/nodewatcher-json diff --git a/src/packages/fff/fff-nodewatcher/files/usr/lib/nodewatcher.d/11-systemdata.sh b/src/packages/fff/fff-nodewatcher/files/usr/lib/nodewatcher-json.d/11-systemdata.sh similarity index 94% rename from src/packages/fff/fff-nodewatcher/files/usr/lib/nodewatcher.d/11-systemdata.sh rename to src/packages/fff/fff-nodewatcher/files/usr/lib/nodewatcher-json.d/11-systemdata.sh index b66f46c0..99a3eb6f 100644 --- a/src/packages/fff/fff-nodewatcher/files/usr/lib/nodewatcher.d/11-systemdata.sh +++ b/src/packages/fff/fff-nodewatcher/files/usr/lib/nodewatcher-json.d/11-systemdata.sh @@ -5,6 +5,7 @@ json_init SCRIPT_STATUS_FILE=$(uci get nodewatcher.@script[0].status_text_file) SCRIPT_VERSION=$(cat /etc/nodewatcher_version) +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json debug() { (>&2 echo "nodewatcher: $1") @@ -140,5 +141,5 @@ vpn_active=0 pidof fastd >/dev/null && vpn_active=1 json_add_string "vpn_active" "$vpn_active" -json_dump > /tmp/nodewatcher.json +json_dump > $SCRIPT_DATA_FILE #exit 0 \ No newline at end of file diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher-json b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher-json new file mode 100644 index 00000000..26ad7197 --- /dev/null +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher-json @@ -0,0 +1,45 @@ +#!/bin/sh + +test -f /tmp/started || exit + +# Allow only one instance +lockfile="/var/lock/${0##*/}.json.lock" +if ! lock -n "$lockfile"; then + echo "Only one instance of $0 allowed." + exit 1 +fi +trap "lock -u \"$lockfile\"" INT TERM EXIT + +[ -s /etc/config/nodewatcher ] || exit 1 +[ "$(uci get nodewatcher.@script[0].disabled)" = "1" ] && exit 0 + +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json + +debug() { + (>&2 echo "nodewatcher: $1") +} + +#This method generates the crawl data JSON file that is being fetched by netmon +#and provided by a small local httpd +crawl() { + debug "Putting all information into a JSON-File and save it at $SCRIPT_DATA_FILE" + + for f in /usr/lib/nodewatcher-json.d/*.sh; do + tmp="$($f)" + if [ $? -ne 0 ]; then + debug "Error when executing subscript $f, exiting!" + exit 1 + fi + done + + SCRIPT_DATA_DIR=$(dirname "$SCRIPT_DATA_FILE") + test -d "$SCRIPT_DATA_DIR" || mkdir -p "$SCRIPT_DATA_DIR" +} + +LANG=C + +#Erzeugt die statusdaten +debug "Generate actual status data" +crawl + +exit 0 \ No newline at end of file diff --git a/src/packages/fff/fff-s2nproxy/usr/lib/nodewatcher.d/91-s2nproxy.sh b/src/packages/fff/fff-s2nproxy/usr/lib/nodewatcher-json.d/91-s2nproxy.sh similarity index 94% rename from src/packages/fff/fff-s2nproxy/usr/lib/nodewatcher.d/91-s2nproxy.sh rename to src/packages/fff/fff-s2nproxy/usr/lib/nodewatcher-json.d/91-s2nproxy.sh index 8a8bb660..abf71157 100644 --- a/src/packages/fff/fff-s2nproxy/usr/lib/nodewatcher.d/91-s2nproxy.sh +++ b/src/packages/fff/fff-s2nproxy/usr/lib/nodewatcher-json.d/91-s2nproxy.sh @@ -1,8 +1,9 @@ #!/bin/sh . /lib/functions.sh +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json . /usr/share/libubox/jshn.sh -json_load_file /tmp/nodewatcher.json +json_load_file $SCRIPT_DATA_FILE json_add_array "s2nproxy" @@ -139,4 +140,4 @@ config_foreach s2np s2nproxy json_close_object #s2nproxy -json_dump > /tmp/nodewatcher.json \ No newline at end of file +json_dump > $SCRIPT_DATA_FILE \ No newline at end of file diff --git a/src/packages/fff/fff-simple-tc/files/usr/lib/nodewatcher.d/71-simple-tc.sh b/src/packages/fff/fff-simple-tc/files/usr/lib/nodewatcher-json.d/71-simple-tc.sh similarity index 78% rename from src/packages/fff/fff-simple-tc/files/usr/lib/nodewatcher.d/71-simple-tc.sh rename to src/packages/fff/fff-simple-tc/files/usr/lib/nodewatcher-json.d/71-simple-tc.sh index dec7d90b..6d0d1bdd 100644 --- a/src/packages/fff/fff-simple-tc/files/usr/lib/nodewatcher.d/71-simple-tc.sh +++ b/src/packages/fff/fff-simple-tc/files/usr/lib/nodewatcher-json.d/71-simple-tc.sh @@ -1,9 +1,10 @@ #!/bin/sh . /lib/functions.sh +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json . /usr/share/libubox/jshn.sh -json_load_file /tmp/nodewatcher.json +json_load_file $SCRIPT_DATA_FILE config_load simple-tc tc_enabled="0" @@ -31,6 +32,6 @@ json_add_string "out" "$tc_out" json_close_object #wan json_close_object #traffic_control -json_dump > /tmp/nodewatcher.json +json_dump > $SCRIPT_DATA_FILE #exit 0 \ No newline at end of file diff --git a/src/packages/fff/fff-wireless/files/usr/lib/nodewatcher.d/61-airtime.sh b/src/packages/fff/fff-wireless/files/usr/lib/nodewatcher-json.d/61-airtime.sh similarity index 84% rename from src/packages/fff/fff-wireless/files/usr/lib/nodewatcher.d/61-airtime.sh rename to src/packages/fff/fff-wireless/files/usr/lib/nodewatcher-json.d/61-airtime.sh index 7cd002cf..bef7096d 100644 --- a/src/packages/fff/fff-wireless/files/usr/lib/nodewatcher.d/61-airtime.sh +++ b/src/packages/fff/fff-wireless/files/usr/lib/nodewatcher-json.d/61-airtime.sh @@ -1,7 +1,9 @@ #!/bin/sh +SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file).json + . /usr/share/libubox/jshn.sh -json_load_file /tmp/nodewatcher.json +json_load_file $SCRIPT_DATA_FILE json_add_object "airtime" @@ -26,6 +28,6 @@ if [ -n "$w5dump" ] ; then fi json_close_object #airtime -json_dump > /tmp/nodewatcher.json +json_dump > $SCRIPT_DATA_FILE #exit 0 \ No newline at end of file