|
|
#!/usr/bin/env bash
|
|
|
# Need to add your API key below or set as env variable
|
|
|
apikey=${DYNU_API_KEY:-''}
|
|
|
|
|
|
# This script deletes the _acme-challenge TXT record from the dynu.com DNS entry for the domain
|
|
|
# usage dns_del_dynu "domain name"
|
|
|
# return codes are;
|
|
|
# 0 - success
|
|
|
# 1 - error in input
|
|
|
# 2 - error within internal processing
|
|
|
# 3 - error in result ( domain not found in dynu.com etc)
|
|
|
|
|
|
# After deleting the TXT record from Dynu.com it takes over 30 minutes to add a new TXT record!
|
|
|
# This doesn't happen when updating the TXT record, just for delete then add
|
|
|
# As this is used for testing, changed the delete to a no-op.
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
fulldomain="${1}"
|
|
|
|
|
|
API='https://api.dynu.com/v2/dns'
|
|
|
|
|
|
# Check initial parameters
|
|
|
if [[ -z "$fulldomain" ]]; then
|
|
|
echo "DNS script requires full domain name as first parameter"
|
|
|
exit 1
|
|
|
fi
|
|
|
if [[ -z "$apikey" ]]; then
|
|
|
echo "DNS script requires apikey environment variable to be set"
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
curl_params=( -H "accept: application/json" -H "API-Key: $apikey" -H 'Content-Type: application/json' )
|
|
|
|
|
|
# Get domain id
|
|
|
# curl -X GET https://api.dynu.com/v2/dns/getroot/ubuntu-getssl.freeddns.org
|
|
|
resp=$(curl --silent "${curl_params[@]}" -X GET "$API/getroot/${fulldomain}")
|
|
|
|
|
|
# Match domain id
|
|
|
re="\"id\":([^,]*),\"domainName\":\"${fulldomain}\""
|
|
|
if [[ "$resp" =~ $re ]]; then
|
|
|
domain_id="${BASH_REMATCH[1]}"
|
|
|
fi
|
|
|
|
|
|
if [[ -z "$domain_id" ]]; then
|
|
|
echo 'Domain name not found on your Dynu account'
|
|
|
exit 3
|
|
|
fi
|
|
|
|
|
|
# Check for existing _acme-challenge TXT record
|
|
|
# curl -X GET "https://api.dynu.com/v2/dns/record/_acme-challenge.ubuntu-getssl.freeddns.org?recordType=TXT"
|
|
|
resp=$(curl --silent "${curl_params[@]}" -X GET "${API}/record/_acme-challenge.${fulldomain}?recordType=TXT")
|
|
|
re="\"id\":([^,]*)"
|
|
|
if [[ "$resp" =~ $re ]]; then
|
|
|
record_id="${BASH_REMATCH[1]}"
|
|
|
fi
|
|
|
|
|
|
if [[ -z "$record_id" ]]; then
|
|
|
echo "No _acme-challenge.${fulldomain} TXT record found"
|
|
|
exit 0
|
|
|
fi
|
|
|
|
|
|
resp=$(curl --silent \
|
|
|
"${curl_params[@]}" \
|
|
|
-X DELETE "${API}/${domain_id}/record/${record_id}")
|
|
|
|
|
|
# If adding record failed (exception:) then print error message
|
|
|
if [[ "$resp" != *"\"statusCode\":200"* ]]; then
|
|
|
echo "Error: DNS challenge not added: unknown error - ${resp}"
|
|
|
exit 3
|
|
|
fi
|