add nsupdate script for dns-01

This commit is contained in:
Philippe Kueck 2016-10-26 11:52:26 +02:00
parent 5d6fd8099f
commit 0fb206fe15
No known key found for this signature in database
GPG Key ID: E10E57D62DB57A3B
1 changed files with 94 additions and 0 deletions

94
dnsapi/dns_nsupdate.sh Executable file
View File

@ -0,0 +1,94 @@
#!/usr/bin/env bash
######## Public functions #####################
#Usage: dns_nsupdate_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
dns_nsupdate_add() {
fulldomain=$1
txtvalue=$2
_checkKeyFile || return 1
NSUPDATE_SERVER=${NSUPDATE_SERVER:-localhost}
# save the dns server and key to the account conf file.
_saveaccountconf NSUPDATE_SERVER "${NSUPDATE_SERVER}"
_saveaccountconf NSUPDATE_KEY "${NSUPDATE_KEY}"
tmp=$(mktemp --tmpdir acme_nsupdate.XXXXXX)
cat > ${tmp} <<EOF
server ${NSUPDATE_SERVER}
update add ${fulldomain}. 60 in txt "${txtvalue}"
send
EOF
_info "adding ${fulldomain}. 60 in txt \"${txtvalue}\""
nsupdate -k ${NSUPDATE_KEY} ${tmp}
if [ $? -ne 0 ]; then
_err "error updating domain, see ${tmp} for details"
return 1
fi
rm -f ${tmp}
return 0
}
#Usage: dns_nsupdate_rm _acme-challenge.www.domain.com
dns_nsupdate_rm() {
fulldomain=$1
_checkKeyFile || return 1
NSUPDATE_SERVER=${NSUPDATE_SERVER:-localhost}
tmp=$(mktemp --tmpdir acme_nsupdate.XXXXXX)
cat > ${tmp} <<EOF
server ${NSUPDATE_SERVER}
update delete ${fulldomain}. txt
send
EOF
_info "removing ${fulldomain}. txt"
nsupdate -k ${NSUPDATE_KEY} ${tmp}
if [ $? -ne 0 ]; then
_err "error updating domain, see ${tmp} for details"
return 1
fi
rm -f ${tmp}
return 0
}
#################### Private functions bellow ##################################
_checkKeyFile() {
if [ -z "${NSUPDATE_KEY}" ]; then
_err "you must specify a path to the nsupdate key file"
return 1
fi
if [ ! -r "${NSUPDATE_KEY}" ]; then
_err "key ${NSUPDATE_KEY} is unreadable"
return 1
fi
}
_info() {
if [ -z "$2" ] ; then
echo "[$(date)] $1"
else
echo "[$(date)] $1='$2'"
fi
}
_err() {
_info "$@" >&2
return 1
}
_debug() {
if [ -z "$DEBUG" ] ; then
return
fi
_err "$@"
return 0
}
_debug2() {
if [ "$DEBUG" ] && [ "$DEBUG" -ge "2" ] ; then
_debug "$@"
fi
return
}