Browse Source
Merge pull request #2250 from mdbraber/add-acmeproxy-provider
Merge pull request #2250 from mdbraber/add-acmeproxy-provider
Add acmeproxy providerpull/2260/head
neil
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 86 additions and 0 deletions
@ -0,0 +1,86 @@ |
|||
#!/usr/bin/env sh |
|||
|
|||
## Acmeproxy DNS provider to be used with acmeproxy (http://github.com/mdbraber/acmeproxy) |
|||
## API integration by Maarten den Braber |
|||
## |
|||
## Report any bugs via https://github.com/mdbraber/acme.sh |
|||
|
|||
dns_acmeproxy_add() { |
|||
fulldomain="${1}" |
|||
txtvalue="${2}" |
|||
action="present" |
|||
|
|||
_debug "Calling: _acmeproxy_request() '${fulldomain}' '${txtvalue}' '${action}'" |
|||
_acmeproxy_request "$fulldomain" "$txtvalue" "$action" |
|||
} |
|||
|
|||
dns_acmeproxy_rm() { |
|||
fulldomain="${1}" |
|||
txtvalue="${2}" |
|||
action="cleanup" |
|||
|
|||
_debug "Calling: _acmeproxy_request() '${fulldomain}' '${txtvalue}' '${action}'" |
|||
_acmeproxy_request "$fulldomain" "$txtvalue" "$action" |
|||
} |
|||
|
|||
_acmeproxy_request() { |
|||
|
|||
## Nothing to see here, just some housekeeping |
|||
fulldomain=$1 |
|||
txtvalue=$2 |
|||
action=$3 |
|||
|
|||
_info "Using acmeproxy" |
|||
_debug fulldomain "$fulldomain" |
|||
_debug txtvalue "$txtvalue" |
|||
|
|||
ACMEPROXY_ENDPOINT="${ACMEPROXY_ENDPOINT:-$(_readaccountconf_mutable ACMEPROXY_ENDPOINT)}" |
|||
ACMEPROXY_USERNAME="${ACMEPROXY_USERNAME:-$(_readaccountconf_mutable ACMEPROXY_USERNAME)}" |
|||
ACMEPROXY_PASSWORD="${ACMEPROXY_PASSWORD:-$(_readaccountconf_mutable ACMEPROXY_PASSWORD)}" |
|||
|
|||
## Check for the endpoint |
|||
if [ -z "$ACMEPROXY_ENDPOINT" ]; then |
|||
ACMEPROXY_ENDPOINT="" |
|||
_err "You didn't specify the endpoint" |
|||
_err "Please set them via 'export ACMEPROXY_ENDPOINT=https://ip:port' and try again." |
|||
return 1 |
|||
fi |
|||
|
|||
## Check for the credentials |
|||
if [ -z "$ACMEPROXY_USERNAME" ] || [ -z "$ACMEPROXY_PASSWORD" ]; then |
|||
ACMEPROXY_USERNAME="" |
|||
ACMEPROXY_PASSWORD="" |
|||
_err "You didn't set username and password" |
|||
_err "Please set them via 'export ACMEPROXY_USERNAME=...' and 'export ACMEPROXY_PASSWORD=...' and try again." |
|||
return 1 |
|||
fi |
|||
|
|||
## Save the credentials to the account file |
|||
_saveaccountconf_mutable ACMEPROXY_ENDPOINT "$ACMEPROXY_ENDPOINT" |
|||
_saveaccountconf_mutable ACMEPROXY_USERNAME "$ACMEPROXY_USERNAME" |
|||
_saveaccountconf_mutable ACMEPROXY_PASSWORD "$ACMEPROXY_PASSWORD" |
|||
|
|||
## Base64 encode the credentials |
|||
credentials=$(printf "%b" "$ACMEPROXY_USERNAME:$ACMEPROXY_PASSWORD" | _base64) |
|||
|
|||
## Construct the HTTP Authorization header |
|||
export _H1="Authorization: Basic $credentials" |
|||
export _H2="Accept: application/json" |
|||
export _H3="Content-Type: application/json" |
|||
|
|||
## Add the challenge record to the acmeproxy grid member |
|||
response="$(_post "{\"fqdn\": \"$fulldomain.\", \"value\": \"$txtvalue\"}" "$ACMEPROXY_ENDPOINT/$action" "" "POST")" |
|||
|
|||
## Let's see if we get something intelligible back from the unit |
|||
if echo "$response" | grep "\"$txtvalue\"" >/dev/null; then |
|||
_info "Successfully updated the txt record" |
|||
return 0 |
|||
else |
|||
_err "Error encountered during record addition" |
|||
_err "$response" |
|||
return 1 |
|||
fi |
|||
|
|||
} |
|||
|
|||
#################### Private functions below ################################## |
Write
Preview
Loading…
Cancel
Save
Reference in new issue