summaryrefslogtreecommitdiff
path: root/update.sh
blob: ab023a731efc5a9b067bd72427fbcecc3aeba83b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env sh
set -e

# Not needed but useful to know
function aws_ip_check {

    aws route53 list-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID \
	--query "ResourceRecordSets[?(Name == 'senders.io.' && Type == 'A')].ResourceRecords[0].Value | [0]" --output text
}

if [ $# -ne 2 ]; then
    echo "Usage: ./update.sh HOSTED_ZONE_ID DOMAIN"
fi
HOSTED_ZONE_ID=$1
DOMAIN=$2
source API_CONFIG
RECORD_CHANGE_JSON=/tmp/aws-ip-update.json

# Fetch IPs

config_ip=$(dig +short $DOMAIN)
actual_ip=$(curl -s https://ipinfo.io/ip)

if [ "$config_ip" != "$actual_ip" ]; then
    echo "Updating IP from $config_id to $actual_ip for $DOMAIN"
    cat <<EOF > $RECORD_CHANGE_JSON
{
  "Changes": [
    "Action": "UPSERT",
    "ResourceRecordSet": {
      "Name": "$DOMAIN",
      "Type": "A",
      "TTL": 300,
      "ResourceRecords": [
        "Value": "$actual_ip"
      ]
    }
  ]
}
EOF
    aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID \
	--change-batch $RECORD_CHANGE_JSON
    
else
    echo "$DOMAIN is currently registered properly: $config_ip $actual_ip"
fi

exit 0