#!/usr/bin/env bash fulldomain="${1}" token="${2}" 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 "$token" ]]; then echo "DNS script requires challenge token as second parameter" exit 1 fi if [[ -z "$LINODE_KEY" ]]; then echo "LINODE_KEY variable not set" exit 1 fi domain_root=${fulldomain#*.} domain=${fulldomain%.$domain_root} txtname="_acme-challenge.$domain" # Get Domain ID response=$(curl --silent ${api_url}/domains \ -H "User-Agent: getssl/0.1" -H "Authorization: Bearer ${api_key}") domain_id=$(echo "$response" | jq ".data[] | select (.domain==\"$domain_root\") | .id") if [[ $domain_id == "" ]]; then echo "Failed to fetch DomainID" exit 1 fi # Create TXT record response=$(curl --silent -X POST ${api_url}/domains/${domain_id}/records \ -H "Content-Type: application/json" -H "User-Agent: getssl/0.1" -H "Authorization: Bearer ${api_key}" \ -d '{"type": "TXT", "name": "'${txtname}'", "target": "'$token'", "ttl_sec": 30}') errors=$(echo "$response" | jq ".errors[]?.reason") if [[ $errors != "" ]]; then echo "Something went wrong: $errors" exit 1 fi