[PATCH] Write on flash only if tunneldigger conf has changed

Robert Langhammer rlanghammer at web.de
Do Apr 27 12:23:21 CEST 2017


Fixes: 41

Signed-off-by: Robert Langhammer <rlanghammer at 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
+        # 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
-- 
2.9.3



Mehr Informationen über die Mailingliste franken-dev