Skip to content

Commit 0e93d2b

Browse files
authored
Merge pull request #6786 from alexandergott-afk/dev
Allow more than one DNS server for HA environments #6785
2 parents f68a758 + 83424e7 commit 0e93d2b

File tree

1 file changed

+52
-37
lines changed

1 file changed

+52
-37
lines changed

dnsapi/dns_nsupdate.sh

Lines changed: 52 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Docs: github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_nsupdate
66
Options:
77
NSUPDATE_SERVER Server hostname. Default: "localhost".
88
NSUPDATE_SERVER_PORT Server port. Default: "53".
9-
NSUPDATE_KEY File path to TSIG key. Default: ""
9+
NSUPDATE_KEY File path to TSIG key. Default: "". Optional.
1010
NSUPDATE_ZONE Domain zone to update. Optional.
1111
'
1212

@@ -34,42 +34,49 @@ dns_nsupdate_add() {
3434
[ -n "${NSUPDATE_KEY}" ] || NSUPDATE_KEY=""
3535
[ -n "${NSUPDATE_OPT}" ] || NSUPDATE_OPT=""
3636

37+
NSUPDATE_SERVER_LIST=$(printf "%s" "$NSUPDATE_SERVER" | tr ',' ' ')
38+
3739
_info "adding ${fulldomain}. 60 in txt \"${txtvalue}\""
3840
[ -n "$DEBUG" ] && [ "$DEBUG" -ge "$DEBUG_LEVEL_1" ] && nsdebug="-d"
3941
[ -n "$DEBUG" ] && [ "$DEBUG" -ge "$DEBUG_LEVEL_2" ] && nsdebug="-D"
40-
if [ -z "${NSUPDATE_ZONE}" ]; then
41-
#shellcheck disable=SC2086
42-
if [ -z "${NSUPDATE_KEY}" ]; then
43-
nsupdate $nsdebug $NSUPDATE_OPT <<EOF
44-
server ${NSUPDATE_SERVER} ${NSUPDATE_SERVER_PORT}
42+
43+
for NS_SERVER in $NSUPDATE_SERVER_LIST; do
44+
_info "Updating DNS server: $NS_SERVER"
45+
46+
if [ -z "${NSUPDATE_ZONE}" ]; then
47+
#shellcheck disable=SC2086
48+
if [ -z "${NSUPDATE_KEY}" ]; then
49+
nsupdate $nsdebug $NSUPDATE_OPT <<EOF
50+
server ${NS_SERVER} ${NSUPDATE_SERVER_PORT}
4551
update add ${fulldomain}. 60 in txt "${txtvalue}"
4652
send
4753
EOF
48-
else
49-
nsupdate -k "${NSUPDATE_KEY}" $nsdebug $NSUPDATE_OPT <<EOF
50-
server ${NSUPDATE_SERVER} ${NSUPDATE_SERVER_PORT}
54+
else
55+
nsupdate -k "${NSUPDATE_KEY}" $nsdebug $NSUPDATE_OPT <<EOF
56+
server ${NS_SERVER} ${NSUPDATE_SERVER_PORT}
5157
update add ${fulldomain}. 60 in txt "${txtvalue}"
5258
send
5359
EOF
54-
fi
55-
else
56-
#shellcheck disable=SC2086
57-
if [ -z "${NSUPDATE_KEY}" ]; then
58-
nsupdate $nsdebug $NSUPDATE_OPT <<EOF
59-
server ${NSUPDATE_SERVER} ${NSUPDATE_SERVER_PORT}
60+
fi
61+
else
62+
#shellcheck disable=SC2086
63+
if [ -z "${NSUPDATE_KEY}" ]; then
64+
nsupdate $nsdebug $NSUPDATE_OPT <<EOF
65+
server ${NS_SERVER} ${NSUPDATE_SERVER_PORT}
6066
zone ${NSUPDATE_ZONE}.
6167
update add ${fulldomain}. 60 in txt "${txtvalue}"
6268
send
6369
EOF
64-
else
65-
nsupdate -k "${NSUPDATE_KEY}" $nsdebug $NSUPDATE_OPT <<EOF
66-
server ${NSUPDATE_SERVER} ${NSUPDATE_SERVER_PORT}
70+
else
71+
nsupdate -k "${NSUPDATE_KEY}" $nsdebug $NSUPDATE_OPT <<EOF
72+
server ${NS_SERVER} ${NSUPDATE_SERVER_PORT}
6773
zone ${NSUPDATE_ZONE}.
6874
update add ${fulldomain}. 60 in txt "${txtvalue}"
6975
send
7076
EOF
77+
fi
7178
fi
72-
fi
79+
done
7380
if [ $? -ne 0 ]; then
7481
_err "error updating domain"
7582
return 1
@@ -91,42 +98,50 @@ dns_nsupdate_rm() {
9198
[ -n "${NSUPDATE_SERVER}" ] || NSUPDATE_SERVER="localhost"
9299
[ -n "${NSUPDATE_SERVER_PORT}" ] || NSUPDATE_SERVER_PORT=53
93100
[ -n "${NSUPDATE_KEY}" ] || NSUPDATE_KEY=""
101+
102+
NSUPDATE_SERVER_LIST=$(printf "%s" "$NSUPDATE_SERVER" | tr ',' ' ')
103+
94104
_info "removing ${fulldomain}. txt"
95105
[ -n "$DEBUG" ] && [ "$DEBUG" -ge "$DEBUG_LEVEL_1" ] && nsdebug="-d"
96106
[ -n "$DEBUG" ] && [ "$DEBUG" -ge "$DEBUG_LEVEL_2" ] && nsdebug="-D"
97-
if [ -z "${NSUPDATE_ZONE}" ]; then
98-
#shellcheck disable=SC2086
99-
if [ -z "${NSUPDATE_KEY}" ]; then
100-
nsupdate $nsdebug $NSUPDATE_OPT <<EOF
101-
server ${NSUPDATE_SERVER} ${NSUPDATE_SERVER_PORT}
107+
108+
for NS_SERVER in $NSUPDATE_SERVER_LIST; do
109+
_info "Updating DNS server: $NS_SERVER"
110+
111+
if [ -z "${NSUPDATE_ZONE}" ]; then
112+
#shellcheck disable=SC2086
113+
if [ -z "${NSUPDATE_KEY}" ]; then
114+
nsupdate $nsdebug $NSUPDATE_OPT <<EOF
115+
server ${NS_SERVER} ${NSUPDATE_SERVER_PORT}
102116
update delete ${fulldomain}. txt
103117
send
104118
EOF
105-
else
106-
nsupdate -k "${NSUPDATE_KEY}" $nsdebug $NSUPDATE_OPT <<EOF
107-
server ${NSUPDATE_SERVER} ${NSUPDATE_SERVER_PORT}
119+
else
120+
nsupdate -k "${NSUPDATE_KEY}" $nsdebug $NSUPDATE_OPT <<EOF
121+
server ${NS_SERVER} ${NSUPDATE_SERVER_PORT}
108122
update delete ${fulldomain}. txt
109123
send
110124
EOF
111-
fi
112-
else
113-
#shellcheck disable=SC2086
114-
if [ -z "${NSUPDATE_KEY}" ]; then
115-
nsupdate $nsdebug $NSUPDATE_OPT <<EOF
116-
server ${NSUPDATE_SERVER} ${NSUPDATE_SERVER_PORT}
125+
fi
126+
else
127+
#shellcheck disable=SC2086
128+
if [ -z "${NSUPDATE_KEY}" ]; then
129+
nsupdate $nsdebug $NSUPDATE_OPT <<EOF
130+
server ${NS_SERVER} ${NSUPDATE_SERVER_PORT}
117131
zone ${NSUPDATE_ZONE}.
118132
update delete ${fulldomain}. txt
119133
send
120134
EOF
121-
else
122-
nsupdate -k "${NSUPDATE_KEY}" $nsdebug $NSUPDATE_OPT <<EOF
123-
server ${NSUPDATE_SERVER} ${NSUPDATE_SERVER_PORT}
135+
else
136+
nsupdate -k "${NSUPDATE_KEY}" $nsdebug $NSUPDATE_OPT <<EOF
137+
server ${NS_SERVER} ${NSUPDATE_SERVER_PORT}
124138
zone ${NSUPDATE_ZONE}.
125139
update delete ${fulldomain}. txt
126140
send
127141
EOF
142+
fi
128143
fi
129-
fi
144+
done
130145
if [ $? -ne 0 ]; then
131146
_err "error updating domain"
132147
return 1

0 commit comments

Comments
 (0)