[PATCH v2 1/2] Move hoodfile acquisition into function
Fabian Bläse
fabian at blaese.de
Mo Jun 11 19:27:47 CEST 2018
Signed-off-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
---
.../fff-hoods/files/usr/lib/functions/fff/hoodfile | 85 ++++++++++++++++++++++
.../fff/fff-hoods/files/usr/sbin/configurehood | 38 ++--------
2 files changed, 90 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..b88a3d4
--- /dev/null
+++ b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile
@@ -0,0 +1,85 @@
+. /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
+ t 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 <target-file>"
+ 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
Mehr Informationen über die Mailingliste franken-dev