bind_add_dkim_zone_master.sh: Support adding DKIM zone even if zone is not yet official responsible.

This commit is contained in:
2025-11-05 22:10:19 +01:00
parent 27edc58ca6
commit fc1de89b2b

View File

@@ -96,6 +96,12 @@ usage() {
-k <tsig key name> -k <tsig key name>
Name of the TSIG key used for dynamical updates. Name of the TSIG key used for dynamical updates.
-m <dns_master>
Main Domains Master DNS Server
-s <dns_slave>
Main Domains Slave DNS Server
-t <allow-transfer options> -t <allow-transfer options>
allow-transfer for zone declaration. Possible values are ip-address(es) allow-transfer for zone declaration. Possible values are ip-address(es)
or existing 'acl' defininition(s). or existing 'acl' defininition(s).
@@ -290,6 +296,10 @@ while getopts hk:qt: opt ; do
;; ;;
k) TSIG_KEY_NAME="$OPTARG" k) TSIG_KEY_NAME="$OPTARG"
;; ;;
m) DNS_MASTER="$OPTARG"
;;
s) DNS_SLAVE="$OPTARG"
;;
q) verbose=true q) verbose=true
;; ;;
t) ALLOW_TRANSFER_OPTION="$OPTARG" t) ALLOW_TRANSFER_OPTION="$OPTARG"
@@ -430,42 +440,47 @@ fi
# - Get DNS server # - Get DNS server
# - # -
echononl "Get responsible zone for domain '$dkim_domain'.." echononl "Get responsible zone for domain '$dkim_domain'.."
found=true if [[ -n "${DNS_MASTER}" ]] && [[ -n "${DNS_SLAVE}" ]] ; then
zone="${dkim_domain}" echo_skipped
dns_servers="$(dig +short $zone NS 2>/dev/null)" dns_server_arr=("${DNS_MASTER}" "${DNS_SLAVE}")
while [[ -z "$dns_servers" ]] ; do
zone=${zone#*.}
if [[ ! $zone =~ \. ]]; then
found=false
break
fi
dns_servers="$(dig +short $zone NS 2>/dev/null)"
done
if $found ; then
echo_ok
info "Found responsible zone for '${dkim_domain}': \033[37m\033[1m${zone}\033[m"
echononl "Get nameservers for domain '${zone}'.."
declare -i _count=0
for _dns_server in $dns_servers ; do
if [[ $_count -eq 0 ]]; then
_tmp_dns_server="$_dns_server"
else
_tmp_dns_server="$_tmp_dns_server $_dns_server"
fi
dns_server_arr+=("$_dns_server")
if [[ ${#dns_server_arr[@]} -eq 0 ]]; then
echo_failed
error "Determin DNS servers for domain '$zone' failed!"
clean_up 17
else
echo_ok
info "Found nameservers \033[37m\033[1m${_tmp_dns_server}\033[m"
fi
done
else else
echo_failed found=true
error "No responsible zone for '$dkim_domain' found!" zone="${dkim_domain}"
clean_up 16 dns_servers="$(dig +short $zone NS 2>/dev/null)"
while [[ -z "$dns_servers" ]] ; do
zone=${zone#*.}
if [[ ! $zone =~ \. ]]; then
found=false
break
fi
dns_servers="$(dig +short $zone NS 2>/dev/null)"
done
if $found ; then
echo_ok
info "Found responsible zone for '${dkim_domain}': \033[37m\033[1m${zone}\033[m"
echononl "Get nameservers for domain '${zone}'.."
declare -i _count=0
for _dns_server in $dns_servers ; do
if [[ $_count -eq 0 ]]; then
_tmp_dns_server="$_dns_server"
else
_tmp_dns_server="$_tmp_dns_server $_dns_server"
fi
dns_server_arr+=("$_dns_server")
if [[ ${#dns_server_arr[@]} -eq 0 ]]; then
echo_failed
error "Determin DNS servers for domain '$zone' failed!"
clean_up 17
else
echo_ok
info "Found nameservers \033[37m\033[1m${_tmp_dns_server}\033[m"
fi
done
else
echo_failed
error "No responsible zone for '$dkim_domain' found!"
clean_up 16
fi
fi fi