From 532f2abd1e91a3cdaabb3a0fc673ab4b31d28f39 Mon Sep 17 00:00:00 2001 From: Asif Bacchus Date: Wed, 12 Sep 2018 16:53:36 -0600 Subject: [PATCH] Check and update IP if necessary. --- cfddns.sh | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/cfddns.sh b/cfddns.sh index 75ac5b6..7318871 100755 --- a/cfddns.sh +++ b/cfddns.sh @@ -260,9 +260,28 @@ done ## Check whether new IP matches old IP and update if they do not match for recordIdx in "${!currentIP[@]}"; do if [ ${currentIP[recordIdx]} = $ipAddress ]; then - echo -e "\e[0;32m${dnsRecords[recordIdx]} is up-to-date." + echo -e "\e[0;32m${dnsRecords[recordIdx]} is up-to-date.\e[0m" else - echo -e "\e[0;31m${dnsRecords[recordIdx]} needs updating." + echo -e "\e[0;31m${dnsRecords[recordIdx]} needs updating...\e[0m" + if [ $ip4 -eq 1 ]; then + # update record at CloudFlare with new IP + update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/${cfDetails[2]}/dns_records/${recordID[recordIdx]}" -H "X-Auth-Email: ${cfDetails[0]}" -H "X-Auth-Key: ${cfDetails[1]}" -H "Content-Type: application/json" --data "{\"id\":\"${cfDetails[2]}\",\"type\":\"A\",\"proxied\":false,\"name\":\"${dnsRecords[recordIdx]}\",\"content\":\"$ipAddress\"}") + # check for success code from CloudFlare + if [[ $update == *"\"success\":true"* ]]; then + echo -e "\e[1;32m${dnsRecords[recordIdx]} updated.\e[0m]" + else + echo -e "\e[1;31m${dnsRecords[recordIdx]} update failed\e[0m" + fi + elif [ $ip6 -eq 1 ]; then + # update record at CloudFlare with new IP + update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/${cfDetails[2]}/dns_records/${recordID[recordIdx]}" -H "X-Auth-Email: ${cfDetails[0]}" -H "X-Auth-Key: ${cfDetails[1]}" -H "Content-Type: application/json" --data "{\"id\":\"${cfDetails[2]}\",\"type\":\"AAAA\",\"proxied\":false,\"name\":\"${dnsRecords[recordIdx]}\",\"content\":\"$ipAddress\"}") + # check for success code from CloudFlare + if [[ $update == *"\"success\":true"* ]]; then + echo -e "\e[1;32m${dnsRecords[recordIdx]} updated.\e[0m" + else + echo -e "\e[1;31m${dnsRecords[recordIdx]} update failed\e[0m" + fi + fi fi done