63 lines
1.7 KiB
Bash
Executable File
63 lines
1.7 KiB
Bash
Executable File
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
|