<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Finde ich komisch warum „cat“ überhaupt auf STDERR schreibt, wann kann das passieren?  Doch eigentlich nur wenn der file gar nicht existiert, oder eine pipe oder so ist?<div class="">Wäre es besser dann erst mit -f zu testen?  Ich weiss das LEDE ein Linux ist aber ich habe mir die sourcen von OpenBSD angeschaut die auf korrektheit aufbauen,</div><div class=""><a href="https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/bin/cat/cat.c?rev=1.26&content-type=text/plain" class="">https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/bin/cat/cat.c?rev=1.26&content-type=text/plain</a> da ist eigentlich nur die gelegenheit von cat zu stderr zu schreiben wenn es zum beispiel nicht malloc()’en kann, also kein RAM speicher hat.</div><div class=""><br class=""></div><div class="">Was ich sagen will wir sollten uns einigen entweder cat $file 2>/dev/null schreiben und es überall so tun oder gar nicht.  Was glaubt ihr?</div><div class=""><br class=""></div><div class="">Gruß,</div><div class="">-peter</div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">Am 03.10.2017 um 13:13 schrieb <<a href="mailto:mail@adrianschmutzler.de" class="">mail@adrianschmutzler.de</a>> <<a href="mailto:mail@adrianschmutzler.de" class="">mail@adrianschmutzler.de</a>>:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hallo,<br class=""><br class="">der keyserver v2 schickt einen timestamp mit, daher ist der Vergleich der<br class="">SHA sinnlos und jeder File wird als neu behandelt!<br class=""><br class=""><blockquote type="cite" class="">+<span class="Apple-tab-span" style="white-space:pre">    </span>sumnew=$(sha256sum /tmp/keyxchangev2data | cut -f1 -d " ")<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span>sumold=$(sha256sum /www/public/keyxchangev2data &>/dev/null<br class="">| cut -f1 -d " ")<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span>if [ "$sumnew" != "$sumold" ]; then<br class=""></blockquote><br class="">Das muss am Server korrigiert werden, alternativ baue ich in den nächsten<br class="">Patch folgenden Workaround:<br class=""><br class="">        catnew="$(cat /tmp/keyxchangev2data | sed<br class="">'s/"timestamp":[0-9]*/"timestamp":0/')"<br class="">        catold="$(cat /www/public/keyxchangev2data 2>/dev/null | sed<br class="">'s/"timestamp":[0-9]*/"timestamp":0/')"<br class="">        sumnew=$(echo "$catnew" | sha256sum | cut -f1 -d " ")<br class="">        sumold=$(echo "$catold" | sha256sum | cut -f1 -d " ")<br class="">        if [ "$sumnew" != "$sumold" ]; then<br class=""><br class=""><br class="">Grüße<br class=""><br class="">Adrian<br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><blockquote type="cite" class="">-----Original Message-----<br class="">From: franken-dev [<a href="mailto:franken-dev-bounces@freifunk.net" class="">mailto:franken-dev-bounces@freifunk.net</a>] On Behalf<br class="">Of Adrian Schmutzler<br class="">Sent: Montag, 2. Oktober 2017 18:06<br class="">To: <a href="mailto:franken-dev@freifunk.net" class="">franken-dev@freifunk.net</a><br class="">Cc: Jan Kraus <<a href="mailto:mayosemmel@gmail.com" class="">mayosemmel@gmail.com</a>><br class="">Subject: [PATCH v12 4/6] Add fff-hoods<br class=""><br class="">From: Christian Dresel <<a href="mailto:fff@chrisi01.de" class="">fff@chrisi01.de</a>><br class=""><br class="">This package connects to keyxchangev2<br class="">After review we must change the serveradress! This is only a example<br class=""><br class="">Signed-off-by: Christian Dresel <<a href="mailto:fff@chrisi01.de" class="">fff@chrisi01.de</a>><br class="">Signed-off-by: Jan Kraus <<a href="mailto:mayosemmel@gmail.com" class="">mayosemmel@gmail.com</a>><br class="">Signed-off-by: Adrian Schmutzler <<a href="mailto:freifunk@adrianschmutzler.de" class="">freifunk@adrianschmutzler.de</a>><br class=""><br class="">Update in v2:<br class=""> - clean tabstops<br class=""> - move the json vpn out of the if because we need this after reboot<br class=""><br class="">Update in v5:<br class=""><span class="Apple-tab-span" style="white-space:pre">   </span>!!UNTESTED!!<br class=""> - change hidden AP ip to locallink<br class=""> - Open hidden AP after more checks<br class=""> - Load json File from Gateway if Gateway in Batman in Range<br class=""><br class="">Update in v6:<br class=""><span class="Apple-tab-span" style="white-space:pre">   </span>!!UNTESTED!!<br class=""> - fix hidden station v6<br class=""> - fix -n to -f if<br class=""> - Add function to check for a gateway and use this<br class=""> - remove /etc/community.cfg and variables<br class=""> - send fewer infos to keyxchangev2<br class=""> - add a check if /tmp/keyxchangev2 not downloadable and edit a bit  on<br class=""></blockquote>the<br class=""><blockquote type="cite" class="">wgets<br class=""> - change the position from json_load and do this only 1 times<br class=""><br class="">Update in v7:<br class=""><span class="Apple-tab-span" style="white-space:pre">     </span>!!UNTESTED!!<br class=""> - delete keyxchangev2data at start of the script<br class=""> - do only things with keyxchangev2data if available<br class=""> - change keyxchangev2 url<br class=""><br class="">Update in v8/v9:<br class=""> - rebase onto 20170918-beta<br class=""><br class="">Update in v10:<br class=""> - Minor code fixes<br class=""> - Added fff-hoods to fff-base Makefile<br class=""> - Removed trailing whitespaces and harmonized tabs<br class=""> - Fixed some comments spelling<br class=""> - Added mac for hostname rewrite<br class=""> - Removed redundant check for /tmp/keyxchangev2data<br class=""><br class="">Update in v11:<br class=""> - Changed isGatewayAvailable to return integers (bool is<br class="">   not valid) and removed brackets for evaluations<br class=""> - Added variables for channels as they are used twice<br class=""> - Fixed $radio not set at the beginning (WORKAROUND!)<br class=""> - Changed OpenWRT to LEDE<br class=""> - Correctly reset json_select before reuse<br class=""> - Some tidying-up of comments and hyphens<br class=""> - Fixed vpn loop so it works for more than one host (TESTED)<br class=""> - Fixed "else" if no file received<br class=""><br class="">Changes in v12:<br class=""> - Removed obsolete hostname<br class=""><br class="">ToDo:<br class=""> - Mesh routers do not connect to config<br class="">---<br class=""> src/packages/fff/fff-hoods/Makefile                |  39 ++++<br class=""> .../files/etc/hotplug.d/iface/50-fff-hoods         |   5 +<br class=""> .../fff/fff-hoods/files/usr/lib/micron.d/fff-hoods |   1 +<br class=""> .../fff/fff-hoods/files/usr/sbin/configurehood     | 210<br class="">+++++++++++++++++++++<br class=""> src/packages/fff/fff/Makefile                      |   3 +-<br class=""> 5 files changed, 257 insertions(+), 1 deletion(-)  create mode 100644<br class="">src/packages/fff/fff-hoods/Makefile<br class=""> create mode 100644 src/packages/fff/fff-<br class="">hoods/files/etc/hotplug.d/iface/50-fff-hoods<br class=""> create mode 100644 src/packages/fff/fff-hoods/files/usr/lib/micron.d/fff-<br class="">hoods<br class=""> create mode 100755 src/packages/fff/fff-<br class="">hoods/files/usr/sbin/configurehood<br class=""><br class="">diff --git a/src/packages/fff/fff-hoods/Makefile b/src/packages/fff/fff-<br class="">hoods/Makefile<br class="">new file mode 100644<br class="">index 0000000..f85178d<br class="">--- /dev/null<br class="">+++ b/src/packages/fff/fff-hoods/Makefile<br class="">@@ -0,0 +1,39 @@<br class="">+include $(TOPDIR)/rules.mk<br class="">+<br class="">+PKG_NAME:=fff-hoods<br class="">+PKG_VERSION:=0.0.1<br class="">+PKG_RELEASE:=1<br class="">+<br class="">+PKG_BUILD_DIR:=$(BUILD_DIR)/fff-hoods<br class="">+<br class="">+include $(INCLUDE_DIR)/package.mk<br class="">+<br class="">+define Package/fff-hoods<br class="">+    SECTION:=base<br class="">+    CATEGORY:=Freifunk<br class="">+    TITLE:= Freifunk-Franken hoods<br class="">+    URL:=<a href="http://www.freifunk-franken.de" class="">http://www.freifunk-franken.de</a><br class="">+    DEPENDS:=+fff-network<br class="">+endef<br class="">+<br class="">+define Package/fff-hoods/description<br class="">+    This package load and configures the current hood endef<br class="">+<br class="">+define Build/Prepare<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span>echo "all: " > $(PKG_BUILD_DIR)/Makefile endef<br class="">+<br class="">+define Build/Configure<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span># nothing<br class="">+endef<br class="">+<br class="">+define Build/Compile<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span># nothing<br class="">+endef<br class="">+<br class="">+define Package/fff-hoods/install<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span>$(CP) ./files/* $(1)/<br class="">+endef<br class="">+<br class="">+$(eval $(call BuildPackage,fff-hoods))<br class="">diff --git<br class=""></blockquote>a/src/packages/fff/fff-hoods/files/etc/hotplug.d/iface/50-fff-hoods<br class=""><blockquote type="cite" class="">b/src/packages/fff/fff-hoods/files/etc/hotplug.d/iface/50-fff-hoods<br class="">new file mode 100644<br class="">index 0000000..49f53e3<br class="">--- /dev/null<br class="">+++ b/src/packages/fff/fff-hoods/files/etc/hotplug.d/iface/50-fff-hoods<br class="">@@ -0,0 +1,5 @@<br class="">+#!/bin/sh<br class="">+[ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && {<br class="">+       sleep 3<br class="">+       /usr/sbin/configurehood<br class="">+}<br class="">diff --git a/src/packages/fff/fff-hoods/files/usr/lib/micron.d/fff-hoods<br class="">b/src/packages/fff/fff-hoods/files/usr/lib/micron.d/fff-hoods<br class="">new file mode 100644<br class="">index 0000000..ca8d798<br class="">--- /dev/null<br class="">+++ b/src/packages/fff/fff-hoods/files/usr/lib/micron.d/fff-hoods<br class="">@@ -0,0 +1 @@<br class="">+*/5 * * * * /usr/sbin/configurehood<br class="">diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood<br class="">b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood<br class="">new file mode 100755<br class="">index 0000000..5346a90<br class="">--- /dev/null<br class="">+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood<br class="">@@ -0,0 +1,210 @@<br class="">+#!/bin/sh<br class="">+<br class="">+. /usr/share/libubox/jshn.sh<br class="">+. /lib/functions/fff/wireless<br class="">+<br class="">+rm /tmp/keyxchangev2data<br class="">+<br class="">+# Gatewaycheck function<br class="">+isGatewayAvailable() {<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span>if [ "$(batctl gwl | wc -l)" -gt 2 ]; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>return 0<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span>else<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>return 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span>fi<br class="">+}<br class="">+<br class="">+chan2ghz="1"<br class="">+chan5ghz="13"<br class="">+<br class="">+# Hidden AP check<br class="">+<br class="">+radio="radio0"<br class="">+if [ -f /tmp/hiddenapflag ]; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span>if isGatewayAvailable ; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ! wifiAddAP "$radio" "<a href="http://config.franken.freifunk.net" class="">config.franken.freifunk.net</a>"<br class="">"configap" "configap" "1"; then<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't add AP interface on $radio."<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>else<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span># We must set a fixed ip address here<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>uci set network.configap=interface<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>uci set network.configap.proto='static'<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>uci set network.configap.ip6addr='fe80::1/64'<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>uci commit network<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span>else<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>rm /tmp/hiddenapflag<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span>fi<br class="">+fi<br class="">+<br class="">+lat=$(uci get system.@system[0].latitude) long=$(uci get<br class="">+system.@system[0].longitude)<br class="">+<br class="">+test_ipv4_host1="<a href="http://keyserver.freifunk-franken.de" class="">keyserver.freifunk-franken.de</a>" # Freifunk-Franken<br class="">keyserver<br class="">+test_ipv4_host2="8.8.8.8"        # Google DNS<br class="">+test_ipv6_host1="<a href="http://heise.de" class="">heise.de</a>"       # heise Zeitschriftenverlag<br class="">+<br class="">+# if we have Internet, we download the Hoodfile from the keyxchangev2<br class="">+if ping -w5 -c3 "$test_ipv4_host1" &>/dev/null ||<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span>ping -w5 -c3 "$test_ipv4_host2" &>/dev/null ||<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span>ping6 -w5 -c3 "$test_ipv6_host1" &>/dev/null; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span>wget -T15 -t5 "<a href="http://keyserver.freifunk-" class="">http://keyserver.freifunk-</a><br class=""><a href="http://franken.de/v2/?lat=$lat&long=$long" class="">franken.de/v2/?lat=$lat&long=$long</a>" -O /tmp/keyxchangev2data<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span>#if no Internet, we connect to the hidden AP and download the file<br class="">+from another Node in range else<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span># connect to wireless hidden ap here and download the json File<br class="">from the nearest router<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span># Only do that, when we have no gateway in range. If the<br class="">Uplinkrouter changed the hood, we lost the GW and do this automatically<br class="">again, I think! Nice idea?<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span>if ! isGatewayAvailable ; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>#now we haven't a gateway in Range, we search for a hidden<br class="">AP to get a keyxchangev2data file!<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>#first we delete all wifi settings<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ! wifiDelAll; then<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't delete current wifi setup"<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>#now we look for phy and add this<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if iw phy "$phy" info | grep -q -m1 "2... MHz"; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "$phy is 2.4 GHz"<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>radio="$(wifiAddPhy "$phy" "$chan2ghz")"<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if [ -z "$radio" ]; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't create radio for $phy"<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if iw phy "$phy" info | grep -q -m1 "5... MHz"; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "$phy is 5 GHz"<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>radio="$(wifiAddPhy "$phy" "$chan5ghz")"<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if [ -z "$radio" ]; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't create radio for $phy"<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>#and here we add the station<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ! wifiAddSta "$radio"<br class=""></blockquote>"<a href="http://config.franken.freifunk.net" class="">config.franken.freifunk.net</a>"<br class=""><blockquote type="cite" class="">"configSta"; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't add Sta interface on $radio."<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>done<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>wifi<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span># wait a moment to start the interface<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>sleep 10;<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span># and here we can download the Hoodfile from the other<br class="">node<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>wget -T15 -t5 "<a href="http://[fe80::1%w2sta]/keyxchangev2data" class="">http://[fe80::1%w2sta]/keyxchangev2data</a>" -O<br class="">/tmp/keyxchangev2data<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span>else<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "We have a Gateway in Range, we load the<br class="">keyxchangev2data from fe80::1"<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>wget -T15 -t5 "<a href="http://[fe80::1%br-mesh]/keyxchangev2data" class="">http://[fe80::1%br-mesh]/keyxchangev2data</a>"<br class="">-O /tmp/keyxchangev2data<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span>fi<br class="">+fi<br class="">+<br class="">+if [ -s /tmp/keyxchangev2data ]; then<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span># we get a json file in this format:<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span># <a href="https://pw.freifunk-franken.de/patch/205/" class="">https://pw.freifunk-franken.de/patch/205/</a><br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span># but without signature, every hood file we get is valid!<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span>json_load "$(cat /tmp/keyxchangev2data)"<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span>sumnew=$(sha256sum /tmp/keyxchangev2data | cut -f1 -d " ")<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span>sumold=$(sha256sum /www/public/keyxchangev2data &>/dev/null<br class="">| cut -f1 -d " ")<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span>if [ "$sumnew" != "$sumold" ]; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "New file detect, we reconfigure the Node";<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span># copy the file to webroot so that other Meshrouter can<br class="">download it<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>cp /tmp/keyxchangev2data /www/public/<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_select hood<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var hood name<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var mesh_bssid mesh_bssid<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var mesh_essid mesh_essid<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var essid essid<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span># i think the next things we don't active this in the first<br class="">version! we can do it later<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>#json_get_var channel2 channel2<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>#json_get_var mode2 mode2<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>#json_get_var type2 type2<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>#json_get_var channel5 channel5<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>#json_get_var mode5 mode5<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>#json_get_var type5 type5<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>#json_get_var protocol protocol<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_select ".." # back to root<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Setting hood name: $hood"<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>uci set "system.@system[0].hood=$hood"<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ! wifiDelAll; then<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't delete current wifi setup"<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if iw phy "$phy" info | grep -q -m1 "2... MHz"; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "$phy is 2.4 GHz"<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>radio="$(wifiAddPhy "$phy" "$chan2ghz")"<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if [ -z "$radio" ]; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't create radio for $phy"<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if iw phy "$phy" info | grep -q -m1 "5... MHz"; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "$phy is 5 GHz"<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>radio="$(wifiAddPhy "$phy" "$chan5ghz")"<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if [ -z "$radio" ]; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't create radio for $phy"<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0";<br class=""></blockquote>then<br class=""><blockquote type="cite" class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't add AP interface on $radio."<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span># here we set a bit for add hidden AP<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>touch /tmp/hiddenapflag<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ! wifiAddAdHocMesh "$radio" "$mesh_essid"<br class="">"$mesh_bssid"; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Can't add AP interface on $radio."<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 1<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>done<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "Loading wifi"<br class="">+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>wifi<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span>else<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "We have no new file. We do nothing. We try it again in<br class="">5 minutes...";<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>exit 0<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>fi<br class="">+<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span># and now we read the VPN Data and give this data to fff-vpn<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span>json_select vpn<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span>Index=1<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span>rm /tmp/fastd_fff_output<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span>touch /tmp/fastd_fff_output<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span>while json_select "$Index" > /dev/null<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span>do<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var protocol protocol<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>if [ "$protocol" == "fastd" ]; then<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var servername name<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "####${servername}.conf" >><br class="">/tmp/fastd_fff_output<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "#name \"${servername}\";" >><br class="">/tmp/fastd_fff_output<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var key key<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "key \"${key}\";" >> /tmp/fastd_fff_output<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var address address<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_get_var port port<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "remote ipv4 \"${address}\" port $port float;"<br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">/tmp/fastd_fff_output<br class=""></blockquote></blockquote>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>fi<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>echo "" >> /tmp/fastd_fff_output<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>json_select ".." # back to vpn<br class="">+<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>Index=$(( Index + 1 ))<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>done<br class="">+<span class="Apple-tab-span" style="white-space:pre">  </span>echo "###" >> /tmp/fastd_fff_output<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span>json_select ".." # back to root<br class="">+<span class="Apple-tab-span" style="white-space:pre">     </span>#this we do every 5 minutes, because it can change the VPN Protocol<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span>#and now we get to vpn-select Script and load VPNs<br class="">+<span class="Apple-tab-span" style="white-space:pre">    </span>sh /usr/sbin/vpn-select<br class="">+<br class="">+else<br class="">+<span class="Apple-tab-span" style="white-space:pre">       </span>echo "We haven't got a file. We do nothing. We try it again in 5<br class="">minutes...";<br class="">+<span class="Apple-tab-span" style="white-space:pre">   </span>exit 0<br class="">+fi<br class="">diff --git a/src/packages/fff/fff/Makefile b/src/packages/fff/fff/Makefile<br class="">index 166d423..305ab8d 100644<br class="">--- a/src/packages/fff/fff/Makefile<br class="">+++ b/src/packages/fff/fff/Makefile<br class="">@@ -29,7 +29,8 @@ define Package/fff-base<br class="">              +fff-wireless \<br class="">              +fff-timeserver \<br class="">              +fff-vpn-select \<br class="">-             +simple-tc<br class="">+             +simple-tc \<br class="">+             +fff-hoods<br class=""> endef<br class=""><br class=""> define Package/fff-base/description<br class="">--<br class="">2.7.4<br class=""><br class="">--<br class="">franken-dev mailing list<br class=""><a href="mailto:franken-dev@freifunk.net" class="">franken-dev@freifunk.net</a><br class="">http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net<br class=""></blockquote><br class="">-- <br class="">franken-dev mailing list<br class=""><a href="mailto:franken-dev@freifunk.net" class="">franken-dev@freifunk.net</a><br class="">http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net<br class=""></div></div></blockquote></div><br class=""></div></body></html>