#!/sbin/openrc-run

description="Validating, recursive, and caching DNS resolver"

DAEMON="/usr/sbin/unbound"
PIDFILE="/run/unbound.pid"
HELPER="/usr/libexec/unbound-helper"
DAEMON_OPTS=""

depend() {
	need net
	use logger dns
	after rsyslog
	provide unbound
}

_load_defaults() {
	[ -f /etc/default/unbound ] && . /etc/default/unbound
}

start_pre() {
	[ -x "$DAEMON" ] || return 1
	_load_defaults
	$HELPER chroot_setup
	$HELPER root_trust_anchor_update 2>&1 | tee /dev/fd/2 | logger -p daemon.info -t unbound
}

start() {
	start_pre || return 1
	ebegin "Starting unbound"
	start-stop-daemon -S -q -p "$PIDFILE" -x "$DAEMON" -- $DAEMON_OPTS
	if eend $?; then
		$HELPER resolvconf_start
		return 0
	fi
	return 1
}

stop() {
	ebegin "Stopping unbound"
	if start-stop-daemon -K -q -R TERM/5/KILL/5 -p "$PIDFILE"; then
		$HELPER resolvconf_stop
		$HELPER chroot_teardown
		eend 0
	else
		eend 1
	fi
}

reload() {
	_load_defaults
	ebegin "Reloading unbound"
	if start-stop-daemon -K -s 1 -p "$PIDFILE"; then
		$HELPER chroot_setup
		eend 0
	else
		eend 1
	fi
}

restart() {
	stop
	start
}

status() {
	status_of_proc -p "$PIDFILE" "$DAEMON" unbound
}
