summaryrefslogtreecommitdiff
path: root/update.sh
blob: 136eb60b85d308609edf0bcb69c64ceb1b098556 (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
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env bash
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 [ $# -lt 1 ]; then
    echo "Usage: ./update.sh HOSTED_ZONE_ID DOMAIN
       ./update.sh CONFIG_FILE
"
    exit 1
fi
if [ $# -eq 1 ]; then
    source $1
fi
if [ $# -eq 2 ]; then
    HOSTED_ZONE_ID=$1
    DOMAIN=$2
fi
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 "file://$RECORD_CHANGE_JSON"
    
else
    echo "$DOMAIN is currently registered properly: $config_ip $actual_ip"
fi

exit 0