[PATCH v4 1/2] Move hoodfile acquisition into function
Adrian Schmutzler
mail at adrianschmutzler.de
Mi Jun 13 16:03:57 CEST 2018
Hallo,
schön gelöst.
Reviewed-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
Grüße
Adrian
> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Dienstag, 12. Juni 2018 21:07
> To: franken-dev at freifunk.net
> Cc: Jan Kraus <mayosemmel at gmail.com>; Adrian Schmutzler
> <freifunk at adrianschmutzler.de>
> Subject: [PATCH v4 1/2] Move hoodfile acquisition into function
>
> Signed-off-by: Fabian Bläse <fabian at blaese.de>
> Tested-by: Fabian Bläse <fabian at blaese.de>
> ---
> Apply after MacKnocker patchset!
>
> Changes in v2:
> - Fix indentation
> - Remove shebang
> - Improve usage message
> - Add failure return value to getKeyserverHoodfile if no file was received
>
> Changes in v3:
> - Fix messed up v2
>
> Changes in v4:
> - remove 't'
> - move coordinate aquisition into getKeyserver function
> - add optional coordinate parameter in getKeyserver function
> ---
> .../fff-hoods/files/usr/lib/functions/fff/hoodfile | 92
> ++++++++++++++++++++++
> .../fff/fff-hoods/files/usr/sbin/configurehood | 41 ++--------
> 2 files changed, 97 insertions(+), 36 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..4efaa66
> --- /dev/null
> +++ b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile
> @@ -0,0 +1,92 @@
> +. /usr/share/libubox/jshn.sh
> +. /lib/functions/fff/wireless
> +
> +getWirelessHoodfile() {
> + if [ $# != 1 ]; then
> + echo "Usage: getWirelessHoodfile <target-file>"
> + 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 <target-file>"
> + 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
> + lat=$(uci -q get fff.system.latitude)
> + long=$(uci -q get fff.system.longitude)
> + elif [ $# == 3 ]; then
> + lat=$2
> + long=$3
> + else
> + echo "Usage: getKeyserverHoodfile <target-file> [<latitude>
> <longitude>]"
> + return 1
> + fi
> + file=$1
> +
> + echo "Getting hoodfile from Keyserver"
> +
> + if wget -T15 -t5 -O "$file" "http://keyserver.freifunk-
> franken.de/v2/?lat=$lat&long=$long"; then
> + return 0
> + else
> + return 1
> + fi
> +}
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index e2c1fab..d06a62d 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
> @@ -69,16 +70,14 @@ if [ -s "$hoodfilecopy" ] && isGatewayAvailable ; then
> fi
> fi
>
> -lat=$(uci -q get fff.system.latitude)
> -long=$(uci -q get fff.system.longitude)
> -
> if [ -s "$hoodlocal" ]; then
> hoodfile="$hoodlocal"
> echo "Use local hood file"
> 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
> +98,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
Mehr Informationen über die Mailingliste franken-dev