Message ID | 20170427102321.3689-1-rlanghammer@web.de |
---|---|
State | Superseded |
Headers | show |
diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select index a0878c5..c79a872 100755 --- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select +++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select @@ -4,7 +4,8 @@ test -f /tmp/started || exit make_config() { # remove old config ->/etc/config/tunneldigger +>/tmp/tunneldigger + rm /tmp/fastd_${project}_peers/* count=0 # get fastd peers @@ -23,13 +24,13 @@ for file in $filecounts; do L2PORT=$((FDPORT + 10000)) UUID=$hostname - uci set tunneldigger.$count=broker - uci set tunneldigger.$count.address="$IP:$L2PORT" - uci set tunneldigger.$count.uuid="$UUID" - uci set tunneldigger.$count.interface="l2tp$count" - uci set tunneldigger.$count.enabled="1" - uci set tunneldigger.$count.hook_script='/etc/tunneldigger/tunneldigger.hook' - uci commit tunneldigger + uci -c /tmp set tunneldigger.$count=broker + uci -c /tmp set tunneldigger.$count.address="$IP:$L2PORT" + uci -c /tmp set tunneldigger.$count.uuid="$UUID" + uci -c /tmp set tunneldigger.$count.interface="l2tp$count" + uci -c /tmp set tunneldigger.$count.enabled="1" + uci -c /tmp set tunneldigger.$count.hook_script='/etc/tunneldigger/tunneldigger.hook' + uci -c /tmp commit tunneldigger count=$((count + 1)) # remove this fastd-peer rm /etc/fastd/${project}/peers/$file @@ -67,14 +68,18 @@ if ping -w5 -c3 "$test_ipv4_host1" &>/dev/null || uci commit fastd fi make_config - /etc/init.d/fastd start + # start fastd if there are some peers left + [ "$(ls /etc/fastd/${project}/peers/* 2>/dev/null)" ] && /etc/init.d/fastd start + # check if new tunneldigger conf is different + [ -n "$(cat /etc/config/tunneldigger tunneldigger | sort | uniq -u)" ] && cp /tmp/tunneldigger /etc/config/tunneldigger /etc/init.d/tunneldigger start else - # check if new tunneldigger conf is different - sumold=$(sha256sum /etc/config/tunneldigger) make_config - sumnew=$(sha256sum /etc/config/tunneldigger) - [ "$sumnew" != "$sumold" ] && /etc/init.d/tunneldigger restart + # check if new tunneldigger conf is different + if [ -n "$(cat /etc/config/tunneldigger tunneldigger | sort | uniq -u)" ] ; then + cp /tmp/tunneldigger /etc/config/tunneldigger + /etc/init.d/tunneldigger restart + fi /etc/init.d/fastd reload # fastd start/stop for various situations
Moin Robert Am Donnerstag, den 27.04.2017, 12:23 +0200 schrieb Robert Langhammer: > Fixes: 41 Afaik muss ne Raute vor die Zahl. > Signed-off-by: Robert Langhammer <rlanghammer@web.de> > --- > .../fff/fff-vpn-select/files/usr/sbin/vpn-select | 31 +++++++++++++--------- > 1 file changed, 18 insertions(+), 13 deletions(-) > > diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select > index a0878c5..c79a872 100755 > --- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select > +++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select > @@ -4,7 +4,8 @@ test -f /tmp/started || exit > > make_config() { > # remove old config > ->/etc/config/tunneldigger > +>/tmp/tunneldigger > + > rm /tmp/fastd_${project}_peers/* > count=0 > # get fastd peers > @@ -23,13 +24,13 @@ for file in $filecounts; do > L2PORT=$((FDPORT + 10000)) > UUID=$hostname > > - uci set tunneldigger.$count=broker > - uci set tunneldigger.$count.address="$IP:$L2PORT" > - uci set tunneldigger.$count.uuid="$UUID" > - uci set tunneldigger.$count.interface="l2tp$count" > - uci set tunneldigger.$count.enabled="1" > - uci set tunneldigger.$count.hook_script='/etc/tunneldigger/tunneldigger.hook' > - uci commit tunneldigger > + uci -c /tmp set tunneldigger.$count=broker > + uci -c /tmp set tunneldigger.$count.address="$IP:$L2PORT" > + uci -c /tmp set tunneldigger.$count.uuid="$UUID" > + uci -c /tmp set tunneldigger.$count.interface="l2tp$count" > + uci -c /tmp set tunneldigger.$count.enabled="1" > + uci -c /tmp set tunneldigger.$count.hook_script='/etc/tunneldigger/tunneldigger.hook' > + uci -c /tmp commit tunneldigger > count=$((count + 1)) > # remove this fastd-peer > rm /etc/fastd/${project}/peers/$file > @@ -67,14 +68,18 @@ if ping -w5 -c3 "$test_ipv4_host1" &>/dev/null || > uci commit fastd > fi > make_config > - /etc/init.d/fastd start > + # start fastd if there are some peers left > + [ "$(ls /etc/fastd/${project}/peers/* 2>/dev/null)" ] && /etc/init.d/fastd start Ah prima. Das ist allerdings mehr als du im Commit-Log erwähnst. ;) > + # check if new tunneldigger conf is different > + [ -n "$(cat /etc/config/tunneldigger tunneldigger | sort | uniq -u)" ] && cp /tmp/tunneldigger /etc/config/tunneldigger Das versteh ich nicht. Jetzt würde er ja bei jedem Aufruf die Config kopieren, sofern die neue nicht leer ist. Wir schreiben dann also immer noch auf den Flash. > /etc/init.d/tunneldigger start > else > - # check if new tunneldigger conf is different > - sumold=$(sha256sum /etc/config/tunneldigger) > make_config > - sumnew=$(sha256sum /etc/config/tunneldigger) > - [ "$sumnew" != "$sumold" ] && /etc/init.d/tunneldigger restart > + # check if new tunneldigger conf is different > + if [ -n "$(cat /etc/config/tunneldigger tunneldigger | sort | uniq -u)" ] ; then > + cp /tmp/tunneldigger /etc/config/tunneldigger Hier auch.. Was spricht dagegen einfach ein symlink von /etc/config/tunneldigger -> /tmp/tunneldigger zu legen? Dann würde der Symlink einmalig angelegt werden (oder ist im Image ggfs schon drin). Der Rest liegt dann immer im RAM. Tim > + /etc/init.d/tunneldigger restart > + fi > /etc/init.d/fastd reload > > # fastd start/stop for various situations > -- > 2.9.3 >
Hallo Tim, Am 27.04.2017 um 19:43 schrieb Tim Niemeyer: > Moin Robert > > Am Donnerstag, den 27.04.2017, 12:23 +0200 schrieb Robert Langhammer: >> Fixes: 41 > Afaik muss ne Raute vor die Zahl. ah, ok. Gibt auf jeden Fall noch eine v2 (hab unten schon einen Fehler gefunden :( > >> Signed-off-by: Robert Langhammer <rlanghammer@web.de> >> --- >> .../fff/fff-vpn-select/files/usr/sbin/vpn-select | 31 +++++++++++++--------- >> 1 file changed, 18 insertions(+), 13 deletions(-) >> >> diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select >> index a0878c5..c79a872 100755 >> --- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select >> +++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select >> @@ -4,7 +4,8 @@ test -f /tmp/started || exit >> >> make_config() { >> # remove old config >> ->/etc/config/tunneldigger >> +>/tmp/tunneldigger >> + >> rm /tmp/fastd_${project}_peers/* >> count=0 >> # get fastd peers >> @@ -23,13 +24,13 @@ for file in $filecounts; do >> L2PORT=$((FDPORT + 10000)) >> UUID=$hostname >> >> - uci set tunneldigger.$count=broker >> - uci set tunneldigger.$count.address="$IP:$L2PORT" >> - uci set tunneldigger.$count.uuid="$UUID" >> - uci set tunneldigger.$count.interface="l2tp$count" >> - uci set tunneldigger.$count.enabled="1" >> - uci set tunneldigger.$count.hook_script='/etc/tunneldigger/tunneldigger.hook' >> - uci commit tunneldigger >> + uci -c /tmp set tunneldigger.$count=broker >> + uci -c /tmp set tunneldigger.$count.address="$IP:$L2PORT" >> + uci -c /tmp set tunneldigger.$count.uuid="$UUID" >> + uci -c /tmp set tunneldigger.$count.interface="l2tp$count" >> + uci -c /tmp set tunneldigger.$count.enabled="1" >> + uci -c /tmp set tunneldigger.$count.hook_script='/etc/tunneldigger/tunneldigger.hook' >> + uci -c /tmp commit tunneldigger >> count=$((count + 1)) >> # remove this fastd-peer >> rm /etc/fastd/${project}/peers/$file >> @@ -67,14 +68,18 @@ if ping -w5 -c3 "$test_ipv4_host1" &>/dev/null || >> uci commit fastd >> fi >> make_config >> - /etc/init.d/fastd start >> + # start fastd if there are some peers left >> + [ "$(ls /etc/fastd/${project}/peers/* 2>/dev/null)" ] && /etc/init.d/fastd start > Ah prima. Das ist allerdings mehr als du im Commit-Log erwähnst. ;) :) Hat sich ja an der Funktion nix geändert, nur dass /etc/init.d/fastd start nicht angezogen wird, wenn es keine Peers gibt. Ergebnis ist das gleiche wie vorher. Hmm, oder startet fastd auch ohne peers? > >> + # check if new tunneldigger conf is different >> + [ -n "$(cat /etc/config/tunneldigger tunneldigger | sort | uniq -u)" ] && cp /tmp/tunneldigger /etc/config/tunneldigger > Das versteh ich nicht. Jetzt würde er ja bei jedem Aufruf die Config > kopieren, sofern die neue nicht leer ist. Wir schreiben dann also immer > noch auf den Flash. Hier wird nur kopiert, wenn die beiden Dateien untetschiedlich sind. (diff für Arme) Mist! sehe gerade nen Pfadfehler. Muss natürlich: cat /etc/config/tunneldigger /tmp/tunneldigger > >> /etc/init.d/tunneldigger start >> else >> - # check if new tunneldigger conf is different >> - sumold=$(sha256sum /etc/config/tunneldigger) >> make_config >> - sumnew=$(sha256sum /etc/config/tunneldigger) >> - [ "$sumnew" != "$sumold" ] && /etc/init.d/tunneldigger restart >> + # check if new tunneldigger conf is different >> + if [ -n "$(cat /etc/config/tunneldigger tunneldigger | sort | uniq -u)" ] ; then >> + cp /tmp/tunneldigger /etc/config/tunneldigger > Hier auch.. > > Was spricht dagegen einfach ein symlink von /etc/config/tunneldigger > -> /tmp/tunneldigger zu legen? Dann würde der Symlink einmalig angelegt > werden (oder ist im Image ggfs schon drin). Der Rest liegt dann immer im > RAM. Genau das war meine erste Idee, wäre ja mit nem Einzeiler erledigt. Aber uci kann nicht mit Links in /etc/config umgehen (warum???) Ich wollte aber schon gerne die Werte mit uci set schreiben und später eventuell auch mal lesen. Darum der Umweg mit der config in/tmp. Schön wäre auch "uci changes tunneldigger" gewesen, hab es aber nicht hin bekommen, fest zu stellen, wenn ein peer weg fällt. Robert > > Tim > >> + /etc/init.d/tunneldigger restart >> + fi >> /etc/init.d/fastd reload >> >> # fastd start/stop for various situations >> -- >> 2.9.3 >>
Hi Robert Am Donnerstag, den 27.04.2017, 22:17 +0200 schrieb Robert Langhammer: > Hallo Tim, > > > > Am 27.04.2017 um 19:43 schrieb Tim Niemeyer: > > Moin Robert > > > > Am Donnerstag, den 27.04.2017, 12:23 +0200 schrieb Robert Langhammer: > >> Fixes: 41 > > Afaik muss ne Raute vor die Zahl. > ah, ok. Gibt auf jeden Fall noch eine v2 (hab unten schon einen Fehler > gefunden :( > > > >> Signed-off-by: Robert Langhammer <rlanghammer@web.de> > >> --- > >> .../fff/fff-vpn-select/files/usr/sbin/vpn-select | 31 +++++++++++++--------- > >> 1 file changed, 18 insertions(+), 13 deletions(-) > >> > >> diff --git a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select > >> index a0878c5..c79a872 100755 > >> --- a/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select > >> +++ b/src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select > >> @@ -4,7 +4,8 @@ test -f /tmp/started || exit > >> > >> make_config() { > >> # remove old config > >> ->/etc/config/tunneldigger > >> +>/tmp/tunneldigger > >> + > >> rm /tmp/fastd_${project}_peers/* > >> count=0 > >> # get fastd peers > >> @@ -23,13 +24,13 @@ for file in $filecounts; do > >> L2PORT=$((FDPORT + 10000)) > >> UUID=$hostname > >> > >> - uci set tunneldigger.$count=broker > >> - uci set tunneldigger.$count.address="$IP:$L2PORT" > >> - uci set tunneldigger.$count.uuid="$UUID" > >> - uci set tunneldigger.$count.interface="l2tp$count" > >> - uci set tunneldigger.$count.enabled="1" > >> - uci set tunneldigger.$count.hook_script='/etc/tunneldigger/tunneldigger.hook' > >> - uci commit tunneldigger > >> + uci -c /tmp set tunneldigger.$count=broker > >> + uci -c /tmp set tunneldigger.$count.address="$IP:$L2PORT" > >> + uci -c /tmp set tunneldigger.$count.uuid="$UUID" > >> + uci -c /tmp set tunneldigger.$count.interface="l2tp$count" > >> + uci -c /tmp set tunneldigger.$count.enabled="1" > >> + uci -c /tmp set tunneldigger.$count.hook_script='/etc/tunneldigger/tunneldigger.hook' > >> + uci -c /tmp commit tunneldigger > >> count=$((count + 1)) > >> # remove this fastd-peer > >> rm /etc/fastd/${project}/peers/$file > >> @@ -67,14 +68,18 @@ if ping -w5 -c3 "$test_ipv4_host1" &>/dev/null || > >> uci commit fastd > >> fi > >> make_config > >> - /etc/init.d/fastd start > >> + # start fastd if there are some peers left > >> + [ "$(ls /etc/fastd/${project}/peers/* 2>/dev/null)" ] && /etc/init.d/fastd start > > Ah prima. Das ist allerdings mehr als du im Commit-Log erwähnst. ;) > :) Hat sich ja an der Funktion nix geändert, nur dass /etc/init.d/fastd > start nicht angezogen wird, wenn es keine Peers gibt. Ergebnis ist das > gleiche wie vorher. Hmm, oder startet fastd auch ohne peers? Ich sag ja: Prima. Eine Anmerkung, im Kommentar wäre aber trotzdem schön. :) > > > >> + # check if new tunneldigger conf is different > >> + [ -n "$(cat /etc/config/tunneldigger tunneldigger | sort | uniq -u)" ] && cp /tmp/tunneldigger /etc/config/tunneldigger > > Das versteh ich nicht. Jetzt würde er ja bei jedem Aufruf die Config > > kopieren, sofern die neue nicht leer ist. Wir schreiben dann also immer > > noch auf den Flash. > Hier wird nur kopiert, wenn die beiden Dateien untetschiedlich sind. > (diff für Arme) Arg, stimmt. > Mist! sehe gerade nen Pfadfehler. Muss natürlich: > > cat /etc/config/tunneldigger /tmp/tunneldigger > > > > > >> /etc/init.d/tunneldigger start > >> else > >> - # check if new tunneldigger conf is different > >> - sumold=$(sha256sum /etc/config/tunneldigger) > >> make_config > >> - sumnew=$(sha256sum /etc/config/tunneldigger) > >> - [ "$sumnew" != "$sumold" ] && /etc/init.d/tunneldigger restart > >> + # check if new tunneldigger conf is different > >> + if [ -n "$(cat /etc/config/tunneldigger tunneldigger | sort | uniq -u)" ] ; then > >> + cp /tmp/tunneldigger /etc/config/tunneldigger > > Hier auch.. > > > > Was spricht dagegen einfach ein symlink von /etc/config/tunneldigger > > -> /tmp/tunneldigger zu legen? Dann würde der Symlink einmalig angelegt > > werden (oder ist im Image ggfs schon drin). Der Rest liegt dann immer im > > RAM. > Genau das war meine erste Idee, wäre ja mit nem Einzeiler erledigt. Aber > uci kann nicht mit Links in /etc/config umgehen (warum???) Das weiß ich leider nicht, wäre aber spannend das mal rauszufinden. > Ich wollte aber schon gerne die Werte mit uci set schreiben und später > eventuell auch mal lesen. Darum der Umweg mit der config in/tmp. Hm, ja. Irgendwie scheint uci kein passendes Tool für dynamische configs zu sein. Wobei.. Hm.. Gibt es dafür nicht irgendein Mechanismus? Muss man das wirklich auf den Flash schreiben? Wenn man uci commit weg lässt, würde das doch ggfs das Verhalten erzeugen, oder? Tim > Schön wäre auch "uci changes tunneldigger" gewesen, hab es aber nicht > hin bekommen, fest zu stellen, wenn ein peer weg fällt. > > Robert > > > > Tim > > > >> + /etc/init.d/tunneldigger restart > >> + fi > >> /etc/init.d/fastd reload > >> > >> # fastd start/stop for various situations > >> -- > >> 2.9.3 > >> > > > -- > franken-dev mailing list > franken-dev@freifunk.net > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
Hallo, nachdem ich mich nochmal dem uci gewidmet habe, gibt's jetzt eine einfache Lösung, die nicht ins Flash schreibt. uci commit funzt nicht mit symlinks. Hier hilft die Option -c <config file>. uci get usw. hat kein Problem damit. Robert Langhammer (2): Start fastd only if there are fastd peers left Do not write tunneldigger conf on flash .../fff/fff-tunneldigger/files/etc/uci-defaults/55_fff-tunneldigger | 3 ++- src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-)
> Hallo, > nachdem ich mich nochmal dem uci gewidmet habe, gibt's jetzt eine einfache > Lösung, die nicht ins Flash schreibt. > uci commit funzt nicht mit symlinks. Hier hilft die Option -c <config > file>. uci get usw. hat kein Problem damit. > > Robert Langhammer (2): > Start fastd only if there are fastd peers left > Do not write tunneldigger conf on flash > > .../fff/fff-tunneldigger/files/etc/uci-defaults/55_fff-tunneldigger | 3 > ++- > src/packages/fff/fff-vpn-select/files/usr/sbin/vpn-select | 5 > +++-- > 2 files changed, 5 insertions(+), 3 deletions(-) > Hi, Reviewed-by: Michael Fritscher <fff@mifritscher.de> (wenn ihrn Problem mit der Mailadresse habt dann nehmt von mir aus die Absenderadresse) Viele Grüße, Michael Fritscher
Fixes: 41 Signed-off-by: Robert Langhammer <rlanghammer@web.de> --- .../fff/fff-vpn-select/files/usr/sbin/vpn-select | 31 +++++++++++++--------- 1 file changed, 18 insertions(+), 13 deletions(-)