Create update.sh
This commit is contained in:
parent
e71ca41f7a
commit
627b5df4ab
67
ddns/update.sh
Normal file
67
ddns/update.sh
Normal file
@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
|
||||
INTERVAL=60
|
||||
|
||||
dnsrecord="$DNS_RECORD"
|
||||
zone="$DNS_ZONE"
|
||||
|
||||
cloudflare_token="$CLOUDFLARE_API_TOKEN"
|
||||
|
||||
# get the zone id for the requested zone
|
||||
zoneid=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone&status=active" \
|
||||
-H "Authorization: Bearer $cloudflare_token" \
|
||||
-H "Content-Type: application/json" | jq -r '{"result"}[] | .[0] | .id')
|
||||
|
||||
if [ "$zoneid" == "null" ]; then
|
||||
echo "Zone not found, is your CloudFlare API key correct?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while true
|
||||
do
|
||||
|
||||
wan_ip4=`dig @resolver4.opendns.com A myip.opendns.com +short -4`
|
||||
wan_ip6=`dig @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6`
|
||||
|
||||
# update IPV4 record
|
||||
published_ip4=`dig $dnsrecord A +short`
|
||||
published_ip6=`dig $dnsrecord AAAA +short`
|
||||
|
||||
if [ "$published_ip4" != "$wan_ip4" ]; then
|
||||
echo "Updating $dnsrecord (zone $zoneid) A record from [$published_ip4] to [$wan_ip4]..."
|
||||
dnsrecordid=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records?type=A&name=$dnsrecord" \
|
||||
-H "Authorization: Bearer $cloudflare_token" \
|
||||
-H "Content-Type: application/json" | jq -r '{"result"}[] | .[0] | .id')
|
||||
if [ "$dnsrecordid" == "null" ]; then
|
||||
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records" \
|
||||
-H "Authorization: Bearer $cloudflare_token" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{\"type\":\"A\",\"name\":\"$dnsrecord\",\"content\":\"$wan_ip4\",\"ttl\":1,\"proxied\":false}" | jq
|
||||
else
|
||||
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/$dnsrecordid" \
|
||||
-H "Authorization: Bearer $cloudflare_token" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{\"type\":\"A\",\"name\":\"$dnsrecord\",\"content\":\"$wan_ip4\",\"ttl\":1,\"proxied\":false}" | jq
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$published_ip6" != "$wan_ip6" ]; then
|
||||
echo "Updating $dnsrecord (zone $zoneid) AAAA record from [$published_ip6] to [$wan_ip6]..."
|
||||
dnsrecordid=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records?type=AAAA&name=$dnsrecord" \
|
||||
-H "Authorization: Bearer $cloudflare_token" \
|
||||
-H "Content-Type: application/json" | jq -r '{"result"}[] | .[0] | .id')
|
||||
if [ "$dnsrecordid" == "null" ]; then
|
||||
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records" \
|
||||
-H "Authorization: Bearer $cloudflare_token" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{\"type\":\"AAAA\",\"name\":\"$dnsrecord\",\"content\":\"$wan_ip6\",\"ttl\":1,\"proxied\":false}" | jq
|
||||
else
|
||||
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/$dnsrecordid" \
|
||||
-H "Authorization: Bearer $cloudflare_token" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{\"type\":\"AAAA\",\"name\":\"$dnsrecord\",\"content\":\"$wan_ip6\",\"ttl\":1,\"proxied\":false}" | jq
|
||||
fi
|
||||
fi
|
||||
|
||||
sleep $INTERVAL
|
||||
done
|
Loading…
x
Reference in New Issue
Block a user