]> git.proxmox.com Git - mirror_acme.sh.git/blob - dnsapi/dns_acmedns.sh
Merge pull request #4531 from NCDGHA/bugfix/issue_4530_fix_http_status_503
[mirror_acme.sh.git] / dnsapi / dns_acmedns.sh
1 #!/usr/bin/env sh
2 #
3 #Author: Wolfgang Ebner
4 #Author: Sven Neubuaer
5 #Report Bugs here: https://github.com/dampfklon/acme.sh
6 #
7 # Usage:
8 # export ACMEDNS_BASE_URL="https://auth.acme-dns.io"
9 #
10 # You can optionally define an already existing account:
11 #
12 # export ACMEDNS_USERNAME="<username>"
13 # export ACMEDNS_PASSWORD="<password>"
14 # export ACMEDNS_SUBDOMAIN="<subdomain>"
15 #
16 ######## Public functions #####################
17
18 #Usage: dns_acmedns_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
19 # Used to add txt record
20 dns_acmedns_add() {
21 fulldomain=$1
22 txtvalue=$2
23 _info "Using acme-dns"
24 _debug "fulldomain $fulldomain"
25 _debug "txtvalue $txtvalue"
26
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
34
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)}"
39
40 if [ "$ACMEDNS_BASE_URL" = "" ]; then
41 ACMEDNS_BASE_URL="https://auth.acme-dns.io"
42 fi
43
44 ACMEDNS_UPDATE_URL="$ACMEDNS_BASE_URL/update"
45 ACMEDNS_REGISTER_URL="$ACMEDNS_BASE_URL/register"
46
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... "
61 read -r _
62 fi
63
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"
68
69 export _H1="X-Api-User: $ACMEDNS_USERNAME"
70 export _H2="X-Api-Key: $ACMEDNS_PASSWORD"
71 data="{\"subdomain\":\"$ACMEDNS_SUBDOMAIN\", \"txt\": \"$txtvalue\"}"
72
73 _debug data "$data"
74 response="$(_post "$data" "$ACMEDNS_UPDATE_URL" "" "POST")"
75 _debug response "$response"
76
77 if ! echo "$response" | grep "\"$txtvalue\"" >/dev/null; then
78 _err "invalid response of acme-dns"
79 return 1
80 fi
81
82 }
83
84 #Usage: fulldomain txtvalue
85 #Remove the txt record after validation.
86 dns_acmedns_rm() {
87 fulldomain=$1
88 txtvalue=$2
89 _info "Using acme-dns"
90 _debug "fulldomain $fulldomain"
91 _debug "txtvalue $txtvalue"
92 }
93
94 #################### Private functions below ##################################