summaryrefslogtreecommitdiff
path: root/etc/powerdns/add-zone
blob: d7f6a13f4d8cac99001f351283c91eccd2db20fb (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
#!/bin/sh

usage() { echo "Usage: $0 <database.sqlite3> <domain>" >&2; exit ${1:-1}; }

check_args()
{
	[ $# = 2 ] || usage 1
	database=$1
	domain=$2

	[ -f "$database" ] || exit 1
	[ -r "$database" ] || exit 2

	case "$domain" in
		-h|--help) exec 2>&1; usage 0 ;;
		*\'*) usage 1 ;;
		'') usage 1 ;;
		*.) usage 1 ;;
		*.*) ;;
		*) [ "$ALLOW_TLD_ZONE" ] || usage 1 ;;
	esac
}

add_zone()
{
	local database="$1" domain="$2" soa
	soa="$domain hostmaster.$domain 1 10800 3600 604800 3600"
	sqlite3 "$database" <<END
	begin;
		delete from domains where name='$domain' and type='NATIVE';
		insert into domains (name, type) values ('$domain', 'NATIVE');

		insert into records (domain_id, name,      content, type,  ttl, prio)
		select               id,        '$domain', '$soa',  'SOA', 600, 1
		from domains where name='$domain';
	commit;
END
}

check_args "$@"

add_zone "$@"