[PATCH] fff-hoods: Use variables for hood file names

Adrian Schmutzler mail at adrianschmutzler.de
Fr Okt 20 17:47:30 CEST 2017


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

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
> Of Adrian Schmutzler
> Sent: Donnerstag, 19. Oktober 2017 13:06
> To: franken-dev at freifunk.net
> Subject: [PATCH] fff-hoods: Use variables for hood file names
> 
> 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 <freifunk at adrianschmutzler.de>
> ---
>  .../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. at system[0].latitude) @@ -62,7 +63,7 @@ long=$(uci
> -q get system. at 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='<span class="green">Hood-Daten werden innerhalb
> von 5 Minuten neu prozessiert.</span>'
>  	fi
>  fi
> --
> 2.7.4
> 
> --
> franken-dev mailing list
> franken-dev at freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net



Mehr Informationen über die Mailingliste franken-dev