From 17d809f29926591eb6df3851efc03ddc7be49abf Mon Sep 17 00:00:00 2001 From: root <root@monitor01.freifunk-stuttgart.de> Date: Fri, 11 Dec 2020 22:18:53 +0100 Subject: [PATCH] Using DNSv4 as fallback, if DNSv6 is not working. Memory-File not longer neccessary, because DNS always gives an answer, even if node is not registered. --- .../files/etc/init.d/ffs-set-segment | 1 - .../files/usr/sbin/ffs-set-segment | 38 ++++++++++--------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/ffs-set-segment/files/etc/init.d/ffs-set-segment b/ffs-set-segment/files/etc/init.d/ffs-set-segment index 8197714..15dfcf0 100755 --- a/ffs-set-segment/files/etc/init.d/ffs-set-segment +++ b/ffs-set-segment/files/etc/init.d/ffs-set-segment @@ -8,7 +8,6 @@ start () { /etc/init.d/fastd restart fi - rm /tmp/.seg.ffs /etc/init.d/micrond enable /etc/init.d/micrond restart } diff --git a/ffs-set-segment/files/usr/sbin/ffs-set-segment b/ffs-set-segment/files/usr/sbin/ffs-set-segment index 7759bbf..3fe94ea 100755 --- a/ffs-set-segment/files/usr/sbin/ffs-set-segment +++ b/ffs-set-segment/files/usr/sbin/ffs-set-segment @@ -1,6 +1,4 @@ #!/bin/sh -SEGSET=/tmp/.seg.ffs - ME=$(basename $0) if [ $(ps | grep -c "$ME") -gt 4 ]; then logger -s -t $ME "started twice" @@ -24,20 +22,30 @@ fi NODEID=$(uci get network.bat0.macaddr | sed 's/://g') PUBKEY=$(/etc/init.d/fastd show_key mesh_vpn | cut -c1-12) -GITSEG=$(nslookup ffs-${NODEID}-${PUBKEY}.segassign.freifunk-stuttgart.de ::1#54 | grep "2001:2:0:711::" | cut -d':' -f7) +DNSDOM="freifunk-stuttgart.de" +DNSREQ="ffs-${NODEID}-${PUBKEY}.segassign.${DNSDOM}" + +logger -t $ME "DNSv6 on ${DNSREQ} ..." +GITSEG=$(nslookup ${DNSREQ} ::1#54 | grep "2001:2:0:711::" | cut -d':' -f7) if [ -z "$GITSEG" ]; then - if [ -f $SEGSET ]; then - GITSEG=$(cat $SEGSET) - logger -t $ME "Node is in Segment: $GITSEG" - else - logger -t $ME "Node not registered" - GITSEG=99 - fi + logger -t $ME "DNSv4 on ${DNSREQ} ..." + GITSEG=$(nslookup ${DNSREQ} ::1#54 | grep "198.18.190." | cut -d'.' -f4) +fi + +if [ -z "$GITSEG" ]; then + logger -t $ME "DNS not working!" + exit 1 else if [ -n "$BATSEG" ] && [ "$BATSEG" != "$GITSEG" ]; then - logger -t $ME "Avoiding Shortcut" + logger -t $ME "Avoiding Shortcut: $BATSEG - $GITSEG" GITSEG=99 + else + if [ "$GITSEG" = "99" ]; then + logger -t $ME "Node not registered" + else + logger -t $ME "Node is in Segment $GITSEG" + fi fi fi @@ -48,7 +56,7 @@ for i in `seq 1 10`; do GW=$(printf "gw%02d" $i) OLDPEER=$(uci get fastd.mesh_vpn_backbone_peer_${GW}.remote) - NEWPEER=$(printf "\"gw%02ds%02d.gw.freifunk-stuttgart.de\" port %d" $i $GITSEG $PORT) + NEWPEER=$(printf "\"gw%02ds%02d.gw.${DNSDOM}\" port %d" $i $GITSEG $PORT) if [ "$NEWPEER" != "$OLDPEER" ]; then uci set fastd.mesh_vpn_backbone_peer_${GW}.remote="$NEWPEER" @@ -57,12 +65,6 @@ do done if [ "$CHANGED" = "1" ]; then - if [ "$GITSEG" = "99" ]; then - rm $SEGSET - else - echo $GITSEG >$SEGSET - fi - /sbin/ifdown client /etc/init.d/fastd restart /sbin/ifup client -- GitLab