Refactoring; Fix: PTR for @-hostname; Fix: symbolic link loop
Signed-off-by: Blackyfff <freifunk@freifunk-herpf.de>
This commit is contained in:
parent
cb2175d1c1
commit
8df132a0bf
|
@ -118,7 +118,11 @@ GetReverseDomains() {
|
||||||
}
|
}
|
||||||
ExpandHostname() {
|
ExpandHostname() {
|
||||||
Hostname="$1"
|
Hostname="$1"
|
||||||
[ -n "${Hostname##*.}" ] && Hostname="$Hostname"".""$2"
|
if [ "$Hostname" = "@" ]; then
|
||||||
|
Hostname="$2"
|
||||||
|
else
|
||||||
|
[ -n "${Hostname##*.}" ] && Hostname="$Hostname"".""$2"
|
||||||
|
fi
|
||||||
echo "$Hostname"
|
echo "$Hostname"
|
||||||
}
|
}
|
||||||
SEDifyHostname() {
|
SEDifyHostname() {
|
||||||
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: GPL-3.0
|
||||||
|
#
|
||||||
|
# freifunk-franken dns-scipts (c) 2021 Blackyfff
|
||||||
|
|
||||||
|
SetupCache() {
|
||||||
|
mkdir -p "$TempFolder""cache"
|
||||||
|
|
||||||
|
for IView in $InternalViews; do
|
||||||
|
rm -f "$TempFolder""$IView"".conf"
|
||||||
|
done
|
||||||
|
rm -f "$TempFolder""$ExternalView"".conf"
|
||||||
|
}
|
||||||
|
GetMasterFile() {
|
||||||
|
curl -s -S -f "$RemoteLocation""db.""$MasterDomain" --output "$CachedMasterFile" && \
|
||||||
|
[ -f "$CachedMasterFile" ] && \
|
||||||
|
{
|
||||||
|
echo ""
|
||||||
|
echo "_dnsscript_version IN TXT ""$DNSSCRIPT_VERSION" | NormalizeZoneFileFormatting
|
||||||
|
} >> "$CachedMasterFile" || :
|
||||||
|
if [ ! -f "$CachedMasterFile" ]; then
|
||||||
|
cp "$ZoneFilesFolder""db.""$FirstInternalView"".""$MasterDomain" "$CachedMasterFile"
|
||||||
|
sed -i -e '/^_dnsscript_version.*/,$d' "$CachedMasterFile"
|
||||||
|
echo "_dnsscript_version IN TXT ""$DNSSCRIPT_VERSION" | NormalizeZoneFileFormatting >> "$CachedMasterFile"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
DoServeMasterZone() {
|
||||||
|
[ -n "$SubCommunityDomain" ] || \
|
||||||
|
GetAllZoneNameservers "$MasterDomain" "$CachedMasterFile" | \
|
||||||
|
awk '{for(i=NF;i>0;--i) if($i=="'"$DNSSCRIPT_SERVER_NAME"'") {printf 1}}'
|
||||||
|
}
|
||||||
|
DoServeOnlyExternZone() {
|
||||||
|
if [ -n "$MasterExternDomain" ] && [ -z "$ServeMasterZone" ]; then
|
||||||
|
GetAllSubNameservers "$CommunityDomain" "$CommunityExternPrefix" "$CachedMasterFile" | \
|
||||||
|
awk '{for(i=NF;i>0;--i) if($i=="'"$DNSSCRIPT_SERVER_NAME"'") {printf 1}}'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
RemoveDNSSECKeysFromCacheFile() {
|
||||||
|
sed -i -e '/^\s*_dnsseckeys\./d' "$CachedMasterFile"
|
||||||
|
}
|
||||||
|
UpdateMasterZone() {
|
||||||
|
LocalMasterSerial=$((PostFetchMasterSerial))
|
||||||
|
if [ -n "$ServeMasterZone" ]; then
|
||||||
|
ZoneTempFolder="$TempFolder""cache/""$MasterDomain""/"
|
||||||
|
|
||||||
|
UpdateMaster="$(UpdateDNSSECEntryCache "$MasterDomain" "$ZoneTempFolder" "$CachedMasterFile" "$DNSSECKeyFolder")"
|
||||||
|
if [ $((PostFetchMasterSerial)) -gt $((PreFetchMasterSerial)) ] || [ $UpdateMaster -ne 0 ]; then
|
||||||
|
cp -f "$CachedMasterFile" "$CachedMasterFile""I"
|
||||||
|
for KeyFile in "$ZoneTempFolder"*; do
|
||||||
|
[ "$KeyFile" = "$ZoneTempFolder""*" ] || \
|
||||||
|
cat "$KeyFile" >> "$CachedMasterFile""I"
|
||||||
|
done
|
||||||
|
LocalMasterSerial="$(GetZoneFileSerial "$MasterFile")"
|
||||||
|
|
||||||
|
if [ $((PostFetchMasterSerial)) -le $((LocalMasterSerial)) ]; then
|
||||||
|
LocalMasterSerial=$((LocalMasterSerial+1))
|
||||||
|
sed -i -e 's/^\(\s*\)'"$PostFetchMasterSerial"'\(\s*;\s*[Ss]erial.*\)$/\1'"$LocalMasterSerial"'\3/g' "$CachedMasterFile""I"
|
||||||
|
sed -i -e 's/^\(\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Ss][Oo][Aa]\s\+\S\+\s\+\S\+\s\+\)'"$PostFetchMasterSerial"'\(\s\+.*\)$/\1'"$LocalMasterSerial"'\3/g' "$CachedMasterFile""I"
|
||||||
|
else
|
||||||
|
LocalMasterSerial=$((PostFetchMasterSerial))
|
||||||
|
fi
|
||||||
|
mv "$CachedMasterFile""I" "$MasterFile"
|
||||||
|
ReloadZone "$MasterDomain" "$InternalViews" "$ZoneFilesFolder"
|
||||||
|
|
||||||
|
fi
|
||||||
|
InsertZoneToViews "$InternalViews" "$ZoneFilesFolder" "$MasterDomain" "$MasterFile" "$TempFolder" "$DNSSECPolicy"
|
||||||
|
if [ -n "$ExternalView" ]; then
|
||||||
|
InsertZoneToIncludeFile "$MasterDomain" "$ExternFile" "$TempFolder""$ExternalView"".conf" "$DNSSECPolicy"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$LocalMasterSerial"
|
||||||
|
}
|
||||||
|
UpdateExternal() {
|
||||||
|
CachedZoneFile="$TempFolder""cache/db.""$InternalDomain""E"
|
||||||
|
|
||||||
|
UpdateExternView=0
|
||||||
|
if [ -n "$ExternalView" ] || [ -n "$ExternDomain" ]; then
|
||||||
|
SerialExtern="$(GetZoneFileSerial "$ExternalZoneFile")"
|
||||||
|
if [ $((SerialIntern)) -gt $((SerialExtern)) ]; then
|
||||||
|
sed -e '/^[^;]*\s\(10\.\|[fF][cdCD][0-9a-fA-F]\{2\}:\)\S*\s*\(;.*\)\?$/d;s/^[^;^@]*\s\+\([^;]*\)\s[Ii][Nn]\s\+[Ss][Oo][Aa]\s/@ \1 IN SOA /g' "$InternalZoneFile" \
|
||||||
|
> "$ExternalZoneFile"
|
||||||
|
UpdateExternView=1
|
||||||
|
ReloadZone "$InternalDomain" "$ExternalView" "$ZoneFilesFolder"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$ExternDomain" ]; then
|
||||||
|
ExtDomainFile="$ZoneFilesFolder""db.""$FirstInternalView"".""$ExternDomain"
|
||||||
|
ZoneTempFolder="$TempFolder""cache/""$ExternDomain""/"
|
||||||
|
cp -f "$ExternalZoneFile" "$CachedZoneFile"
|
||||||
|
[ -z "$DNSSECKeyFolder" ] || sed -i -e '/^\s*_dnsseckeys\./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*'"$CommunityExternPrefix"'\s/@ /g;/^\s*\(@\|\S\+\.\)\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Ss]\s/d' "$CachedZoneFile"
|
||||||
|
|
||||||
|
UpdateExternDomain="$(UpdateDNSSECEntryCache "$ExternDomain" "$ZoneTempFolder" "$CachedZoneFile" "$DNSSECKeyFolder")"
|
||||||
|
if [ $UpdateExternView -ne 0 ] || [ $UpdateExternDomain -ne 0 ]; then
|
||||||
|
for KeyFile in "$ZoneTempFolder"*; do
|
||||||
|
[ "$KeyFile" = "$ZoneTempFolder""*" ] || \
|
||||||
|
cat "$KeyFile" >> "$CachedZoneFile"
|
||||||
|
done
|
||||||
|
LocalExtDomainMasterSerial="$(GetZoneFileSerial "$ExtDomainFile")"
|
||||||
|
|
||||||
|
if [ $((SerialIntern)) -le $((LocalExtDomainMasterSerial)) ]; then
|
||||||
|
LocalExtDomainMasterSerial=$((LocalExtDomainMasterSerial+1))
|
||||||
|
sed -i -e 's/^\(\s*\)'"$SerialIntern"'\(\s*;\s*[Ss]erial.*\)$/\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
|
||||||
|
mv "$CachedZoneFile" "$ExtDomainFile"
|
||||||
|
ReloadZone "$ExternDomain" "$InternalViews" "$ZoneFilesFolder"
|
||||||
|
ReloadZone "$ExternDomain" "$ExternalView" "$ZoneFilesFolder"
|
||||||
|
fi
|
||||||
|
|
||||||
|
InsertZoneToViews "$InternalViews" "$ZoneFilesFolder" "$ExternDomain" "$ExtDomainFile" "$TempFolder" "$DNSSECPolicy"
|
||||||
|
InsertZoneToViews "$ExternalView" "$ZoneFilesFolder" "$ExternDomain" "$ExtDomainFile" "$TempFolder" "$DNSSECPolicy"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
UpdateReverseZones() {
|
||||||
|
for Subnet in $1; do
|
||||||
|
ReverseDomains="$(GetReverseDomains "$Subnet")"
|
||||||
|
for RDomain in $ReverseDomains; do
|
||||||
|
ReverseZoneFile="$(GetReverseZoneFileFromZone "${RDomain%*.}")"
|
||||||
|
if [ -n "$RemoteLocation" ]; then
|
||||||
|
! curl -s -f "$RemoteLocation""static.""$ReverseZoneFile" \
|
||||||
|
--output "$ZoneFilesFolder""static.""$ReverseZoneFile" && \
|
||||||
|
rm -f "$ZoneFilesFolder""static.""$ReverseZoneFile"
|
||||||
|
fi
|
||||||
|
./update-rdnszone.sh "$RDomain" "$2" "$ZoneFilesFolder""$ReverseZoneFile" "$TTLReReExMi" "$InternalViews"
|
||||||
|
for IView in $InternalViews; do
|
||||||
|
InsertZoneToIncludeFile "${RDomain%*.}" "$ZoneFilesFolder""$ReverseZoneFile" "$TempFolder""$IView"".conf"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
# exit script when command fails
|
# exit script when command fails
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
export DNSSCRIPT_VERSION="0.8.3"
|
export DNSSCRIPT_VERSION="0.8.4"
|
||||||
|
|
||||||
. /etc/ffdns/community.conf
|
. /etc/ffdns/community.conf
|
||||||
. /etc/ffdns/local.conf
|
. /etc/ffdns/local.conf
|
||||||
|
@ -19,6 +19,7 @@ export DNSSCRIPT_BIND_RELOAD_VER
|
||||||
|
|
||||||
cd /usr/lib/ffdns/
|
cd /usr/lib/ffdns/
|
||||||
. ./dns-functions.sh
|
. ./dns-functions.sh
|
||||||
|
. ./update-dns-functions.sh
|
||||||
|
|
||||||
MasterDomain="$CommunityDomain"
|
MasterDomain="$CommunityDomain"
|
||||||
[ -z "$SubCommunityDomain" ] || MasterDomain="$SubCommunityDomain"".""$MasterDomain"
|
[ -z "$SubCommunityDomain" ] || MasterDomain="$SubCommunityDomain"".""$MasterDomain"
|
||||||
|
@ -27,126 +28,40 @@ if [ -n "$CommunityExternPrefix" ];then
|
||||||
[ -z "$SubCommunityDomain" ] || MasterExternDomain="$SubCommunityDomain"".""$MasterExternDomain"
|
[ -z "$SubCommunityDomain" ] || MasterExternDomain="$SubCommunityDomain"".""$MasterExternDomain"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FirstInternal="$( echo "$InternalViews" | sed -ne 's/^\(\S\+\)\s.*$/\1/p')"
|
FirstInternalView="$( echo "$InternalViews" | sed -ne 's/^\(\S\+\)\s.*$/\1/p')"
|
||||||
# ForwardZones: "<Zone>/<Zonendatei>" ; optionaly multiple " ""<ZoneX>/<ZonendateiX>" no spaces in full filename
|
# ForwardZones: "<Zone>/<Zonendatei>" ; optionaly multiple " ""<ZoneX>/<ZonendateiX>" no spaces in full filename
|
||||||
ForwardZones="$MasterDomain""/""$ZoneFilesFolder""db.""$FirstInternal"".""$MasterDomain"
|
ForwardZones="$MasterDomain""/""$ZoneFilesFolder""db.""$FirstInternalView"".""$MasterDomain"
|
||||||
BindIcvpnAclTmp="$TempFolder""icvpn-acl.conf"
|
BindIcvpnAclTmp="$TempFolder""icvpn-acl.conf"
|
||||||
BindIcvpnAcl="$BindIncludeFileFolder""icvpn-acl.conf"
|
BindIcvpnAcl="$BindIncludeFileFolder""icvpn-acl.conf"
|
||||||
[ -n "$DNSSECPolicy" ] || DNSSECKeyFolder=""
|
[ -n "$DNSSECPolicy" ] || DNSSECKeyFolder=""
|
||||||
|
|
||||||
mkdir -p "$TempFolder""cache"
|
SetupCache
|
||||||
|
|
||||||
for IView in $InternalViews; do
|
|
||||||
rm -f "$TempFolder""$IView"".conf"
|
|
||||||
done
|
|
||||||
rm -f "$TempFolder""$ExternalView"".conf"
|
|
||||||
|
|
||||||
CachedMasterFile="$TempFolder""cache/db.""$MasterDomain"
|
CachedMasterFile="$TempFolder""cache/db.""$MasterDomain"
|
||||||
PreFetchMasterSerial="$(GetZoneFileSerial "$CachedMasterFile")"
|
PreFetchMasterSerial="$(GetZoneFileSerial "$CachedMasterFile")"
|
||||||
curl -s -S -f "$RemoteLocation""db.""$MasterDomain" --output "$CachedMasterFile" && \
|
GetMasterFile
|
||||||
[ -f "$CachedMasterFile" ] && \
|
|
||||||
{
|
|
||||||
echo ""
|
|
||||||
echo "_dnsscript_version IN TXT ""$DNSSCRIPT_VERSION" | NormalizeZoneFileFormatting
|
|
||||||
} >> "$CachedMasterFile" || :
|
|
||||||
PostFetchMasterSerial="$(GetZoneFileSerial "$CachedMasterFile")"
|
PostFetchMasterSerial="$(GetZoneFileSerial "$CachedMasterFile")"
|
||||||
[ -n "$SubCommunityDomain" ] || ServeMasterZone="$( GetAllZoneNameservers "$MasterDomain" "$CachedMasterFile" | awk '{for(i=NF;i>0;--i) if($i=="'"$DNSSCRIPT_SERVER_NAME"'") {printf 1}}')"
|
|
||||||
if [ -n "$MasterExternDomain" ]; then
|
ServeMasterZone="$(DoServeMasterZone)"
|
||||||
|
|
||||||
|
if [ -n "$ServeMasterZone" ] || [ -n "$(DoServeOnlyExternZone)" ]; then
|
||||||
|
RemoveDNSSECKeysFromCacheFile
|
||||||
|
|
||||||
if [ -n "$ServeMasterZone" ]; then
|
if [ -n "$ServeMasterZone" ]; then
|
||||||
ServeExtZone="1"
|
MasterFile="$ZoneFilesFolder""db.""$FirstInternalView"".""$MasterDomain"
|
||||||
|
cp -f "$CachedMasterFile" "$MasterFile"
|
||||||
|
FileForExternGeneration="$MasterFile"
|
||||||
else
|
else
|
||||||
ServeExtZone="$( GetAllSubNameservers "$CommunityDomain" "$CommunityExternPrefix" "$CachedMasterFile" | awk '{for(i=NF;i>0;--i) if($i=="'"$DNSSCRIPT_SERVER_NAME"'") {printf 1}}')"
|
FileForExternGeneration="$CachedMasterFile"
|
||||||
fi
|
|
||||||
else
|
|
||||||
ServeExtZone=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
UpdateExternal() {
|
|
||||||
CachedZoneFile="$TempFolder""cache/db.""$InternalDomain""E"
|
|
||||||
|
|
||||||
UpdateExternView=0
|
|
||||||
if [ -n "$ExternalView" ] || [ -n "$ExternDomain" ]; then
|
|
||||||
SerialExtern="$(GetZoneFileSerial "$ExternalZoneFile")"
|
|
||||||
if [ $((SerialIntern)) -gt $((SerialExtern)) ]; then
|
|
||||||
sed -e '/^[^;]*\s\(10\.\|[fF][cdCD][0-9a-fA-F]\{2\}:\)\S*\s*\(;.*\)\?$/d;s/^[^;^@]*\s\+\([^;]*\)\s[Ii][Nn]\s\+[Ss][Oo][Aa]\s/@ \1 IN SOA /g' "$InternalZoneFile" \
|
|
||||||
> "$ExternalZoneFile"
|
|
||||||
UpdateExternView=1
|
|
||||||
ReloadZone "$InternalDomain" "$ExternalView" "$ZoneFilesFolder"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$ExternDomain" ]; then
|
|
||||||
ExtDomainFile="$ZoneFilesFolder""db.""$FirstInternal"".""$ExternDomain"
|
|
||||||
ZoneTempFolder="$TempFolder""cache/""$ExternDomain""/"
|
|
||||||
cp -f "$ExternalZoneFile" "$CachedZoneFile"
|
|
||||||
[ -z "$DNSSECKeyFolder" ] || sed -i -e '/^\s*_dnsseckeys\./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*'"$CommunityExternPrefix"'\s/@ /g;/^\s*\(@\|\S\+\.\)\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Dd][Ss]\s/d' "$CachedZoneFile"
|
|
||||||
|
|
||||||
UpdateExternDomain="$(UpdateDNSSECEntryCache "$ExternDomain" "$ZoneTempFolder" "$CachedZoneFile" "$DNSSECKeyFolder")"
|
|
||||||
if [ $UpdateExternView -ne 0 ] || [ $UpdateExternDomain -ne 0 ]; then
|
|
||||||
for KeyFile in "$ZoneTempFolder"*; do
|
|
||||||
[ "$KeyFile" = "$ZoneTempFolder""*" ] || \
|
|
||||||
cat "$KeyFile" >> "$CachedZoneFile"
|
|
||||||
done
|
|
||||||
LocalExtDomainMasterSerial="$(GetZoneFileSerial "$ExtDomainFile")"
|
|
||||||
|
|
||||||
if [ $((SerialIntern)) -le $((LocalExtDomainMasterSerial)) ]; then
|
|
||||||
LocalExtDomainMasterSerial=$((LocalExtDomainMasterSerial+1))
|
|
||||||
sed -i -e 's/^\(\s*\)'"$SerialIntern"'\(\s*;\s*[Ss]erial.*\)$/\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
|
|
||||||
mv "$CachedZoneFile" "$ExtDomainFile"
|
|
||||||
ReloadZone "$ExternDomain" "$InternalViews" "$ZoneFilesFolder"
|
|
||||||
ReloadZone "$ExternDomain" "$ExternalView" "$ZoneFilesFolder"
|
|
||||||
fi
|
|
||||||
|
|
||||||
InsertZoneToViews "$InternalViews" "$ZoneFilesFolder" "$ExternDomain" "$ExtDomainFile" "$TempFolder" "$DNSSECPolicy"
|
|
||||||
InsertZoneToViews "$ExternalView" "$ZoneFilesFolder" "$ExternDomain" "$ExtDomainFile" "$TempFolder" "$DNSSECPolicy"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -n "$ServeMasterZone" ] || [ -n "$ServeExtZone" ]; then
|
|
||||||
sed -i -e '/^\s*_dnsseckeys\./d' "$CachedMasterFile"
|
|
||||||
FileForExternGeneration="$CachedMasterFile"
|
|
||||||
if [ -n "$ExternalView" ]; then
|
if [ -n "$ExternalView" ]; then
|
||||||
ExternFile="$ZoneFilesFolder""db.""$ExternalView"".""$MasterDomain"
|
ExternFile="$ZoneFilesFolder""db.""$ExternalView"".""$MasterDomain"
|
||||||
else
|
else
|
||||||
ExternFile="$ZoneFilesFolder""db.extern.""$MasterDomain"
|
ExternFile="$ZoneFilesFolder""db.extern.""$MasterDomain"
|
||||||
fi
|
fi
|
||||||
LocalMasterSerial=$((PostFetchMasterSerial))
|
|
||||||
if [ -n "$ServeMasterZone" ]; then
|
|
||||||
MasterFile="$ZoneFilesFolder""db.""$FirstInternal"".""$MasterDomain"
|
|
||||||
FileForExternGeneration="$MasterFile"
|
|
||||||
ZoneTempFolder="$TempFolder""cache/""$MasterDomain""/"
|
|
||||||
|
|
||||||
UpdateMaster="$(UpdateDNSSECEntryCache "$MasterDomain" "$ZoneTempFolder" "$CachedMasterFile" "$DNSSECKeyFolder")"
|
|
||||||
if [ $((PostFetchMasterSerial)) -gt $((PreFetchMasterSerial)) ] || [ $UpdateMaster -ne 0 ]; then
|
|
||||||
cp -f "$CachedMasterFile" "$CachedMasterFile""I"
|
|
||||||
for KeyFile in "$ZoneTempFolder"*; do
|
|
||||||
[ "$KeyFile" = "$ZoneTempFolder""*" ] || \
|
|
||||||
cat "$KeyFile" >> "$CachedMasterFile""I"
|
|
||||||
done
|
|
||||||
LocalMasterSerial="$(GetZoneFileSerial "$MasterFile")"
|
|
||||||
|
|
||||||
if [ $((PostFetchMasterSerial)) -le $((LocalMasterSerial)) ]; then
|
LocalMasterSerial="$(UpdateMasterZone)"
|
||||||
LocalMasterSerial=$((LocalMasterSerial+1))
|
|
||||||
sed -i -e 's/^\(\s*\)'"$PostFetchMasterSerial"'\(\s*;\s*[Ss]erial.*\)$/\1'"$LocalMasterSerial"'\3/g' "$CachedMasterFile""I"
|
|
||||||
sed -i -e 's/^\(\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Ss][Oo][Aa]\s\+\S\+\s\+\S\+\s\+\)'"$PostFetchMasterSerial"'\(\s\+.*\)$/\1'"$LocalMasterSerial"'\3/g' "$CachedMasterFile""I"
|
|
||||||
else
|
|
||||||
LocalMasterSerial=$((PostFetchMasterSerial))
|
|
||||||
fi
|
|
||||||
mv "$CachedMasterFile""I" "$MasterFile"
|
|
||||||
ReloadZone "$MasterDomain" "$InternalViews" "$ZoneFilesFolder"
|
|
||||||
|
|
||||||
fi
|
|
||||||
InsertZoneToViews "$InternalViews" "$ZoneFilesFolder" "$MasterDomain" "$MasterFile" "$TempFolder" "$DNSSECPolicy"
|
|
||||||
if [ -n "$ExternalView" ]; then
|
|
||||||
InsertZoneToIncludeFile "$MasterDomain" "$ExternFile" "$TempFolder""$ExternalView"".conf" "$DNSSECPolicy"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
InternalZoneFile="$FileForExternGeneration"
|
InternalZoneFile="$FileForExternGeneration"
|
||||||
ExternalZoneFile="$ExternFile"
|
ExternalZoneFile="$ExternFile"
|
||||||
|
@ -157,23 +72,11 @@ if [ -n "$ServeMasterZone" ] || [ -n "$ServeExtZone" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$MasterFile" ]; then
|
if [ -z "$MasterFile" ]; then
|
||||||
MasterFile="$ZoneFilesFolder""db.""$FirstInternal"".""$MasterDomain"
|
MasterFile="$ZoneFilesFolder""db.""$FirstInternalView"".""$MasterDomain"
|
||||||
cp -f "$CachedMasterFile" "$MasterFile"
|
cp -f "$CachedMasterFile" "$MasterFile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for Subnet in $CommunitySubnets; do
|
UpdateReverseZones "$CommunitySubnets" "$ForwardZones" "$RemoteLocation"
|
||||||
ReverseDomains="$(GetReverseDomains "$Subnet")"
|
|
||||||
for RDomain in $ReverseDomains; do
|
|
||||||
ReverseZoneFile="$(GetReverseZoneFileFromZone "${RDomain%*.}")"
|
|
||||||
! curl -s -f "$RemoteLocation""static.""$ReverseZoneFile" \
|
|
||||||
--output "$ZoneFilesFolder""static.""$ReverseZoneFile" && \
|
|
||||||
rm -f "$ZoneFilesFolder""static.""$ReverseZoneFile"
|
|
||||||
./update-rdnszone.sh "$RDomain" "$ForwardZones" "$ZoneFilesFolder""$ReverseZoneFile" "$TTLReReExMi" "$InternalViews"
|
|
||||||
for IView in $InternalViews; do
|
|
||||||
InsertZoneToIncludeFile "${RDomain%*.}" "$ZoneFilesFolder""$ReverseZoneFile" "$TempFolder""$IView"".conf"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
# set shorter TTL for Hoods
|
# set shorter TTL for Hoods
|
||||||
TTLReReExMi="420 360 180 1800 360"
|
TTLReReExMi="420 360 180 1800 360"
|
||||||
|
@ -183,7 +86,7 @@ DNSSECKeyFolder=""
|
||||||
for Hood in $Hoods; do
|
for Hood in $Hoods; do
|
||||||
HoodDomain="${Hood%%\#*}"".""$MasterDomain"
|
HoodDomain="${Hood%%\#*}"".""$MasterDomain"
|
||||||
Subnets="$(echo "${Hood#*\#}" | sed -e 's/#/ /g')"
|
Subnets="$(echo "${Hood#*\#}" | sed -e 's/#/ /g')"
|
||||||
HoodZoneFile="$ZoneFilesFolder""db.""$FirstInternal"".""$HoodDomain"
|
HoodZoneFile="$ZoneFilesFolder""db.""$FirstInternalView"".""$HoodDomain"
|
||||||
if [ ! -f "$HoodZoneFile" ]; then
|
if [ ! -f "$HoodZoneFile" ]; then
|
||||||
{
|
{
|
||||||
echo "\$TTL ${TTLReReExMi%% *}"
|
echo "\$TTL ${TTLReReExMi%% *}"
|
||||||
|
@ -194,7 +97,7 @@ for Hood in $Hoods; do
|
||||||
echo " ""$(echo "$TTLReReExMi" | awk '{print $4}')"" ; Expire"
|
echo " ""$(echo "$TTLReReExMi" | awk '{print $4}')"" ; Expire"
|
||||||
echo " ""$(echo "$TTLReReExMi" | awk '{print $5}')"" ) ; Negative Cache TTL"
|
echo " ""$(echo "$TTLReReExMi" | awk '{print $5}')"" ) ; Negative Cache TTL"
|
||||||
echo ";"
|
echo ";"
|
||||||
echo "@ IN NS $DNSSCRIPT_SERVER_NAME""."""
|
echo "@ IN NS ""$DNSSCRIPT_SERVER_NAME""."""
|
||||||
GetOwnGlueRecords "$MasterDomain" "$HoodDomain" "$MasterFile"
|
GetOwnGlueRecords "$MasterDomain" "$HoodDomain" "$MasterFile"
|
||||||
echo ";"
|
echo ";"
|
||||||
} > "$HoodZoneFile"
|
} > "$HoodZoneFile"
|
||||||
|
@ -205,16 +108,8 @@ for Hood in $Hoods; do
|
||||||
InsertZoneToViews "$InternalViews" "$ZoneFilesFolder" "$HoodDomain" "$HoodZoneFile" "$TempFolder" "$DNSSECPolicy"
|
InsertZoneToViews "$InternalViews" "$ZoneFilesFolder" "$HoodDomain" "$HoodZoneFile" "$TempFolder" "$DNSSECPolicy"
|
||||||
|
|
||||||
HoodForwardZones="$ForwardZones $HoodDomain""/""$HoodZoneFile"
|
HoodForwardZones="$ForwardZones $HoodDomain""/""$HoodZoneFile"
|
||||||
for Subnet in $Subnets; do
|
UpdateReverseZones "$Subnets" "$HoodForwardZones"
|
||||||
ReverseDomains="$(GetReverseDomains "$Subnet")"
|
|
||||||
for RDomain in $ReverseDomains; do
|
|
||||||
ReverseZoneFileFullPath="$ZoneFilesFolder""$(GetReverseZoneFileFromZone "${RDomain%*.}")"
|
|
||||||
./update-rdnszone.sh "$RDomain" "$HoodForwardZones" "$ReverseZoneFileFullPath" "$TTLReReExMi" "$InternalViews"
|
|
||||||
for IView in $InternalViews; do
|
|
||||||
InsertZoneToIncludeFile "${RDomain%*.}" "$ReverseZoneFileFullPath" "$TempFolder""$IView"".conf"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
done
|
|
||||||
if [ -n "$MasterExternDomain" ]; then
|
if [ -n "$MasterExternDomain" ]; then
|
||||||
HoodExternDomain="${Hood%%\#*}"".""$MasterExternDomain"
|
HoodExternDomain="${Hood%%\#*}"".""$MasterExternDomain"
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue