[PATCH v10 4/4] Add fff-hoods
mail at adrianschmutzler.de
mail at adrianschmutzler.de
So Okt 1 19:29:16 CEST 2017
Hallo,
hab jetzt ein Testsetup, aber mein zweiter Router scheitert beim Zugriff
über w2sta:
Connecting to [fe80::1%w2sta] ([fe80::1%w2sta]:80)
wget: can't connect to remote host: Permission denied
Beim pingen kommt die gleiche Meldung.
Grüße
Adrian
> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
> Of mail at adrianschmutzler.de
> Sent: Sonntag, 1. Oktober 2017 16:10
> To: franken-dev at freifunk.net
> Subject: RE: [PATCH v10 4/4] Add fff-hoods
>
> Hallo nochmal,
>
> der Shellchecker bringt mir das hier:
>
> Line 11:
> return true;
> ^-- SC2152: Can only return 0-255. Other data
should be written to
> stdout.
>
> Line 13:
> return false;
> ^-- SC2152: Can only return 0-255. Other data
should be written to
> stdout.
>
> Line 21:
> if [ isGatewayAvailable ]; then
> ^-- SC2078: This expression is constant. Did you forget a $
somewhere?
>
>
> Sollte man die Funktion vll. auf 0 und 1 umschreiben?
>
> Grüße
>
> Adrian
>
> > -----Original Message-----
> > From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
> > Of Adrian Schmutzler
> > Sent: Sonntag, 1. Oktober 2017 15:49
> > To: franken-dev at freifunk.net
> > Cc: Jan Kraus <mayosemmel at gmail.com>
> > Subject: [PATCH v10 4/4] Add fff-hoods
> >
> > From: Christian Dresel <fff at chrisi01.de>
> >
> > this packages connect to keyxchangev2
> > after review we must change the serveradress! This is only a example
> >
> > Signed-off-by: Christian Dresel <fff at chrisi01.de>
> > Signed-off-by: Jan Kraus <mayosemmel at gmail.com>
> > Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> >
> > Update in v2:
> > - clean tabstops
> > - move the json vpn out of the if because we need this after reboot
> >
> > Update in v5:
> > !!UNTESTED!!
> > - change hidden AP ip to locallink
> > - Open hidden AP after more checks
> > - Load json File from Gateway if Gateway in Batman in Range
> >
> > Update in v6:
> > !!UNTESTED!!
> > - fix hidden station v6
> > - fix -n to -f if
> > - Add function to check for a gateway and use this
> > - remove /etc/community.cfg and variables
> > - send fewer infos to keyxchangev2
> > - add a check if /tmp/keyxchangev2 not downloadable and edit a bit
> > on
> the
> > wgets
> > - change the position from json_load and do this only 1 times
> >
> > Update in v7:
> > !!UNTESTED!!
> > - delete keyxchangev2data at start of the script
> > - do only things with keyxchangev2data if available
> > - change keyxchangev2 url
> >
> > Update in v8/v9:
> > - rebase onto 20170918-beta
> >
> > Update in v10:
> > - Minor code fixes
> > - Added fff-hoods to fff-base Makefile
> > - Removed trailing whitespaces and harmonized tabs
> > - Fixed some comments spelling
> > - Added mac for hostname rewrite
> > - Removed redundant check for /tmp/keyxchangev2data
> > ---
> > src/packages/fff/fff-hoods/Makefile | 39 ++++
> > .../files/etc/hotplug.d/iface/50-fff-hoods | 5 +
> > .../fff/fff-hoods/files/usr/lib/micron.d/fff-hoods | 1 +
> > .../fff/fff-hoods/files/usr/sbin/configurehood | 206
> > +++++++++++++++++++++
> > src/packages/fff/fff/Makefile | 3 +-
> > 5 files changed, 253 insertions(+), 1 deletion(-) create mode 100644
> > src/packages/fff/fff-hoods/Makefile
> > create mode 100644 src/packages/fff/fff-
> > hoods/files/etc/hotplug.d/iface/50-fff-hoods
> > create mode 100644
> > src/packages/fff/fff-hoods/files/usr/lib/micron.d/fff-
> > hoods
> > create mode 100755 src/packages/fff/fff-
> > hoods/files/usr/sbin/configurehood
> >
> > diff --git a/src/packages/fff/fff-hoods/Makefile
> > b/src/packages/fff/fff- hoods/Makefile new file mode 100644 index
> > 0000000..f85178d
> > --- /dev/null
> > +++ b/src/packages/fff/fff-hoods/Makefile
> > @@ -0,0 +1,39 @@
> > +include $(TOPDIR)/rules.mk
> > +
> > +PKG_NAME:=fff-hoods
> > +PKG_VERSION:=0.0.1
> > +PKG_RELEASE:=1
> > +
> > +PKG_BUILD_DIR:=$(BUILD_DIR)/fff-hoods
> > +
> > +include $(INCLUDE_DIR)/package.mk
> > +
> > +define Package/fff-hoods
> > + SECTION:=base
> > + CATEGORY:=Freifunk
> > + TITLE:= Freifunk-Franken hoods
> > + URL:=http://www.freifunk-franken.de
> > + DEPENDS:=+fff-network
> > +endef
> > +
> > +define Package/fff-hoods/description
> > + This package load and configures the current hood endef
> > +
> > +define Build/Prepare
> > + echo "all: " > $(PKG_BUILD_DIR)/Makefile endef
> > +
> > +define Build/Configure
> > + # nothing
> > +endef
> > +
> > +define Build/Compile
> > + # nothing
> > +endef
> > +
> > +define Package/fff-hoods/install
> > + $(CP) ./files/* $(1)/
> > +endef
> > +
> > +$(eval $(call BuildPackage,fff-hoods))
> > diff --git
> a/src/packages/fff/fff-hoods/files/etc/hotplug.d/iface/50-fff-hoods
> > b/src/packages/fff/fff-hoods/files/etc/hotplug.d/iface/50-fff-hoods
> > new file mode 100644
> > index 0000000..49f53e3
> > --- /dev/null
> > +++ b/src/packages/fff/fff-hoods/files/etc/hotplug.d/iface/50-fff-hood
> > +++ s
> > @@ -0,0 +1,5 @@
> > +#!/bin/sh
> > +[ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && {
> > + sleep 3
> > + /usr/sbin/configurehood
> > +}
> > diff --git
> > a/src/packages/fff/fff-hoods/files/usr/lib/micron.d/fff-hoods
> > b/src/packages/fff/fff-hoods/files/usr/lib/micron.d/fff-hoods
> > new file mode 100644
> > index 0000000..ca8d798
> > --- /dev/null
> > +++ b/src/packages/fff/fff-hoods/files/usr/lib/micron.d/fff-hoods
> > @@ -0,0 +1 @@
> > +*/5 * * * * /usr/sbin/configurehood
> > diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > new file mode 100755
> > index 0000000..ad316f8
> > --- /dev/null
> > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > @@ -0,0 +1,206 @@
> > +#!/bin/sh
> > +
> > +. /usr/share/libubox/jshn.sh
> > +. /lib/functions/fff/wireless
> > +
> > +rm /tmp/keyxchangev2data
> > +
> > +# Gatewaycheck function
> > +isGatewayAvailable() {
> > + if [ "$(batctl gwl | wc -l)" -gt 2 ]; then
> > + return true;
> > + else
> > + return false;
> > + fi
> > +}
> > +
> > +
> > +# Hidden AP check
> > +
> > +if [ -f /tmp/hiddenapflag ]; then
> > + if [ isGatewayAvailable ]; then
> > + if ! wifiAddAP "$radio" "config.franken.freifunk.net"
> > "configap" "configap" "1"; then
> > + echo "Can't add AP interface on $radio."
> > + exit 1
> > + else
> > + # We must set a fixed ip address here
> > + uci set network.configap=interface
> > + uci set network.configap.proto='static'
> > + uci set network.configap.ip6addr='fe80::1/64'
> > + uci commit network
> > + fi
> > + else
> > + rm /tmp/hiddenapflag
> > + fi
> > +fi
> > +
> > +
> > +lat=$(uci get system. at system[0].latitude) long=$(uci get
> > +system. at system[0].longitude) hostname=$(cat
> > /proc/sys/kernel/hostname)
> > +mac=$(awk '{ mac=toupper($1); gsub(":", "", mac); print mac }'
> > +/sys/class/net/br-mesh/address 2>/dev/null) [ "$hostname" =
> "OpenWrt"
> > +]
> > && hostname=""
> > +[ "$hostname" = "" ] && hostname="$mac"
> > +
> > +test_ipv4_host1="keyserver.freifunk-franken.de" # Freifunk-Franken
> > keyserver
> > +test_ipv4_host2="8.8.8.8" # Google DNS
> > +test_ipv6_host1="heise.de" # heise Zeitschriftenverlag
> > +
> > +# if we have Internet, we download the Hoodfile from the keyxchangev2
> > +if ping -w5 -c3 "$test_ipv4_host1" &>/dev/null ||
> > + ping -w5 -c3 "$test_ipv4_host2" &>/dev/null ||
> > + ping6 -w5 -c3 "$test_ipv6_host1" &>/dev/null; then
> > + wget -T15 -t5 "http://keyserver.freifunk-
> > franken.de/v2/?lat=$lat&long=$long" -O /tmp/keyxchangev2data
> > + #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
> > + # Only do that, when we have no gateway in range. If the
> > Uplinkrouter changed the hood, we lost the GW and do this
> > automatically again, I think! Nice idea?
> > + 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
> > + if ! wifiDelAll; 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
> > + if iw phy "$phy" info | grep -q -m1 "2... MHz"; then
> > + echo "$phy is 2.4 GHz"
> > + radio=$(wifiAddPhy "$phy"
> > "$BATMAN_CHANNEL")
> > + if [ -z "$radio" ]; then
> > + echo "Can't create radio for $phy"
> > + exit 1
> > + fi
> > + fi
> > + if iw phy "$phy" info | grep -q -m1 "5... MHz"; then
> > + echo "$phy is 5 GHz"
> > + radio=$(wifiAddPhy "$phy"
> > "$BATMAN_CHANNEL_5GHZ")
> > + if [ -z "$radio" ]; then
> > + echo "Can't create radio for $phy"
> > + exit 1
> > + fi
> > + fi
> > + #and here we add the station
> > + if ! wifiAddSta "$radio"
> "config.franken.freifunk.net"
> > "configSta"; then
> > + echo "Can't add Sta interface on $radio."
> > + exit 1
> > + 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]/keyxchangev2data" -O
> > /tmp/keyxchangev2data
> > + else
> > + echo "We have a Gateway in Range, we load the
> > keyxchangev2data from fe80::1"
> > + wget -T15 -t5 "http://[fe80::1%br-mesh]/keyxchangev2data"
> > -O /tmp/keyxchangev2data
> > + fi
> > +
> > +fi
> > +
> > +if [ -s /tmp/keyxchangev2data ]; 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!
> > +
> > + json_load "$(cat /tmp/keyxchangev2data)"
> > + sumnew=$(sha256sum /tmp/keyxchangev2data | cut -f1 -d " ")
> > + sumold=$(sha256sum /www/public/keyxchangev2data &>/dev/null
> > | cut -f1 -d " ")
> > + if [ "$sumnew" != "$sumold" ]; then
> > + echo "New file detect, we reconfigure the Node";
> > +
> > + # copy the file to webroot so that other Meshrouter can
> > download it
> > + cp /tmp/keyxchangev2data /www/public/
> > +
> > + json_select hood
> > +
> > + json_get_var hood name
> > + json_get_var mesh_bssid mesh_bssid
> > + json_get_var mesh_essid mesh_essid
> > + json_get_var essid essid
> > + # i think the next things we don't active this in the first
> > version! we can do it later
> > + #json_get_var channel2 channel2
> > + #json_get_var mode2 mode2
> > + #json_get_var type2 type2
> > + #json_get_var channel5 channel5
> > + #json_get_var mode5 mode5
> > + #json_get_var type5 type5
> > + #json_get_var protocol protocol
> > +
> > + echo "Setting hood name: $hood"
> > + uci set "system. at system[0].hood=$hood"
> > +
> > + if ! wifiDelAll; then
> > + echo "Can't delete current wifi setup"
> > + exit 1
> > + fi
> > +
> > + for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
> > + if iw phy "$phy" info | grep -q -m1 "2... MHz"; then
> > + echo "$phy is 2.4 GHz"
> > + radio=$(wifiAddPhy "$phy" "1")
> > + if [ -z "$radio" ]; then
> > + echo "Can't create radio for $phy"
> > + exit 1
> > + fi
> > + fi
> > + if iw phy "$phy" info | grep -q -m1 "5... MHz"; then
> > + echo "$phy is 5 GHz"
> > + radio=$(wifiAddPhy "$phy" "13")
> > + if [ -z "$radio" ]; then
> > + echo "Can't create radio for $phy"
> > + exit 1
> > + fi
> > + fi
> > +
> > + if ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0";
> then
> > + echo "Can't add AP interface on $radio."
> > + exit 1
> > + fi
> > +
> > + # here we set a bit for add hidden AP
> > + touch /tmp/hiddenapflag
> > +
> > + if ! wifiAddAdHocMesh "$radio" "$mesh_essid"
> > "$mesh_bssid"; then
> > + echo "Can't add AP interface on $radio."
> > + exit 1
> > + fi
> > + done
> > +
> > + echo "Loading wifi"
> > + wifi
> > +
> > + else
> > + echo "We have no new file or we haven't got a file. We do
> > nothing. We try it again in 5 minutes...";
> > + fi
> > +
> > + # and now we read the VPN Data and give this data to fff-vpn
> > + json_load "$(cat /tmp/keyxchangev2data)"
> > +
> > + json_select vpn
> > + Index="1"
> > + rm /tmp/fastd_fff_output
> > + touch /tmp/fastd_fff_output
> > + while json_select $Index > /dev/null
> > + do
> > + json_get_var protocol protocol
> > + if [ "$protocol" == "fastd" ]; then
> > + json_get_var servername name
> > + echo "####${servername}.conf" >>
> > /tmp/fastd_fff_output
> > + echo "#name \"${servername}\";" >>
> > /tmp/fastd_fff_output
> > + json_get_var key key
> > + echo "key \"${key}\";" >> /tmp/fastd_fff_output
> > + json_get_var address address
> > + json_get_var port port
> > + echo "remote ipv4 \"${address}\" port $port float;"
> > >> /tmp/fastd_fff_output
> > + fi
> > + echo "" >> /tmp/fastd_fff_output
> > + echo "###" >> /tmp/fastd_fff_output
> > + done
> > + #this we do every 5 minutes, because it can change the VPN Protocol
> > + #and now we get to vpn-select Script and load VPNs
> > + sh /usr/sbin/vpn-select
> > +fi
> > diff --git a/src/packages/fff/fff/Makefile
> > b/src/packages/fff/fff/Makefile index 166d423..305ab8d 100644
> > --- a/src/packages/fff/fff/Makefile
> > +++ b/src/packages/fff/fff/Makefile
> > @@ -29,7 +29,8 @@ define Package/fff-base
> > +fff-wireless \
> > +fff-timeserver \
> > +fff-vpn-select \
> > - +simple-tc
> > + +simple-tc \
> > + +fff-hoods
> > endef
> >
> > define Package/fff-base/description
> > --
> > 2.7.4
> >
> > --
> > franken-dev mailing list
> > franken-dev at freifunk.net
> > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
>
> --
> 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