Files
digitalocean_dyndns/set_digitalocean_dns_a_record.bash
T
2024-08-08 17:12:48 -07:00

48 lines
1.5 KiB
Bash
Executable File

#! /bin/bash
SCRIPT="${BASH_SOURCE[0]}"
SCRIPT_DIR=${SCRIPT%/*}
DIGITALOCEAN_DOMAIN=$1
IP=$2
DIGITALOCEAN_TOKEN=`cat $SCRIPT_DIR/DO_TOKEN`
get_a_record_ids() {
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/domains/$DIGITALOCEAN_DOMAIN/records" 2> /dev/null | jq '.domain_records | map(select(.type == "A" and .name == "@")) | map(.id) | .[]'
}
add_a_record() {
echo adding new A record for $DIGITALOCEAN_DOMAIN with value : $IP
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d "{\"type\":\"A\" \
,\"name\":\"@\" \
,\"data\":\"$IP\" \
,\"priority\":null \
,\"port\":null \
,\"ttl\":1800 \
,\"weight\":null \
,\"flags\":null \
,\"tag\":null \
}" \
"https://api.digitalocean.com/v2/domains/$DIGITALOCEAN_DOMAIN/records" > /dev/null 2>&1
}
delete_record_by_id() {
echo deleting existing A record for $DIGITALOCEAN_DOMAIN
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/domains/$DIGITALOCEAN_DOMAIN/records/$1" > /dev/null 2>&1
}
for s in `get_a_record_ids`; do
delete_record_by_id $s
done
add_a_record