[PATCH 1/2] Move hoodfile acquisition into function

Fabian Bläse fabian at blaese.de
Sa Jun 9 19:30:44 CEST 2018


Anmerkung am Rand: Indentation ist kaputt, mach ich dann in der nächsten Version ganz..

Gruß
Fabian

> On 9. Jun 2018, at 16:51, Fabian Bläse <fabian at blaese.de> wrote:
> 
> Signed-off-by: Fabian Bläse <fabian at blaese.de>
> ---
> .../fff-hoods/files/usr/lib/functions/fff/hoodfile | 87 ++++++++++++++++++++++
> .../fff/fff-hoods/files/usr/sbin/configurehood     | 38 ++--------
> 2 files changed, 92 insertions(+), 33 deletions(-)
> create mode 100644 src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile
> 
> diff --git a/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile
> new file mode 100644
> index 0000000..62487f9
> --- /dev/null
> +++ b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile
> @@ -0,0 +1,87 @@
> +#!/bin/sh
> +
> +. /usr/share/libubox/jshn.sh
> +. /lib/functions/fff/wireless
> +
> +getWirelessHoodfile() {
> +    if [ $# != 1 ]
> +	then
> +		echo "Usage: getWirelessHoodfile <download-location>"
> +		return 1
> +	fi
> +    file=$1
> +
> +    echo "Trying to get hoodfile from wireless neighbor..."
> +    echo "All wireless interfaces will be disabled temporarily!"
> +
> +    # only change temporarily
> +
> +    if ! wifiDelIface; then
> +        echo "Can't delete current wifi setup"
> +        exit 1
> +    fi
> +    #now we look for phy and add this
> +    for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
> +        radio="$(wifiAddPhyCond "$phy" "2" "auto")"
> +        radio5="$(wifiAddPhyCond "$phy" "5" "auto5")"
> +        if [ -n "$radio5" ] ; then
> +            radio="$radio5"
> +            staiface="w5sta"
> +        else
> +            staiface="w2sta"
> +        fi
> +
> +        #and here we add the station
> +        if ! wifiAddSta "$radio" "config.franken.freifunk.net" "configSta" "$staiface" ; then
> +            echo "Can't add Sta interface on $radio."
> +            exit 1
> +        else
> +            uci -q set network.configSta=interface
> +            uci -q set network.configSta.proto='static'
> +            uci -q commit network
> +            reload_config
> +        fi
> +    done
> +
> +    wifi
> +    # wait a moment to start the interface
> +    sleep 10;
> +
> +    if wget -T15 -t5 -O "$file" "http://[fe80::1%w2sta]:2342/keyxchangev2data"; then
> +        return 0
> +    elif wget -T15 -t5 -O "$file" "http://[fe80::1%w5sta]:2342/keyxchangev2data"; then
> +        return 0
> +    else
> +        return 1
> +    fi
> +}
> +
> +getGatewayHoodfile() {
> +    if [ $# != 1 ]
> +	then
> +		echo "Usage: getGatewayHoodfile <download-location>"
> +		return 1
> +	fi
> +    file=$1
> +
> +    echo "Trying to get hoodfile from gateway..."
> +
> +    if wget -T15 -t5 -O "$file" "http://[fe80::1%br-mesh]:2342/keyxchangev2data"; then
> +        return 0
> +    else
> +        return 1
> +    fi
> +}
> +
> +getKeyserverHoodfile() {
> +    if [ $# != 1 ]
> +	then
> +		echo "Usage: getKeyserverHoodfile <download-location>"
> +		return 1
> +	fi
> +    file=$1
> +
> +    echo "Getting hoodfile from Keyserver"
> +
> +    wget -T15 -t5 -O "$file" "http://keyserver.freifunk-franken.de/v2/?lat=$lat&long=$long"
> +}
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index e2c1fab..aee20e5 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -5,6 +5,7 @@
> . /lib/functions/fff/network
> . /lib/functions/fff/wireless
> . /lib/functions/fff/timeserver
> +. /usr/lib/functions/fff/hoodfile
> 
> sectorlocal=/etc/sectorfile
> sectortmp=/tmp/sectorfile
> @@ -78,7 +79,8 @@ if [ -s "$hoodlocal" ]; then
> else
> 	# 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 "$hoodfile"
> +		getKeyserverHoodfile "$hoodfile"
> +
> 		rm -f "$sectortmp"
> 		[ -s "$sectorlocal" ] || rm -f "$sectorcopy" # If internet present, no custom config should be distributed, except when local file is present
> 		#UPLINK: No uplink download if internet present
> @@ -99,45 +101,15 @@ else
> 
> 			sleep 30 # Wait for the config AP, which may be created at the same time as this script has started
> 
> -			if ! wifiDelIface; then
> -				echo "Can't delete current wifi setup"
> -				exit 1
> -			fi
> -			#now we look for phy and add this
> -			for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
> -				radio="$(wifiAddPhyCond "$phy" "2" "auto")"
> -				radio5="$(wifiAddPhyCond "$phy" "5" "auto5")"
> -				if [ -n "$radio5" ] ; then
> -					radio="$radio5"
> -					staiface="w5sta"
> -				else
> -					staiface="w2sta"
> -				fi
> +			getWirelessHoodfile "$hoodfile"
> 
> -				#and here we add the station
> -				if ! wifiAddSta "$radio" "config.franken.freifunk.net" "configSta" "$staiface" ; then
> -					echo "Can't add Sta interface on $radio."
> -					exit 1
> -				else
> -					uci -q set network.configSta=interface
> -					uci -q set network.configSta.proto='static'
> -					uci -q commit network
> -					reload_config
> -				fi
> -			done
> -
> -			wifi
> -			# 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]:2342/keyxchangev2data" -O "$hoodfile" || wget -T15 -t5 "http://[fe80::1%w5sta]:2342/keyxchangev2data" -O "$hoodfile"
> 			#UPLINK: Set up uplink data on first contact:
> 			if [ -s /tmp/keyxchangev2data ]; then
> 				wget -T15 -t5 "http://[fe80::1%w2sta]:2342/sectorfile" -O "$sectortmp" || wget -T15 -t5 "http://[fe80::1%w5sta]:2342/sectorfile" -O "$sectortmp"
> 			fi
> 		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 "$hoodfile"
> +			getGatewayHoodfile "$hoodfile"
> 			#UPLINK: Do nothing
> 		fi
> 	fi
> --
> 2.11.0
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: Message signed with OpenPGP
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20180609/8c13522e/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev