account different behavior of 'date' in owrt and debian; fix sync of dnssec values
Signed-off-by: Blackyfff <freifunk@freifunk-herpf.de>
This commit is contained in:
parent
cf587e87e6
commit
3831e98977
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# SPDX-License-Identifier: GPL-3.0
|
# SPDX-License-Identifier: GPL-3.0
|
||||||
#
|
#
|
||||||
# freifunk-franken dns-scipts (c) 2021 Blackyfff
|
# freifunk-franken dns-scipts (c) 2021-2022 Blackyfff
|
||||||
|
|
||||||
GetZoneFileSerial() {
|
GetZoneFileSerial() {
|
||||||
if [ -f "$1" ]; then
|
if [ -f "$1" ]; then
|
||||||
|
@ -204,17 +204,23 @@ GetOwnKeysForZone () {
|
||||||
Domain="$2"
|
Domain="$2"
|
||||||
if [ -n "$DNSSECKeyFolder" ];then
|
if [ -n "$DNSSECKeyFolder" ];then
|
||||||
for OwnKeyFile in "$DNSSECKeyFolder""K""$Domain"".+"*".key"; do
|
for OwnKeyFile in "$DNSSECKeyFolder""K""$Domain"".+"*".key"; do
|
||||||
Removed="$(sed -ne 's/^; Delete: \(\S\{12\}\).*/\1/p' "$OwnKeyFile")"
|
if ! [ "$OwnKeyFile" = "$DNSSECKeyFolder""K""$Domain"".+*.key" ]; then
|
||||||
if [ -n "$Removed" ]; then
|
Removed="$(sed -ne 's/^; Delete: \(\S\{12\}\).*/\1/p' "$OwnKeyFile")"
|
||||||
Removed="$(date -u -d "$Removed" '+%s')"
|
RemovedSeconds="$(date -u -d "$Removed" '+%s' 2>/dev/null)"
|
||||||
CurDate="$(date -u '+%s')"
|
if [ -z "$RemovedSeconds" ]; then
|
||||||
if [ $((CurDate - Removed)) -le 172800 ]; then
|
RemovedSeconds="$( echo "$Removed" | sed -ne 's/\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\).*/\1-\2-\3T\4:\5/p')"
|
||||||
Removed=""
|
RemovedSeconds="$(date -u -d "$RemovedSeconds" '+%s' 2>/dev/null)"
|
||||||
|
fi
|
||||||
|
if [ -n "$RemovedSeconds" ]; then
|
||||||
|
CurDate="$(date -u '+%s')"
|
||||||
|
if [ $((CurDate - RemovedSeconds)) -le 72000 ]; then
|
||||||
|
RemovedSeconds=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "$RemovedSeconds" ]; then
|
||||||
|
sed -ne '/^;/d;s/^'"$Domain"'\.\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Nn][Ss][Kk][Ee][Yy]\s\+\(.*\)$/_dnsseckeys\.'"$Domain"'\.\tIN TXT\t\"\2\"/p' "$OwnKeyFile" | \
|
||||||
|
NormalizeZoneFileFormatting
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
if [ -z "$Removed" ]; then
|
|
||||||
sed -ne '/^;/d;s/^'"$Domain"'\.\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Nn][Ss][Kk][Ee][Yy]\s\+\(.*\)$/_dnsseckeys\.'"$Domain"'\.\tIN TXT\t\"\2\"/p' "$OwnKeyFile" | \
|
|
||||||
NormalizeZoneFileFormatting
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
@ -225,9 +231,9 @@ UpdateDNSSECEntryCache () {
|
||||||
CachedZoneFile="$3"
|
CachedZoneFile="$3"
|
||||||
DNSSECKeyFolder="$4"
|
DNSSECKeyFolder="$4"
|
||||||
UpstreamIP="$5"
|
UpstreamIP="$5"
|
||||||
UpdateMaster=0
|
TempFolder="$6"
|
||||||
|
|
||||||
[ -z "$UpstreamIP" ] || UpstreamIP="-b ""$UpstreamIP"" "
|
[ -z "$UpstreamIP" ] || UpstreamIP="-b""$UpstreamIP"
|
||||||
|
|
||||||
Nameservers="$(GetAllZoneNameservers "$Domain" "$CachedZoneFile")"
|
Nameservers="$(GetAllZoneNameservers "$Domain" "$CachedZoneFile")"
|
||||||
|
|
||||||
|
@ -239,17 +245,24 @@ UpdateDNSSECEntryCache () {
|
||||||
if [ -n "$DNSSECKeyFolder" ]; then
|
if [ -n "$DNSSECKeyFolder" ]; then
|
||||||
for Nameserver in $Nameservers; do
|
for Nameserver in $Nameservers; do
|
||||||
if [ "$Nameserver" = "$DNSSCRIPT_SERVER_NAME" ]; then
|
if [ "$Nameserver" = "$DNSSCRIPT_SERVER_NAME" ]; then
|
||||||
DNSKEYS="$( GetOwnKeysForZone "$DNSSECKeyFolder" "$Domain" )"
|
{
|
||||||
|
GetOwnKeysForZone "$DNSSECKeyFolder" "$Domain" | sort
|
||||||
|
GetDSForZone "$DNSSECKeyFolder" "$Domain" "$TempFolder" | NormalizeZoneFileFormatting
|
||||||
|
} > "$ZoneTempFolder""Keys.""$Nameserver"
|
||||||
else
|
else
|
||||||
DNSKEYS="$(delv @"$Nameserver" "$UpstreamIP"_dnsseckeys."$Domain" TXT 2>/dev/null | \
|
{
|
||||||
|
delv @"$Nameserver" "$UpstreamIP" "_dnsseckeys.""$Domain" TXT 2>/dev/null | \
|
||||||
sed -ne '/^;/d;s/^.*\sIN\s\+TXT\s\+"\(.*\)"$/'"$Domain"'.\tIN DNSKEY\t\1/p' | \
|
sed -ne '/^;/d;s/^.*\sIN\s\+TXT\s\+"\(.*\)"$/'"$Domain"'.\tIN DNSKEY\t\1/p' | \
|
||||||
NormalizeZoneFileFormatting )"
|
NormalizeZoneFileFormatting | sort
|
||||||
|
delv @"$Nameserver" "$UpstreamIP" "_cdskey.""$Domain" TXT 2>/dev/null | \
|
||||||
|
sed -ne '/^;/d;s/^.*\sIN\s\+TXT\s\+"\(.*\)"$/'"$Domain"'.\tIN CDS\t\1/p' | \
|
||||||
|
NormalizeZoneFileFormatting | sort
|
||||||
|
} > "$ZoneTempFolder""Keys.""$Nameserver"
|
||||||
fi
|
fi
|
||||||
if [ -n "$DNSKEYS" ] && [ "$DNSKEYS" != "$(cat "$ZoneTempFolder""OldKeys.""$Nameserver" 2>/dev/null)" ]; then
|
if [ -n "$(cat "$ZoneTempFolder""Keys.""$Nameserver")" ] && ! cmp -s "$ZoneTempFolder""Keys.""$Nameserver" "$ZoneTempFolder""OldKeys.""$Nameserver"; then
|
||||||
echo "$DNSKEYS" > "$ZoneTempFolder""Keys.""$Nameserver"
|
echo "1"
|
||||||
UpdateMaster=1
|
|
||||||
elif [ -f "$ZoneTempFolder""OldKeys.""$Nameserver" ]; then
|
elif [ -f "$ZoneTempFolder""OldKeys.""$Nameserver" ]; then
|
||||||
mv "$ZoneTempFolder""OldKeys.""$Nameserver" "$ZoneTempFolder""Keys.""$Nameserver"
|
mv -f "$ZoneTempFolder""OldKeys.""$Nameserver" "$ZoneTempFolder""Keys.""$Nameserver"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
@ -257,23 +270,23 @@ UpdateDNSSECEntryCache () {
|
||||||
SEDDomain="$(SEDifyHostname "$Domain")"
|
SEDDomain="$(SEDifyHostname "$Domain")"
|
||||||
ChildServers="$( sed -ne '/^\s*\(@\|'"$SEDDomain"'\.\)\s/!s/^\s*\(\S\+\)\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Nn][Ss]\s\+\(\S\+\);\?.*$/\1#\3/p' "$CachedZoneFile" | \
|
ChildServers="$( sed -ne '/^\s*\(@\|'"$SEDDomain"'\.\)\s/!s/^\s*\(\S\+\)\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Nn][Ss]\s\+\(\S\+\);\?.*$/\1#\3/p' "$CachedZoneFile" | \
|
||||||
sed -e 's/\([^.]\)$/\1\.'"$Domain"'\./g;s/\.$//g;s/\([^.]\)#/\1\.'"$Domain"'\.#/g;s/\.#/#/g' )"
|
sed -e 's/\([^.]\)$/\1\.'"$Domain"'\./g;s/\.$//g;s/\([^.]\)#/\1\.'"$Domain"'\.#/g;s/\.#/#/g' )"
|
||||||
for ChildServer in $ChildServers; do
|
|
||||||
DNSKEYS="$(delv @"${ChildServer##*\#}" "$UpstreamIP""${ChildServer%%\#*}" CDS 2>/dev/null | \
|
|
||||||
sed -ne '/^;/d;s/^.*\sIN\s\+CDS\s\+\(.*\)$/'"${ChildServer%%\#*}"'.\tIN DS\t\1/p' | \
|
|
||||||
NormalizeZoneFileFormatting )"
|
|
||||||
|
|
||||||
if [ -n "$DNSKEYS" ]; then
|
for ChildServer in $ChildServers; do
|
||||||
DNSKEYS="$(echo "$DNSKEYS" | sed -e '/\sIN\s\+DS\s\+0\s\+0\s\+0\s\+0/d')"
|
{
|
||||||
if [ "$DNSKEYS" != "$(cat "$ZoneTempFolder""OldChildKeys.""$ChildServer" 2>/dev/null)" ]; then
|
delv @"${ChildServer##*\#}" "$UpstreamIP" "${ChildServer%%\#*}" CDS 2>/dev/null | \
|
||||||
[ -z "$DNSKEYS" ] || echo "$DNSKEYS" > "$ZoneTempFolder""ChildKeys.""$ChildServer"
|
sed -ne '/^;/d;s/^.*\sIN\s\+CDS\s\+\(.*\)$/'"${ChildServer%%\#*}"'.\tIN DS\t\1/p' | \
|
||||||
UpdateMaster=1
|
NormalizeZoneFileFormatting | sort
|
||||||
elif [ -n "$DNSKEYS" ]; then
|
} > "$ZoneTempFolder""ChildKeys.""$ChildServer"
|
||||||
mv "$ZoneTempFolder""OldChildKeys.""$ChildServer" "$ZoneTempFolder""ChildKeys.""$ChildServer"
|
|
||||||
elif [ -f "$ZoneTempFolder""OldKeys.""$Nameserver" ]; then
|
if [ -n "$(cat "$ZoneTempFolder""ChildKeys.""$ChildServer")" ]; then
|
||||||
UpdateMaster=1
|
sed -i -e '/\sIN\s\+DS\s\+0\s\+0\s\+0\s\+0/d' "$ZoneTempFolder""ChildKeys.""$ChildServer"
|
||||||
|
if ! cmp -s "$ZoneTempFolder""ChildKeys.""$ChildServer" "$ZoneTempFolder""OldChildKeys.""$ChildServer"; then
|
||||||
|
echo "1"
|
||||||
|
elif [ -z "$(cat "$ZoneTempFolder""ChildKeys.""$ChildServer")" ] && [ -f "$ZoneTempFolder""OldKeys.""$Nameserver" ]; then
|
||||||
|
echo "1"
|
||||||
fi
|
fi
|
||||||
elif [ -f "$ZoneTempFolder""OldChildKeys.""$Nameserver" ]; then
|
elif [ -f "$ZoneTempFolder""OldChildKeys.""$Nameserver" ]; then
|
||||||
mv "$ZoneTempFolder""OldChildKeys.""$ChildServer" "$ZoneTempFolder""ChildKeys.""$ChildServer"
|
mv -f "$ZoneTempFolder""OldChildKeys.""$ChildServer" "$ZoneTempFolder""ChildKeys.""$ChildServer"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -281,7 +294,6 @@ UpdateDNSSECEntryCache () {
|
||||||
[ "$KeyFile" = "$ZoneTempFolder""Old*" ] || \
|
[ "$KeyFile" = "$ZoneTempFolder""Old*" ] || \
|
||||||
rm -f "$KeyFile"
|
rm -f "$KeyFile"
|
||||||
done
|
done
|
||||||
echo "$UpdateMaster"
|
|
||||||
}
|
}
|
||||||
ReloadZone() {
|
ReloadZone() {
|
||||||
if [ -n "$2" ]; then
|
if [ -n "$2" ]; then
|
||||||
|
@ -304,6 +316,74 @@ ReloadZone() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UCharToFile () {
|
||||||
|
printf %b "\x$(printf %x "$1")" >> "$2"
|
||||||
|
}
|
||||||
|
|
||||||
|
GetDS () {
|
||||||
|
Owner="$(echo "$1" | sed -e 's/\./ /g')"
|
||||||
|
KeyTag="$2"
|
||||||
|
Protocol="$3"
|
||||||
|
Algo="$4"
|
||||||
|
KSK="$5"
|
||||||
|
TmpFolder="$6"
|
||||||
|
|
||||||
|
> "$TmpFolder""DSbin"
|
||||||
|
|
||||||
|
for SubString in $Owner; do
|
||||||
|
Length=${#SubString}
|
||||||
|
UCharToFile $((Length)) "$TmpFolder""DSbin"
|
||||||
|
echo -n "$SubString" >> "$TmpFolder""DSbin"
|
||||||
|
done
|
||||||
|
|
||||||
|
UCharToFile $((0)) "$TmpFolder""DSbin"
|
||||||
|
UCharToFile $((KeyTag / 256)) "$TmpFolder""DSbin"
|
||||||
|
UCharToFile $((KeyTag % 256)) "$TmpFolder""DSbin"
|
||||||
|
UCharToFile $((Protocol)) "$TmpFolder""DSbin"
|
||||||
|
UCharToFile $((Algo)) "$TmpFolder""DSbin"
|
||||||
|
|
||||||
|
echo "$KSK" | openssl base64 -d >> "$TmpFolder""DSbin"
|
||||||
|
|
||||||
|
sha256sum "$TmpFolder""DSbin" | sed -e 's/\s.*//g' | awk '{print toupper($0)}'
|
||||||
|
}
|
||||||
|
GetDSForZone () {
|
||||||
|
DNSSECKeyFolder="$1"
|
||||||
|
Domain="$2"
|
||||||
|
TmpFolder="$3"
|
||||||
|
if [ -n "$DNSSECKeyFolder" ];then
|
||||||
|
> "$TmpFolder""KSKRemoved"
|
||||||
|
> "$TmpFolder""KSK"
|
||||||
|
for OwnKeyFile in "$DNSSECKeyFolder""K""$Domain"".+"*".key"; do
|
||||||
|
if ! [ "$OwnKeyFile" = "$DNSSECKeyFolder""K""$Domain"".+*.key" ] && \
|
||||||
|
[ -n "$(sed -e '/^;/d;/^'"$Domain"'\.\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Nn][Ss][Kk][Ee][Yy]\s\+257/!d' "$OwnKeyFile")" ]; then
|
||||||
|
Removed="$(sed -ne 's/^; Delete: \(\S\{12\}\).*/\1/p' "$OwnKeyFile")"
|
||||||
|
RemovedSeconds="$(date -u -d "$Removed" '+%s' 2>/dev/null)"
|
||||||
|
if [ -z "$RemovedSeconds" ]; then
|
||||||
|
RemovedSeconds="$( echo "$Removed" | sed -ne 's/\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\).*/\1-\2-\3T\4:\5/p')"
|
||||||
|
RemovedSeconds="$(date -u -d "$RemovedSeconds" '+%s' 2>/dev/null)"
|
||||||
|
fi
|
||||||
|
Previous="$(cat "$TmpFolder""KSKRemoved")"
|
||||||
|
Previous="${Previous:-0}"
|
||||||
|
if [ $((RemovedSeconds)) -ge $((Previous)) ]; then
|
||||||
|
echo "$RemovedSeconds" > "$TmpFolder""KSKRemoved"
|
||||||
|
echo -n "$(echo "$OwnKeyFile" | sed -ne 's/^.\{'"$((${#DNSSECKeyFolder}+${#Domain}+2))"'\}+[^+]\++\(.*\)\.key/\1 /p')" > "$TmpFolder""KSK"
|
||||||
|
sed -ne '/^;/d;s/^'"$Domain"'\.\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Nn][Ss][Kk][Ee][Yy]\s\+\(.*\)$/\2/p' "$OwnKeyFile" >> "$TmpFolder""KSK"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
KSK="$(cat "$TmpFolder""KSK")"
|
||||||
|
if [ -n "$KSK" ]; then
|
||||||
|
KeyID="$(echo "$KSK" | sed -e 's/ .*//g')"
|
||||||
|
KeyTag="$(echo "$KSK" | sed -e 's/^[^ ]* //g;s/ .*//g')"
|
||||||
|
Protocol="$(echo "$KSK" | sed -e 's/^[^ ]* [^ ]* //g;s/ .*//g')"
|
||||||
|
Algo="$(echo "$KSK" | sed -e 's/^[^ ]* [^ ]* [^ ]* //g;s/ .*//g')"
|
||||||
|
KSK="$(echo "$KSK" | sed -e 's/^[^ ]* [^ ]* [^ ]* [^ ]* //g;s/ //g')"
|
||||||
|
echo -e "_cdskey.""$Domain"".\tIN TXT\t\"""$KeyID"" ""$Algo"" 2 ""$(GetDS "$Domain" "$KeyTag" "$Protocol" "$Algo" "$KSK" "$TmpFolder")""\""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
TraceErrAndExit() {
|
TraceErrAndExit() {
|
||||||
echo "$1" 1>&2
|
echo "$1" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# SPDX-License-Identifier: GPL-3.0
|
# SPDX-License-Identifier: GPL-3.0
|
||||||
#
|
#
|
||||||
# freifunk-franken dns-scipts (c) 2021 Blackyfff
|
# freifunk-franken dns-scipts (c) 2021-2022 Blackyfff
|
||||||
|
|
||||||
SetupCache() {
|
SetupCache() {
|
||||||
mkdir -p "$TempFolder""cache"
|
mkdir -p "$TempFolder""cache"
|
||||||
|
@ -43,8 +43,9 @@ UpdateMasterZone() {
|
||||||
if [ -n "$ServeMasterZone" ]; then
|
if [ -n "$ServeMasterZone" ]; then
|
||||||
ZoneTempFolder="$TempFolder""cache/""$MasterDomain""/"
|
ZoneTempFolder="$TempFolder""cache/""$MasterDomain""/"
|
||||||
|
|
||||||
UpdateMaster="$(UpdateDNSSECEntryCache "$MasterDomain" "$ZoneTempFolder" "$CachedMasterFile" "$DNSSECKeyFolder" "$InternalUpstreamIP")"
|
UpdateMaster="$(UpdateDNSSECEntryCache "$MasterDomain" "$ZoneTempFolder" "$CachedMasterFile" "$DNSSECKeyFolder" "$InternalUpstreamIP" "$TempFolder")"
|
||||||
if [ $((PostFetchMasterSerial)) -gt $((PreFetchMasterSerial)) ] || [ $UpdateMaster -ne 0 ] || [ ! -f "$MasterFile" ]; then
|
|
||||||
|
if [ $((PostFetchMasterSerial)) -gt $((PreFetchMasterSerial)) ] || [ -n "$UpdateMaster" ] || [ ! -f "$MasterFile" ]; then
|
||||||
cp -f "$CachedMasterFile" "$CachedMasterFile""I"
|
cp -f "$CachedMasterFile" "$CachedMasterFile""I"
|
||||||
for KeyFile in "$ZoneTempFolder"*; do
|
for KeyFile in "$ZoneTempFolder"*; do
|
||||||
[ "$KeyFile" = "$ZoneTempFolder""*" ] || \
|
[ "$KeyFile" = "$ZoneTempFolder""*" ] || \
|
||||||
|
@ -59,7 +60,7 @@ UpdateMasterZone() {
|
||||||
else
|
else
|
||||||
LocalMasterSerial=$((PostFetchMasterSerial))
|
LocalMasterSerial=$((PostFetchMasterSerial))
|
||||||
fi
|
fi
|
||||||
mv "$CachedMasterFile""I" "$MasterFile"
|
awk '/^$/ || !a[$0]++' "$CachedMasterFile""I" > "$MasterFile"
|
||||||
ReloadZone "$MasterDomain" "$InternalViews" "$ZoneFilesFolder"
|
ReloadZone "$MasterDomain" "$InternalViews" "$ZoneFilesFolder"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
@ -89,14 +90,18 @@ UpdateExternal() {
|
||||||
ExtDomainFile="$ZoneFilesFolder""db.""$FirstInternalView"".""$ExternDomain"
|
ExtDomainFile="$ZoneFilesFolder""db.""$FirstInternalView"".""$ExternDomain"
|
||||||
ZoneTempFolder="$TempFolder""cache/""$ExternDomain""/"
|
ZoneTempFolder="$TempFolder""cache/""$ExternDomain""/"
|
||||||
cp -f "$ExternalZoneFile" "$CachedZoneFile"
|
cp -f "$ExternalZoneFile" "$CachedZoneFile"
|
||||||
[ -z "$DNSSECKeyFolder" ] || sed -i -e '/^\s*_dnsseckeys\./d' "$CachedZoneFile"
|
if [ -n "$DNSSECKeyFolder" ]; then
|
||||||
|
sed -i -e '/^\s*_dnsseckeys\./d' "$CachedZoneFile"
|
||||||
|
sed -i -e '/^\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Nn][Ss][Kk][Ee][Yy]/d' "$CachedZoneFile"
|
||||||
|
fi
|
||||||
|
|
||||||
[ -n "$(sed -e '/^\s*\(@\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Nn][Ss]\)\s/!d' "$CachedZoneFile")" ] || \
|
[ -n "$(sed -e '/^\s*\(@\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Nn][Ss]\)\s/!d' "$CachedZoneFile")" ] || \
|
||||||
sed -i -e 's/^\s*\(@\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Ss][Oo][Aa]\)\s\+\S\+\s\+\S\+\s/\1 '"$DNSSCRIPT_SERVER_NAME"'. '"$DNSSCRIPT_CONTACT_EMAIL"' /g' "$CachedZoneFile"
|
sed -i -e 's/^\s*\(@\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Ss][Oo][Aa]\)\s\+\S\+\s\+\S\+\s/\1 '"$DNSSCRIPT_SERVER_NAME"'. '"$DNSSCRIPT_CONTACT_EMAIL"' /g' "$CachedZoneFile"
|
||||||
|
|
||||||
sed -i -e 's/^\s*'"$CommunityExternPrefix"'\s/@ /g;/^\s*\(@\|\S\+\.\)\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Ss]\s/d' "$CachedZoneFile"
|
sed -i -e 's/^\s*'"$CommunityExternPrefix"'\s/@ /g;/^\s*\(@\|\S\+\.\)\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Ss]\s/d' "$CachedZoneFile"
|
||||||
|
|
||||||
UpdateExternDomain="$(UpdateDNSSECEntryCache "$ExternDomain" "$ZoneTempFolder" "$CachedZoneFile" "$DNSSECKeyFolder" "$InternalUpstreamIP")"
|
UpdateExternDomain="$(UpdateDNSSECEntryCache "$ExternDomain" "$ZoneTempFolder" "$CachedZoneFile" "$DNSSECKeyFolder" "$InternalUpstreamIP" "$TempFolder")"
|
||||||
if [ $UpdateExternView -ne 0 ] || [ $UpdateExternDomain -ne 0 ]; then
|
if [ $UpdateExternView -ne 0 ] || [ -n "$UpdateExternDomain" ]; then
|
||||||
for KeyFile in "$ZoneTempFolder"*; do
|
for KeyFile in "$ZoneTempFolder"*; do
|
||||||
[ "$KeyFile" = "$ZoneTempFolder""*" ] || \
|
[ "$KeyFile" = "$ZoneTempFolder""*" ] || \
|
||||||
cat "$KeyFile" >> "$CachedZoneFile"
|
cat "$KeyFile" >> "$CachedZoneFile"
|
||||||
|
@ -108,7 +113,7 @@ UpdateExternal() {
|
||||||
sed -i -e 's/^\(\s*\)'"$SerialIntern"'\(\s*;\s*[Ss]erial.*\)$/\1'"$LocalExtDomainMasterSerial"'\2/g' "$CachedZoneFile"
|
sed -i -e 's/^\(\s*\)'"$SerialIntern"'\(\s*;\s*[Ss]erial.*\)$/\1'"$LocalExtDomainMasterSerial"'\2/g' "$CachedZoneFile"
|
||||||
sed -i -e 's/^\(\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Ss][Oo][Aa]\s\+\S\+\s\+\S\+\s\+\)'"$SerialIntern"'\(\s\+.*\)$/\1'"$LocalExtDomainMasterSerial"'\3/g' "$CachedZoneFile"
|
sed -i -e 's/^\(\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Ss][Oo][Aa]\s\+\S\+\s\+\S\+\s\+\)'"$SerialIntern"'\(\s\+.*\)$/\1'"$LocalExtDomainMasterSerial"'\3/g' "$CachedZoneFile"
|
||||||
fi
|
fi
|
||||||
mv "$CachedZoneFile" "$ExtDomainFile"
|
awk '/^$/ || !a[$0]++' "$CachedZoneFile" > "$ExtDomainFile"
|
||||||
ReloadZone "$ExternDomain" "$InternalViews" "$ZoneFilesFolder"
|
ReloadZone "$ExternDomain" "$InternalViews" "$ZoneFilesFolder"
|
||||||
ReloadZone "$ExternDomain" "$ExternalView" "$ZoneFilesFolder"
|
ReloadZone "$ExternDomain" "$ExternalView" "$ZoneFilesFolder"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
#
|
#
|
||||||
# freifunk-franken dns-scipts (c) 2016 mayosemmel
|
# freifunk-franken dns-scipts (c) 2016 mayosemmel
|
||||||
# (c) 2020-2021 Fabian Bläse
|
# (c) 2020-2021 Fabian Bläse
|
||||||
# (c) 2021 Blackyfff
|
# (c) 2021-2022 Blackyfff
|
||||||
|
|
||||||
# exit script when command fails
|
# exit script when command fails
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
export DNSSCRIPT_VERSION="0.9.2"
|
export DNSSCRIPT_VERSION="0.9.4"
|
||||||
|
|
||||||
. /etc/ffdns/community.conf
|
. /etc/ffdns/community.conf
|
||||||
. /etc/ffdns/local.conf
|
. /etc/ffdns/local.conf
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# SPDX-License-Identifier: GPL-3.0
|
# SPDX-License-Identifier: GPL-3.0
|
||||||
#
|
#
|
||||||
# freifunk-franken dns-scipts (c) 2021 Blackyfff
|
# freifunk-franken dns-scipts (c) 2021-2022 Blackyfff
|
||||||
|
|
||||||
|
|
||||||
. ./dns-functions.sh
|
. ./dns-functions.sh
|
||||||
|
@ -51,7 +51,7 @@ NewLeases="$(echo "$NewLeases" |
|
||||||
|
|
||||||
UpdateZone="$(UpdateDNSSECEntryCache "$Domain" "$ZoneTempFolder" "$HoodZoneFile")"
|
UpdateZone="$(UpdateDNSSECEntryCache "$Domain" "$ZoneTempFolder" "$HoodZoneFile")"
|
||||||
|
|
||||||
if [ "$NewLeases" != "$OldLeases" ] || [ $UpdateZone -ne 0 ]; then
|
if [ "$NewLeases" != "$OldLeases" ] || [ -n "$UpdateZone" ]; then
|
||||||
NewSerial="$(GetZoneFileSerial "$HoodZoneFile")"
|
NewSerial="$(GetZoneFileSerial "$HoodZoneFile")"
|
||||||
NewSerial=$((NewSerial+1))
|
NewSerial=$((NewSerial+1))
|
||||||
sed -i -e 's/^\(\s*\)\(\S\+\)\(\s*;\s*Serial.*\)/\1'"$NewSerial"'\3/g' "$HoodZoneFile"
|
sed -i -e 's/^\(\s*\)\(\S\+\)\(\s*;\s*Serial.*\)/\1'"$NewSerial"'\3/g' "$HoodZoneFile"
|
||||||
|
@ -65,4 +65,4 @@ if [ "$NewLeases" != "$OldLeases" ] || [ $UpdateZone -ne 0 ]; then
|
||||||
cat "$KeyFile" >> "$HoodZoneFile"
|
cat "$KeyFile" >> "$HoodZoneFile"
|
||||||
done
|
done
|
||||||
ReloadZone "$Domain" "$View" "$ZoneFilesFolder"
|
ReloadZone "$Domain" "$View" "$ZoneFilesFolder"
|
||||||
fi
|
fi
|
Loading…
Reference in New Issue