use Tempfile instead of folder; fix Reverse NS

Signed-off-by: Blackyfff <blackyfff@noreply.git.freifunk-franken.de>
This commit is contained in:
Blackyfff 2021-07-24 01:45:46 +02:00
parent 22d2eb0cda
commit 232ca12b48
1 changed files with 8 additions and 11 deletions

19
usr/lib/ffdns/update-rdnszone.sh Executable file → Normal file
View File

@ -10,10 +10,10 @@ ReverseDomain="$1"
ReverseZone="${ReverseDomain%*.}" ReverseZone="${ReverseDomain%*.}"
ForwardZones="$2" ForwardZones="$2"
ReverseZoneFile="$3" ReverseZoneFile="$3"
TempDir="/tmp/""$ReverseZone"
TTL="${4%% *}" TTL="${4%% *}"
ReReExMi="${4#* }" ReReExMi="${4#* }"
View="$5" View="$5"
TempFile="/tmp/""$ReverseZone"
GetIPEntries() { GetIPEntries() {
if [ -z "$RZoneIsIPv6" ]; then if [ -z "$RZoneIsIPv6" ]; then
@ -41,8 +41,6 @@ else
TraceErrAndExit "$ReverseDomain"" is no valid reverse domain" TraceErrAndExit "$ReverseDomain"" is no valid reverse domain"
fi fi
mkdir -p "$TempDir"
for ForwardZone in $ForwardZones; do for ForwardZone in $ForwardZones; do
ZoneFile="${ForwardZone#*/}" ZoneFile="${ForwardZone#*/}"
Serial="$(GetZoneFileSerial "$ZoneFile")" Serial="$(GetZoneFileSerial "$ZoneFile")"
@ -60,19 +58,19 @@ if [ $((NewReverseSerial)) -gt $((OldSerial)) ]; then
Static="${Static#*/}" Static="${Static#*/}"
[ -f "$Static" ] && echo "$(cat "$Static")" [ -f "$Static" ] && echo "$(cat "$Static")"
echo echo
} > "$TempDir/$ReverseZone" } > "$TempFile"
for ForwardZone in $ForwardZones; do for ForwardZone in $ForwardZones; do
ZoneName="${ForwardZone%%/*}" ZoneName="${ForwardZone%%/*}"
ZoneFile="${ForwardZone#*/}" ZoneFile="${ForwardZone#*/}"
ZoneRevNSSubnets="$(sed -ne 's/^\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Nn][Ss]\s\+\(\S\+\).*;\s*Subnets:\s*\([^;]*\)\s*\(;[^;]*\s*\)$/\2@\3/p' "$ZoneFile" | ZoneRevNSSubnets="$(sed -ne 's/^\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Nn][Ss]\s\+\(\S\+\).*;\s*Subnets:\s*\([^;]\+\)\s*\(;.*\)\?$/\2@\3/p' "$ZoneFile" | \
sed -e 's/\(.*[^\.]\)@/\1\.'"$ZoneName"'\.@/;s/@/ /;s/\s\+/@/g')" sed -e 's/\(.*[^\.]\)@/\1\.'"$ZoneName"'\.@/;s/@/ /;s/\s\+/@/g')"
for NSSubnets in $ZoneRevNSSubnets; do for NSSubnets in $ZoneRevNSSubnets; do
Subnets="$(echo "${NSSubnets#*@}" | sed -e 's/@/ /g')" Subnets="$(echo "${NSSubnets#*@}" | sed -e 's/@/ /g')"
for Subnet in $Subnets; do for Subnet in $Subnets; do
for ReverseNS in $(GetReverseDomains "$Subnet"); do for ReverseNS in $(GetReverseDomains "$Subnet"); do
if [ -n "$ReverseNS" ] && [ -z "${ReverseNS##*$ReverseDomain}" ]; then if [ -n "$ReverseNS" ] && [ -z "${ReverseNS##*$ReverseDomain}" ]; then
echo "$ReverseNS $TTL IN NS ${NSSubnets%%@*}" >> "$TempDir/$ReverseZone" echo "$ReverseNS $TTL IN NS ${NSSubnets%%@*}" >> "$TempFile"
fi fi
done done
done done
@ -85,13 +83,12 @@ if [ $((NewReverseSerial)) -gt $((OldSerial)) ]; then
IP="$(ReverseEntry "$IP")" IP="$(ReverseEntry "$IP")"
if [ -z "${IP##*$ReverseDomain}" ]; then if [ -z "${IP##*$ReverseDomain}" ]; then
Host="$(ExpandHostname "${IPEntry%%/*}" "$ZoneName"".")" Host="$(ExpandHostname "${IPEntry%%/*}" "$ZoneName"".")"
echo "$IP $TTL IN PTR $Host" >> "$TempDir/$ReverseZone" echo "$IP $TTL IN PTR $Host" >> "$TempFile"
fi fi
done done
done done
named-checkzone -o "$ReverseZoneFile" "$ReverseDomain" "$TempDir/$ReverseZone" >/dev/null named-checkzone -o "$ReverseZoneFile" "$ReverseDomain" "$TempFile" >/dev/null
ReloadZone "$ReverseDomain" "$View" ReloadZone "$ReverseDomain" "$View"
fi rm -r "$TempFile"
fi
rm -r "$TempDir"