forked from freifunk-franken/firmware
Move hoodfile acquisition into function
Signed-off-by: Fabian Bläse <fabian@blaese.de> Tested-by: Fabian Bläse <fabian@blaese.de> Reviewed-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Reviewed-by: Tim Niemeyer <tim@tn-x.org>
This commit is contained in:
parent
1826d39064
commit
bb496df2bc
|
@ -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
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue