You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
4.2 KiB
103 lines
4.2 KiB
#!/usr/bin/env sh
|
|
|
|
#This is a working API script to add a TXT record to the DNS Exit-managed DNS service.
|
|
# dns_myapi_add()
|
|
#Which will be called by acme.sh to add the txt record to th DNS Exit DNS service as part
|
|
of the SSL certificate provisioning request.
|
|
#returns 0 means success, otherwise error.
|
|
#
|
|
#Author: John Berlet
|
|
#Date: 31/01/2022
|
|
#Report Bugs here: https://github.com/acmesh-official/acme.sh/issues/3925
|
|
#
|
|
######## Public functions #####################
|
|
|
|
|
|
dns_japi_add() {
|
|
|
|
|
|
fulldomain=$1
|
|
txtvalue=$2
|
|
JAPIendpoint="https://api.dnsexit.com/dns/"
|
|
#_debug "Domain being used with custom script is: $domain"
|
|
fullchallengedomain="${JAPI_domain:-$(_readaccountconf_mutable JAPI_domain)}"
|
|
_debug "Full Challenge Domain is: $fullchallengedomain"
|
|
JAPI_apikey="${JAPI_apikey:-$(_readaccountconf_mutable JAPI_apikey)}"
|
|
#Set H1,H2 headers with DNS Exit API key
|
|
export _H1="Content-Type: application/json"
|
|
export _H2="apikey: $JAPI_apikey"
|
|
|
|
_debug "Defined apikey $JAPI_apikey"
|
|
if [ -z "$JAPI_apikey" ] || [ -z "$fullchallengedomain" ]; then
|
|
JAPI_apikey=""
|
|
_info "You didn't specify the api key or the full zone domain name"
|
|
_info "Please define --> 'export xxx' your api key and fully qualified zone and domain name"
|
|
_info "Example: 'export JAPI_apikey=<your DNS Exit api key>'"
|
|
_info "Cont: 'export JAPI_domain=<_acme-challenge.your domain name>'"
|
|
return 1
|
|
fi
|
|
#Save DNS Exit account API/domain challenge zone/domain name in account.conf for future renewals
|
|
_saveaccountconf_mutable JAPI_apikey "$JAPI_apikey"
|
|
_saveaccountconf_mutable JAPI_domain "$JAPI_domain"
|
|
|
|
|
|
_debug "First detect the root zone"
|
|
_debug "Calling DNS Exit DNS API..."
|
|
_info "Using JAPI"
|
|
_debug "Passed domain to function: $fulldomain"
|
|
_debug "Full Challenge domain: $fullchallengedomain"
|
|
_debug txtvalue "$txtvalue"
|
|
#_err "Not implemented!"
|
|
|
|
response="$(_post "{\"domain\":\"$domain\",\"update\": {\"type\":\"TXT\",\"name\":\"$fullchallengedomain\",\"content\":\"$txtvalue\",\"ttl\":0}}" $JAPIendpoint "" POST "application/json")"
|
|
if ! printf "%s" "$response" | grep \"code\":0>/dev/null; then
|
|
_err "There was an error updating the TXT record..."
|
|
_err "DNS Exit API response: $response"
|
|
_err "Please refer to this site for additional information related to this error code - https://dnsexit.com/dns/dns-api/"
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
#Usage: fulldomain txtvalue
|
|
#Remove the txt record after validation.
|
|
dns_japi_rm() {
|
|
fulldomain=$1
|
|
txtvalue=$2
|
|
JAPIendpoint="https://api.dnsexit.com/dns/"
|
|
#_debug "Domain being used with custom script is: $domain"
|
|
fullchallengedomain="${JAPI_domain:-$(_readaccountconf_mutable JAPI_domain)}"
|
|
_debug "Full Challenge Domain is: $fullchallengedomain"
|
|
JAPI_apikey="${JAPI_apikey:-$(_readaccountconf_mutable JAPI_apikey)}"
|
|
#Set H1,H2 headers with DNS Exit API key
|
|
export _H1="Content-Type: application/json"
|
|
export _H2="apikey: $JAPI_apikey"
|
|
|
|
_debug "Defined apikey $JAPI_apikey"
|
|
if [ -z "$JAPI_apikey" ] || [ -z "$fullchallengedomain" ]; then
|
|
JAPI_apikey=""
|
|
_info "You didn't specify the api key or the full zone domain name for the TXT record removal"
|
|
_info "Please define --> 'export xxx' your api key and fully qualified zone and domain name"
|
|
_info "Example: 'export JAPI_apikey=<your DNS Exit api key>'"
|
|
_info "Cont: 'export JAPI_domain=<_acme-challenge.your domain name>'"
|
|
return 1
|
|
fi
|
|
_debug "First detect the root zone"
|
|
_debug "Calling DNS Exit DNS API..."
|
|
_info "Using JAPI"
|
|
_debug "Passed domain to function: $fulldomain"
|
|
_debug "Full Challenge domain: $fullchallengedomain"
|
|
_debug txtvalue "$txtvalue"
|
|
#_err "Not implemented!"
|
|
|
|
response="$(_post "{\"domain\":\"$domain\",\"delete\": {\"type\":\"TXT\",\"name\":\"$fullchallengedomain\",\"content\":\"$txtvalue\",\"ttl\":0}}" $JAPIendpoint "" POST "application/json")"
|
|
if ! printf "%s" "$response" | grep \"code\":0>/dev/null; then
|
|
_err "There was an error deleting the TXT record..."
|
|
_err "DNS Exit API response: $response"
|
|
_err "Please refer to this site for additional information related to this error code - https://dnsexit.com/dns/dns-api/"
|
|
return 1
|
|
fi
|
|
return 0
|
|
|
|
_debug fulldomain "$fulldomain"
|
|
_debug txtvalue "$txtvalue"
|
|
}
|