[PATCH v3 2/5] hood file: Use different files for www and for checksum comparison

Adrian Schmutzler freifunk at adrianschmutzler.de
So Jul 8 19:57:36 CEST 2018


Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>

Reviewed-by: Fabian Bläse <fabian at blaese.de>

---

Changes in v2:
none

Changes in v3:
Rebased
---
 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. at 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..40ebe4f 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"
+	if [ -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='<span class="green">Hood-Daten werden innerhalb von 5 Minuten neu prozessiert.</span>'
 	fi
 fi
-- 
2.7.4



Mehr Informationen über die Mailingliste franken-dev