#!/bin/sh

# PROVIDE: zrepl
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# zrepl_enable (bool):	Set to YES to enable the zrepl service.
#			Default: NO
# zrepl_config (str):	File containing zrepl configuration details.
#			Default: /usr/local/etc/zrepl/zrepl.yml
# zrepl_user (str):	The user account used to run the zrepl daemon.
#			Do not specifically set this to an empty string as this
#			will cause the daemon to run as root.
#			Default: root
# zrepl_group (str):	The group account used to run the zrepl daemon.
#			Do not specifically set this to an empty string as this
#			will cause the daemon to run with group wheel.
#			Default: wheel
# zrepl_flags (str):	Extra flags passed to zrepl
#			Default: ""
# zrepl_facility (str):	Syslog facility to use
#			Default: local0
# zrepl_priority (str):	Syslog priority to use
#			Default: alert

. /etc/rc.subr
name=zrepl
rcvar=${name}_enable
load_rc_config $name

: ${zrepl_enable:="NO"}
: ${zrepl_config:="/usr/local/etc/zrepl/zrepl.yml"}
: ${zrepl_user:="root"}
: ${zrepl_group:="wheel"}
: ${zrepl_flags:=""}
: ${zrepl_facility:="local0"}
: ${zrepl_priority:="alert"}
: ${zrepl_options:="${zrepl_flags} --config ${zrepl_config}"}

pidfile="/var/run/zrepl.pid"
command="/usr/sbin/daemon"
procname="/usr/local/bin/zrepl"
command_args="-p ${pidfile} -S -l ${zrepl_facility} -s ${zrepl_priority} -T ${name} \
		${procname} ${zrepl_options} daemon"

start_precmd="zrepl_precmd"
stop_postcmd="zrepl_postcmd"
restart_precmd="zrepl_checkconfig"
configtest_cmd="zrepl_checkconfig"
extra_commands="configtest"

zrepl_precmd()
{
	if [ ! -d "/var/run/zrepl/stdinserver" ]; then
		install -d -g ${zrepl_group} -o ${zrepl_user} -m 0700 -- "/var/run/zrepl";
		install -d -g ${zrepl_group} -o ${zrepl_user} -m 0700 -- "/var/run/zrepl/stdinserver";
	fi

	if [ ! -e "${pidfile}" ]; then
		install -g ${zrepl_group} -o ${zrepl_user} -- /dev/null "${pidfile}";
	fi

	zrepl_checkconfig
}

zrepl_postcmd()
{
	rm -f -- "${pidfile}"
}

zrepl_checkconfig()
{
	echo "Performing sanity check on zrepl configuration:"
	eval ${procname} ${zrepl_options} configcheck
}

run_rc_command "$1"
