#!/bin/sh

set -e

setup() (
	service named stop
	service named start
)

teardown() (
	service named stop
)
trap teardown EXIT

run() (
	max_attempts=10
	repeats=${max_attempts}
	while [ "${repeats}" -gt "0" ]; do
		# Make a query against an external nameserver and check for DNSSEC validation
		echo "Checking for DNSSEC validation status of internetsociety.org"
		out=$(dig -t a internetsociety.org @127.0.0.1 | grep -E 'flags:.+ad; QUERY' || true)
		if [ "$out" ]; then
			break
		fi
		# As a fallback in case of failure in internetsociety.org, check against ripe.net
		echo "Checking for DNSSEC validation status of ripe.net"
		out=$(dig -t a ripe.net @127.0.0.1 | grep -E 'flags:.+ad; QUERY' || true)
		if [ "$out" ]; then
			break
		fi
		repeats=$((repeats - 1))
		sleep 1
	done
	if ! [ "$out" ]; then
		echo "DNSSEC validation check failed after ${max_attempts} attempts"
		exit 1
	fi
)

setup
run
