From patchwork Wed Jul 25 13:58:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [v4, 2/5] hood file: Use different files for www and for checksum comparison From: Adrian Schmutzler X-Patchwork-Id: 892 Message-Id: <20180725135815.24814-1-freifunk@adrianschmutzler.de> To: franken-dev@freifunk.net Date: Wed, 25 Jul 2018 15:58:15 +0200 At the moment, we use the same file for detecting changes in a new hood file and for broadcasting the hood information to be used by mesh routers. However, there may be situations where we don't want to broadcast an existing hoodfile. We, on the other hand, cannot delete it then, as we need the file for checking changes in the temporary hoodfile. We also cannot just switch the wXconfig state to achieve this goal, as we need a trigger to do that (which is the same file we are discussing about). So, in this patch, we introduce two files, one for the checksum comparison and one for the hood info broadcast. Those can now be set and deleted (in a later patch) as it is required by their respective tasks. This should also improve code clarity to the reader ... Signed-off-by: Adrian Schmutzler Reviewed-by: Fabian Bläse Reviewed-by: Robert Langhammer Tested-by: Fabian Bläse Reviewed-by: Tim Niemeyer --- Changes in v2: none Changes in v3: Rebased Changes in v4: - Fixed if->elif - Added commit description --- src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 6 ++++-- src/packages/fff/fff-hoodutils/files/lib/functions/fff/keyxchange | 3 +++ src/packages/fff/fff-web/files/www/ssl/cgi-bin/home.html | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood index 1a2c12a..b6ba3e3 100755 --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood @@ -83,7 +83,8 @@ 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 "$hoodfilewww" # delete this, so interfaces are recreated if reconnect with unchanged hood file takes place + rm -f "$hoodfileref" # delete this, so interfaces are recreated if reconnect with unchanged hood file takes place + rm -f "$hoodfilewww" # delete this, so wrong hood file is not broadcasted anymore uci -q del "system.@system[0].hood" uci -q commit system @@ -106,7 +107,7 @@ if [ -s "$hoodfiletmp" ]; then # but without signature, every hood file we get is valid! catnew="$(cat "$hoodfiletmp" | sed 's/"timestamp”: *"[0-9]*"/"timestamp":0/')" - catold="$(cat "$hoodfilewww" 2>/dev/null | sed 's/"timestamp”: *"[0-9]*"/"timestamp":0/')" + catold="$(cat "$hoodfileref" 2>/dev/null | sed 's/"timestamp”: *"[0-9]*"/"timestamp":0/')" sumnew=$(echo "$catnew" | sha256sum | cut -f1 -d " ") sumold=$(echo "$catold" | sha256sum | cut -f1 -d " ") @@ -185,6 +186,7 @@ if [ -s "$hoodfiletmp" ]; then # copy the file to webroot so that other mesh routers can download it; # copy only after all other steps so IF can be reentered if something goes wrong + cp "$hoodfiletmp" "$hoodfileref" cp "$hoodfiletmp" "$hoodfilewww" # This is a workaround to enable alfred on devices which do not see a configap during initial setup diff --git a/src/packages/fff/fff-hoodutils/files/lib/functions/fff/keyxchange b/src/packages/fff/fff-hoodutils/files/lib/functions/fff/keyxchange index 4d624a1..e49f7f8 100644 --- a/src/packages/fff/fff-hoodutils/files/lib/functions/fff/keyxchange +++ b/src/packages/fff/fff-hoodutils/files/lib/functions/fff/keyxchange @@ -5,12 +5,15 @@ . /usr/share/libubox/jshn.sh hoodfiletmp="/tmp/hoodfile" +hoodfileref="/tmp/hoodfileref" hoodfilewww="/www/hood/keyxchangev2data" getJsonPath() { jsonfile="" if [ -s "$hoodfilewww" ] ; then jsonfile="$hoodfilewww" + elif [ -s "$hoodfileref" ] ; then + jsonfile="$hoodfileref" elif [ -s "$hoodfiletmp" ] ; then jsonfile="$hoodfiletmp" fi 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 ef71eb4..bc15df7 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 @@ -8,7 +8,7 @@ if [ "$REQUEST_METHOD" == "POST" ] ; then if [ "$POST_resethood" != "" ] ; then # reset hood - rm "$hoodfilewww" 2> /dev/null + rm "$hoodfileref" 2> /dev/null MSG='Hood-Daten werden innerhalb von 5 Minuten neu prozessiert.' fi fi