unix-config/.config/scripts/cron/dns.sh

63 lines
1.7 KiB
Bash

export AWS_PROFILE=default
DOMAIN="pfy.ch"
declare -a SUB_DOMAINS=("home" "git" "zip")
# Scripts
CURRENT_IP=`dig @resolver4.opendns.com myip.opendns.com +short`
HOSTED_ZONE_ID=$(
/usr/local/bin/aws route53 list-hosted-zones \
| /usr/local/bin/jq \
--arg domain "$DOMAIN." \
'.HostedZones
| map(select(.Name == $domain))
| .[] .Id' \
| sed 's/"//g'
)
for SUB_DOMAIN in "${SUB_DOMAINS[@]}"
do
RECORD_VALUE=$(
/usr/local/bin/aws route53 list-resource-record-sets \
--hosted-zone-id $HOSTED_ZONE_ID \
| /usr/local/bin/jq \
--arg fullDomain "$SUB_DOMAIN.$DOMAIN." \
'.ResourceRecordSets
| map(select(.Name == $fullDomain))
| .[] .ResourceRecords
| .[] .Value' \
| sed 's/"//g'
)
if test "$CURRENT_IP" != "$RECORD_VALUE"; then
CHANGE_REQUEST="
{
\"HostedZoneId\": \"$HOSTED_ZONE_ID\",
\"ChangeBatch\": {
\"Comment\": \"Dynamic DNS change\",
\"Changes\": [
{
\"Action\": \"UPSERT\",
\"ResourceRecordSet\": {
\"Name\": \"$SUB_DOMAIN.$DOMAIN\",
\"Type\": \"A\",
\"TTL\": 3600,
\"ResourceRecords\": [
{
\"Value\": \"$CURRENT_IP\"
}
]
}
}
]
}
}
"
/usr/local/bin/aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --cli-input-json "$CHANGE_REQUEST"
/Users/noahheague/.config/scripts/webhook.sh \
-c "dns" \
-m "$CURRENT_IP does not match $RECORD_VALUE on $SUB_DOMAIN.$DOMAIN"
fi
done