#!/usr/bin/env bash fulldomain="${1}" api_url="https://api.linode.com/v4" api_key=${LINODE_KEY:-''} # Verify that required parameters are set if [[ -z "$fulldomain" ]]; then echo "DNS script requires full domain name as first parameter" exit 1 fi if [[ -z "$LINODE_KEY" ]]; then echo "LINODE_KEY variable not set" exit 1 fi # Get Domain List response=$(curl --silent ${api_url}/domains \ -H "User-Agent: getssl/0.1" -H "Authorization: Bearer ${api_key}") # Get Domain ID for longest match domain_root="$fulldomain" domain="" while [[ "$domain_root" == *.* ]] ; do domain_id=$(echo "$response" | jq ".data[]? | select (.domain==\"$domain_root\") | .id") if [[ "$domain_id" != "" ]] ; then break fi domain_root=${domain_root#*.} domain=${fulldomain%.$domain_root} done if [[ "$domain_id" == "" ]]; then echo "Failed to fetch DomainID" exit 1 fi txtname="_acme-challenge${domain:+.$domain}" # Get Resource ID response=$(curl --silent ${api_url}/domains/${domain_id}/records \ -H "User-Agent: getssl/0.1" -H "Authorization: Bearer ${api_key}") resource_id=$(echo "$response" | jq ".data[] | select (.name==\"$txtname\") | .id") if [[ "$resource_id" == "" ]]; then echo "Failed to fetch ResourceID" exit 1 fi # Delete TXT record response=$(curl --silent -X DELETE ${api_url}/domains/${domain_id}/records/${resource_id} \ -H "User-Agent: getssl/0.1" -H "Authorization: Bearer ${api_key}") errors=$(echo "$response" | jq ".errors[]?.reason") if [[ "$errors" != "" ]]; then echo "Something went wrong: $errors" exit 1 fi