From 44b0c3f93fb4acc2d638caab34dcdc71a61802e8 Mon Sep 17 00:00:00 2001 From: srvrco Date: Tue, 31 Jan 2017 07:45:12 +0000 Subject: [PATCH] adding linode dns --- dns_scripts/dns_add_linode | 44 ++++++++++++++++++++++++++++++++++ dns_scripts/dns_del_linode | 49 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100755 dns_scripts/dns_add_linode create mode 100755 dns_scripts/dns_del_linode diff --git a/dns_scripts/dns_add_linode b/dns_scripts/dns_add_linode new file mode 100755 index 0000000..12e350a --- /dev/null +++ b/dns_scripts/dns_add_linode @@ -0,0 +1,44 @@ +#!/bin/bash + +fulldomain="${1}" +token="${2}" +api_url="https://api.linode.com/api/" +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=$(echo "$fulldomain" | awk -F\. '{print $(NF-1) FS $NF}') +domain=${fulldomain%.$domain_root} +txtname="_acme-challenge.$domain" + +# Get Domain ID +response=$(curl --silent -X POST "$api_url" \ + -H "Accept: application/json" -H "User-Agent: getssl/0.1" -H "application/x-www-form-urlencoded" \ + -d "api_key=${api_key}&api_action=domain.list" ) +domain_id=$(echo "$response" | egrep -o "{\"DOMAIN\":\"$domain_root\".*\"DOMAINID\":([0-9]+)" | egrep -o "[0-9]+$") +if [[ $domain_id == "" ]]; then + echo "Failed to fetch DomainID" + exit 1 +fi + +# Create TXT record +response=$(curl --silent -X POST "$api_url" \ + -H "Accept: application/json" -H "User-Agent: getssl/0.1" -H "application/x-www-form-urlencoded" \ + -d "api_key=$api_key&api_action=domain.resource.create&DomainID=$domain_id&Type=TXT&Name=$txtname&Target=$token" ) +errors=$(echo "$response" | egrep -o "\"ERRORARRAY\":\[.*\]") +if [[ $errors != "\"ERRORARRAY\":[]" ]]; then + echo "Something went wrong: $errors" + exit 1 +fi diff --git a/dns_scripts/dns_del_linode b/dns_scripts/dns_del_linode new file mode 100755 index 0000000..f50d0bc --- /dev/null +++ b/dns_scripts/dns_del_linode @@ -0,0 +1,49 @@ +#!/bin/bash + +fulldomain="${1}" +api_url="https://api.linode.com/api/" +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 + +domain_root=$(echo "$fulldomain" | awk -F\. '{print $(NF-1) FS $NF}') +domain=${fulldomain%.$domain_root} +txtname="_acme-challenge.$domain" + +# Get Domain ID +response=$(curl --silent -X POST "$api_url" \ + -H "Accept: application/json" -H "User-Agent: getssl/0.1" -H "application/x-www-form-urlencoded" \ + -d "api_key=${api_key}&api_action=domain.list" ) +domain_id=$(echo "$response" | egrep -o "{\"DOMAIN\":\"$domain_root\".*\"DOMAINID\":([0-9]+)" | egrep -o "[0-9]+$") +if [[ $domain_id == "" ]]; then + echo "Failed to fetch DomainID" + exit 1 +fi + +# Get Resource ID +response=$(curl --silent -X POST "$api_url" \ + -H "Accept: application/json" -H "User-Agent: getssl/0.1" -H "application/x-www-form-urlencoded" \ + -d "api_key=${api_key}&api_action=domain.resource.list&DomainID=$domain_id" ) +resource_id=$(echo "$response" | egrep -o "\"RESOURCEID\":[0-9]+,\"TYPE\":\"TXT\",\"NAME\":\"$txtname\"" | egrep -o "\"RESOURCEID\":[0-9]+" | egrep -o "[0-9]+$") +if [[ $resource_id == "" ]]; then + echo "Failed to fetch ResourceID" + exit 1 +fi + +# Delete TXT record +response=$(curl --silent -X POST "$api_url" \ + -H "Accept: application/json" -H "User-Agent: getssl/0.1" -H "application/x-www-form-urlencoded" \ + -d "api_key=$api_key&api_action=domain.resource.delete&DomainID=$domain_id&ResourceID=$resource_id" ) +errors=$(echo "$response" | egrep -o "\"ERRORARRAY\":\[.*\]") +if [[ $errors != "\"ERRORARRAY\":[]" ]]; then + echo "Something went wrong: $errors" + exit 1 +fi