| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- #!/usr/bin/env sh
 
- ########  Public functions #####################
 
- #Usage: dns_knot_add   _acme-challenge.www.domain.com   "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
 
- dns_knot_add() {
 
-   fulldomain=$1
 
-   txtvalue=$2
 
-   _checkKey || return 1
 
-   [ -n "${KNOT_SERVER}" ] || KNOT_SERVER="localhost"
 
-   # save the dns server and key to the account.conf file.
 
-   _saveaccountconf KNOT_SERVER "${KNOT_SERVER}"
 
-   _saveaccountconf KNOT_KEY "${KNOT_KEY}"
 
-   if ! _get_root "$fulldomain"; then
 
-     _err "Domain does not exist."
 
-     return 1
 
-   fi
 
-   _info "Adding ${fulldomain}. 60 TXT \"${txtvalue}\""
 
-   knsupdate <<EOF
 
- server ${KNOT_SERVER}
 
- key ${KNOT_KEY}
 
- zone ${_domain}.
 
- update add ${fulldomain}. 60 TXT "${txtvalue}"
 
- send
 
- quit
 
- EOF
 
-   if [ $? -ne 0 ]; then
 
-     _err "Error updating domain."
 
-     return 1
 
-   fi
 
-   _info "Domain TXT record successfully added."
 
-   return 0
 
- }
 
- #Usage: dns_knot_rm   _acme-challenge.www.domain.com
 
- dns_knot_rm() {
 
-   fulldomain=$1
 
-   _checkKey || return 1
 
-   [ -n "${KNOT_SERVER}" ] || KNOT_SERVER="localhost"
 
-   if ! _get_root "$fulldomain"; then
 
-     _err "Domain does not exist."
 
-     return 1
 
-   fi
 
-   _info "Removing ${fulldomain}. TXT"
 
-   knsupdate <<EOF
 
- server ${KNOT_SERVER}
 
- key ${KNOT_KEY}
 
- zone ${_domain}.
 
- update del ${fulldomain}. TXT
 
- send
 
- quit
 
- EOF
 
-   if [ $? -ne 0 ]; then
 
-     _err "error updating domain"
 
-     return 1
 
-   fi
 
-   _info "Domain TXT record successfully deleted."
 
-   return 0
 
- }
 
- ####################  Private functions below ##################################
 
- # _acme-challenge.www.domain.com
 
- # returns
 
- # _domain=domain.com
 
- _get_root() {
 
-   domain=$1
 
-   i="$(echo "$fulldomain" | tr '.' ' ' | wc -w)"
 
-   i=$(_math "$i" - 1)
 
-   while true; do
 
-     h=$(printf "%s" "$domain" | cut -d . -f "$i"-100)
 
-     if [ -z "$h" ]; then
 
-       return 1
 
-     fi
 
-     _domain="$h"
 
-     return 0
 
-   done
 
-   _debug "$domain not found"
 
-   return 1
 
- }
 
- _checkKey() {
 
-   if [ -z "${KNOT_KEY}" ]; then
 
-     _err "You must specify a TSIG key to authenticate the request."
 
-     return 1
 
-   fi
 
- }
 
 
  |