From e8873cc3288db36450eae7ae9ab4a7d4ab9158cc Mon Sep 17 00:00:00 2001 From: 9cco Date: Sun, 13 Feb 2022 17:11:22 +0100 Subject: [PATCH] Added dig as possible ip resolver Used shell built-in command -v to determine if dig is installed and if it is, use it as default for getting the ip-address. Also made the use of brackets consistent and updated the the way the data variable is created before it is sent with curl to make it more readable in the code. --- cloudflare-template.sh | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/cloudflare-template.sh b/cloudflare-template.sh index 60e6776..be35122 100644 --- a/cloudflare-template.sh +++ b/cloudflare-template.sh @@ -7,7 +7,7 @@ auth_key="" # Your API Token or Global AP zone_identifier="" # Can be found in the "Overview" tab of your domain record_name="" # Which record you want to be synced ttl="3600" # Set the DNS TTL (seconds) -proxy=false # Set the proxy to true or false +proxy="false" # Set the proxy to true or false slacksitename="" # Title of site "Example Site" slackchannel="" # Slack Channel #example slackuri="" # URI for Slack WebHook "https://hooks.slack.com/services/xxxxx" @@ -17,9 +17,15 @@ slackuri="" # URI for Slack WebHook "http ########################################### ## Check if we have a public IP ########################################### -ip=$(curl -s https://api.ipify.org || curl -s https://ipv4.icanhazip.com/) +command -v dig &> /dev/null +# Use the DNS lookup if dig is available. +if [[ $? -eq 0 ]]; then + ip=$(dig +short myip.opendns.com @resolver1.opendns.com); +else + ip=$(curl -s https://api.ipify.org || curl -s https://ipv4.icanhazip.com/) +fi -if [ "${ip}" == "" ]; then +if [[ "${ip}" == "" ]]; then logger -s "DDNS Updater: No public IP found" exit 1 fi @@ -27,7 +33,7 @@ fi ########################################### ## Check and set the proper auth header ########################################### -if [ "${auth_method}" == "global" ]; then +if [[ "${auth_method}" == "global" ]]; then auth_header="X-Auth-Key:" else auth_header="Authorization: Bearer" @@ -69,18 +75,28 @@ record_identifier=$(echo "$record" | sed -E 's/.*"id":"(\w+)".*/\1/') ########################################### ## Change the IP@Cloudflare using the API ########################################### +api_data=$(cat <