3 #Author: Wolfgang Ebner
5 #Report Bugs here: https://github.com/dampfklon/acme.sh
8 # export ACMEDNS_BASE_URL="https://auth.acme-dns.io"
10 # You can optionally define an already existing account:
12 # export ACMEDNS_USERNAME="<username>"
13 # export ACMEDNS_PASSWORD="<password>"
14 # export ACMEDNS_SUBDOMAIN="<subdomain>"
16 ######## Public functions #####################
18 #Usage: dns_acmedns_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
19 # Used to add txt record
23 _info
"Using acme-dns"
24 _debug
"fulldomain $fulldomain"
25 _debug
"txtvalue $txtvalue"
27 #for compatiblity from account conf
28 ACMEDNS_USERNAME
="${ACMEDNS_USERNAME:-$(_readaccountconf_mutable ACMEDNS_USERNAME)}"
29 _clearaccountconf_mutable ACMEDNS_USERNAME
30 ACMEDNS_PASSWORD
="${ACMEDNS_PASSWORD:-$(_readaccountconf_mutable ACMEDNS_PASSWORD)}"
31 _clearaccountconf_mutable ACMEDNS_PASSWORD
32 ACMEDNS_SUBDOMAIN
="${ACMEDNS_SUBDOMAIN:-$(_readaccountconf_mutable ACMEDNS_SUBDOMAIN)}"
33 _clearaccountconf_mutable ACMEDNS_SUBDOMAIN
35 ACMEDNS_BASE_URL
="${ACMEDNS_BASE_URL:-$(_readdomainconf ACMEDNS_BASE_URL)}"
36 ACMEDNS_USERNAME
="${ACMEDNS_USERNAME:-$(_readdomainconf ACMEDNS_USERNAME)}"
37 ACMEDNS_PASSWORD
="${ACMEDNS_PASSWORD:-$(_readdomainconf ACMEDNS_PASSWORD)}"
38 ACMEDNS_SUBDOMAIN
="${ACMEDNS_SUBDOMAIN:-$(_readdomainconf ACMEDNS_SUBDOMAIN)}"
40 if [ "$ACMEDNS_BASE_URL" = "" ]; then
41 ACMEDNS_BASE_URL
="https://auth.acme-dns.io"
44 ACMEDNS_UPDATE_URL
="$ACMEDNS_BASE_URL/update"
45 ACMEDNS_REGISTER_URL
="$ACMEDNS_BASE_URL/register"
47 if [ -z "$ACMEDNS_USERNAME" ] ||
[ -z "$ACMEDNS_PASSWORD" ]; then
48 response
="$(_post "" "$ACMEDNS_REGISTER_URL" "" "POST
")"
49 _debug response
"$response"
50 ACMEDNS_USERNAME
=$
(echo "$response" |
sed -n 's/^{.*\"username\":[ ]*\"\([^\"]*\)\".*}/\1/p')
51 _debug
"received username: $ACMEDNS_USERNAME"
52 ACMEDNS_PASSWORD
=$
(echo "$response" |
sed -n 's/^{.*\"password\":[ ]*\"\([^\"]*\)\".*}/\1/p')
53 _debug
"received password: $ACMEDNS_PASSWORD"
54 ACMEDNS_SUBDOMAIN
=$
(echo "$response" |
sed -n 's/^{.*\"subdomain\":[ ]*\"\([^\"]*\)\".*}/\1/p')
55 _debug
"received subdomain: $ACMEDNS_SUBDOMAIN"
56 ACMEDNS_FULLDOMAIN
=$
(echo "$response" |
sed -n 's/^{.*\"fulldomain\":[ ]*\"\([^\"]*\)\".*}/\1/p')
57 _info
"##########################################################"
58 _info
"# Create $fulldomain CNAME $ACMEDNS_FULLDOMAIN DNS entry #"
59 _info
"##########################################################"
60 _info
"Press enter to continue... "
64 _savedomainconf ACMEDNS_BASE_URL
"$ACMEDNS_BASE_URL"
65 _savedomainconf ACMEDNS_USERNAME
"$ACMEDNS_USERNAME"
66 _savedomainconf ACMEDNS_PASSWORD
"$ACMEDNS_PASSWORD"
67 _savedomainconf ACMEDNS_SUBDOMAIN
"$ACMEDNS_SUBDOMAIN"
69 export _H1
="X-Api-User: $ACMEDNS_USERNAME"
70 export _H2
="X-Api-Key: $ACMEDNS_PASSWORD"
71 data
="{\"subdomain\":\"$ACMEDNS_SUBDOMAIN\", \"txt\": \"$txtvalue\"}"
74 response
="$(_post "$data" "$ACMEDNS_UPDATE_URL" "" "POST
")"
75 _debug response
"$response"
77 if ! echo "$response" |
grep "\"$txtvalue\"" >/dev
/null
; then
78 _err
"invalid response of acme-dns"
84 #Usage: fulldomain txtvalue
85 #Remove the txt record after validation.
89 _info
"Using acme-dns"
90 _debug
"fulldomain $fulldomain"
91 _debug
"txtvalue $txtvalue"
94 #################### Private functions below ##################################