aboutsummaryrefslogtreecommitdiff
path: root/src/txtrec-del.sh
blob: 7ecf253780ebcdbd89226674249230fd1cc7c5fb (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
59
60
61
62
63
64
#!/bin/bash
ARR_HOOKS="
	aws
"

if [ $# -lt 2 ]; then
	echo "Usage: $0 <head rec> <hook> <zone id>
Hooks:" >&2
	for h in $ARR_HOOKS; do
		echo -e "\t$h"
	done

	exit 2
fi

HEAD_REC="$1"
HOOK="$2"
ZONE_ID="$3"

aws_param () {
	cat << EOF
{
	"Changes": [
		{
			"Action": "DELETE",
			"ResourceRecordSet": $1
		}
	]
}
EOF
}

hook_aws () {
	local tmpfile=`mktemp --tmpdir txtrec-del.XXXXXXXXXX`

	aws route53 list-resource-record-sets\
		--hosted-zone-id "$ZONE_ID" > "$tmpfile"
	local nb_rec=`jq ".ResourceRecordSets | length" "$tmpfile"`
	local escaped_name=$(echo "$HEAD_REC" | sed -e s/\\./\\\\./g)

	for (( i = 0; i < nb_rec; i += 1 )); do
		local rec=$(jq ".ResourceRecordSets[$i]" "$tmpfile")
		jq ".ResourceRecordSets[$i].Name" "$tmpfile" |
			egrep -i "\"([0-9a-f]+\.)?$escaped_name\.?\""
		if [ $? -eq 0 ]; then
			aws route53 change-resource-record-sets\
				--hosted-zone-id "$ZONE_ID"\
				--change-batch "$(aws_param "$rec")"
		fi
	done

	rm -f "$tmpfile"
}

"hook_$HOOK" "$HEAD_REC"

i=0
while true; do
	"hook_$HOOK" $i."$HEAD_REC"
	if [ $? -ne 0 ]; then
		break
	fi
	let i=i+1
done