From patchwork Thu Oct 19 11:06:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: fff-hoods: Use variables for hood file names From: Adrian Schmutzler X-Patchwork-Id: 608 Message-Id: <1508411188-2258-1-git-send-email-freifunk@adrianschmutzler.de> To: franken-dev@freifunk.net Date: Thu, 19 Oct 2017 13:06:28 +0200 Since names may change, this puts the relevant file names for hood files into variables, so they can be changed at once without the risk of forgetting some occurrences. Signed-off-by: Adrian Schmutzler Reviewed-by: Fabian Bläse Tested-by: Adrian Schmutzler --- .../fff-hoods/files/lib/functions/fff/keyxchange | 12 ++++++---- .../fff/fff-hoods/files/usr/sbin/configurehood | 27 +++++++++++----------- .../fff/fff-vpn-select/files/usr/sbin/vpn-select | 5 ++-- .../fff/fff-web/files/www/ssl/cgi-bin/home.html | 4 +++- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange index d7c2c13..cdaa8eb 100644 --- a/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange +++ b/src/packages/fff/fff-hoods/files/lib/functions/fff/keyxchange @@ -4,12 +4,16 @@ . /usr/share/libubox/jshn.sh +hoodfile="/tmp/keyxchangev2data" +hoodfilecopy="/www/public/keyxchangev2data" +hiddenapfile="/tmp/hiddenapflag" + getJsonPath() { jsonfile="" - if [ -s /www/public/keyxchangev2data ] ; then - jsonfile="/www/public/keyxchangev2data" - elif [ -s /tmp/keyxchangev2data ] ; then - jsonfile="/tmp/keyxchangev2data" + if [ -s "$hoodfilecopy" ] ; then + jsonfile="$hoodfilecopy" + elif [ -s "$hoodfile" ] ; then + jsonfile="$hoodfile" fi echo "$jsonfile" } diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood index f7ddb6e..303c54d 100755 --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood @@ -1,10 +1,11 @@ #!/bin/sh . /usr/share/libubox/jshn.sh +. /lib/functions/fff/keyxchange . /lib/functions/fff/wireless . /lib/functions/fff/timeserver -rm -f /tmp/keyxchangev2data +rm -f "$hoodfile" # Gatewaycheck function isGatewayAvailable() { @@ -33,7 +34,7 @@ chan5ghz="36" # Hidden AP check -if [ -f /tmp/hiddenapflag ]; then +if [ -f "$hiddenapfile" ]; then if isGatewayAvailable ; then for radio in $(uci show wireless | sed -n 's,.*\.\([a-z0-9]*\)=wifi-device,\1,p'); do @@ -54,7 +55,7 @@ if [ -f /tmp/hiddenapflag ]; then wifi fi - rm /tmp/hiddenapflag + rm "$hiddenapfile" fi lat=$(uci -q get system.@system[0].latitude) @@ -62,7 +63,7 @@ long=$(uci -q get system.@system[0].longitude) # if we have Internet, we download the Hoodfile from the keyxchangev2 if hasInternet ; then - wget -T15 -t5 "http://keyserver.freifunk-franken.de/v2/?lat=$lat&long=$long" -O /tmp/keyxchangev2data + wget -T15 -t5 "http://keyserver.freifunk-franken.de/v2/?lat=$lat&long=$long" -O "$hoodfile" #if no Internet, we connect to the hidden AP and download the file from another Node in range else # connect to wireless hidden ap here and download the json File from the nearest router @@ -70,7 +71,7 @@ else if ! isGatewayAvailable ; then #now we haven't a gateway in Range, we search for a hidden AP to get a keyxchangev2data file! #first we delete all wifi settings - rm -f /www/public/keyxchangev2data # delete this, so interfaces are recreated if reconnect with unchanged hood file takes place + rm -f "$hoodfilecopy" # delete this, so interfaces are recreated if reconnect with unchanged hood file takes place if ! wifiDelAll; then echo "Can't delete current wifi setup" @@ -102,25 +103,25 @@ else # wait a moment to start the interface sleep 10; # and here we can download the Hoodfile from the other node - wget -T15 -t5 "http://[fe80::1%w2sta]/keyxchangev2data" -O /tmp/keyxchangev2data + wget -T15 -t5 "http://[fe80::1%w2sta]/keyxchangev2data" -O "$hoodfile" else echo "We have a Gateway in Range, we load the keyxchangev2data from fe80::1" - wget -T15 -t5 "http://[fe80::1%br-mesh]:2342/keyxchangev2data" -O /tmp/keyxchangev2data + wget -T15 -t5 "http://[fe80::1%br-mesh]:2342/keyxchangev2data" -O "$hoodfile" fi fi -if [ -s /tmp/keyxchangev2data ]; then +if [ -s "$hoodfile" ]; then # we get a json file in this format: # https://pw.freifunk-franken.de/patch/205/ # but without signature, every hood file we get is valid! - catnew="$(cat /tmp/keyxchangev2data | sed 's/"timestamp":[0-9]*/"timestamp":0/')" - catold="$(cat /www/public/keyxchangev2data 2>/dev/null | sed 's/"timestamp":[0-9]*/"timestamp":0/')" + catnew="$(cat "$hoodfile" | sed 's/"timestamp":[0-9]*/"timestamp":0/')" + catold="$(cat "$hoodfilecopy" 2>/dev/null | sed 's/"timestamp":[0-9]*/"timestamp":0/')" sumnew=$(echo "$catnew" | sha256sum | cut -f1 -d " ") sumold=$(echo "$catold" | sha256sum | cut -f1 -d " ") - json_load "$(cat /tmp/keyxchangev2data)" + json_load "$(cat "$hoodfile")" if [ "$sumnew" != "$sumold" ]; then echo "New file detect, we reconfigure the Node"; @@ -164,7 +165,7 @@ if [ -s /tmp/keyxchangev2data ]; then fi # here we set a bit for add hidden AP - touch /tmp/hiddenapflag + touch "$hiddenapfile" # add 802.11s mesh if type == "802.11s" if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then @@ -192,7 +193,7 @@ if [ -s /tmp/keyxchangev2data ]; then # copy the file to webroot so that other Meshrouter can download it; # copy only after all other steps so IF can be reentered if something goes wrong - cp /tmp/keyxchangev2data /www/public/ + cp "$hoodfile" "$hoodfilecopy" else echo "We have no new file. We do nothing. We try it again in 5 minutes..."; diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select index 150efe2..85930a8 100755 --- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select +++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select @@ -1,5 +1,6 @@ #!/bin/sh +. /lib/functions/fff/keyxchange . /usr/share/libubox/jshn.sh make_config() { @@ -8,7 +9,7 @@ make_config() { rm /tmp/fastd_fff_peers/* count=0 Index=1 -json_load "$(cat /tmp/keyxchangev2data)" +json_load "$(cat "$hoodfile")" json_select vpn # get fastd peers while json_select "$Index" > /dev/null @@ -53,7 +54,7 @@ json_select ".." # back to root # main # Only do something when file is here and greater 0 byte -if [ -s /tmp/keyxchangev2data ]; then +if [ -s "$hoodfile" ]; then # set some vars hostname=$(cat /proc/sys/kernel/hostname) mac=$(awk '{ mac=toupper($1); gsub(":", "", mac); print mac }' /sys/class/net/br-mesh/address 2>/dev/null) diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html index d859ad4..395e490 100755 --- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html +++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html @@ -1,11 +1,13 @@ #!/usr/bin/haserl <% +. /lib/functions/fff/keyxchange + # prepare if [ "$REQUEST_METHOD" == "POST" ] ; then if [ "$POST_resethood" != "" ] ; then # reset hood - rm /www/public/keyxchangev2data 2> /dev/null + rm "$hoodfilecopy" 2> /dev/null MSG='Hood-Daten werden innerhalb von 5 Minuten neu prozessiert.' fi fi