From fc1de89b2bd92ab9293c5e8e2847e7755e913291 Mon Sep 17 00:00:00 2001 From: Christoph Date: Wed, 5 Nov 2025 22:10:19 +0100 Subject: [PATCH] bind_add_dkim_zone_master.sh: Support adding DKIM zone even if zone is not yet official responsible. --- bind_add_dkim_zone_master.sh | 85 +++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/bind_add_dkim_zone_master.sh b/bind_add_dkim_zone_master.sh index c761eab..f728bde 100755 --- a/bind_add_dkim_zone_master.sh +++ b/bind_add_dkim_zone_master.sh @@ -96,6 +96,12 @@ usage() { -k Name of the TSIG key used for dynamical updates. + -m + Main Domains Master DNS Server + + -s + Main Domains Slave DNS Server + -t allow-transfer for zone declaration. Possible values are ip-address(es) or existing 'acl' defininition(s). @@ -290,6 +296,10 @@ while getopts hk:qt: opt ; do ;; k) TSIG_KEY_NAME="$OPTARG" ;; + m) DNS_MASTER="$OPTARG" + ;; + s) DNS_SLAVE="$OPTARG" + ;; q) verbose=true ;; t) ALLOW_TRANSFER_OPTION="$OPTARG" @@ -430,42 +440,47 @@ fi # - Get DNS server # - echononl "Get responsible zone for domain '$dkim_domain'.." -found=true -zone="${dkim_domain}" -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 +if [[ -n "${DNS_MASTER}" ]] && [[ -n "${DNS_SLAVE}" ]] ; then + echo_skipped + dns_server_arr=("${DNS_MASTER}" "${DNS_SLAVE}") else - echo_failed - error "No responsible zone for '$dkim_domain' found!" - clean_up 16 + found=true + zone="${dkim_domain}" + 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