#!/bin/sh

# PROVIDE: mysqlrouter
# REQUIRE: LOGIN
# KEYWORD: shutdown

#
# Add the following lines to /etc/rc.conf to enable mysqlrouter:
#
# mysqlrouter_enable (bool):	Set to "NO" by default.
#				Set it to "YES" to enable mysqlrouter.
# mysqlrouter_config (str):	Configuration file.
#				Default "%%PREFIX%%/etc/mysqlrouter/mysqlrouter.conf".
# mysqlrouter_user (str):	User to run mysqlrouter as, handled by rc.subr.
#				Default "mysqlrouter".
# mysqlrouter_group (str):	Group of the runtime, log and data directory.
#				Default "mysqlrouter".
# mysqlrouter_login_class (str):	Login class, see rc.subr(8) and
#				login.conf(5).  Raise openfiles there when the
#				router has to serve many connections, upstream
#				uses 10000.  Default "daemon".
# mysqlrouter_rundir (str):	Runtime directory. Must match "runtime_folder"
#				in the configuration file and the path used by
#				%%PREFIX%%/etc/logrotate.d/mysqlrouter.
#				Default "/var/run/mysqlrouter".
# mysqlrouter_logdir (str):	Log directory. Must match "logging_folder".
#				Default "/var/log/mysqlrouter".
# mysqlrouter_datadir (str):	Data directory, holds the keyring and the
#				dynamic state. Must match "data_folder".
#				Default "/var/db/mysqlrouter".
# mysqlrouter_args (str):	Custom additional arguments (default empty).
#
# mysqlrouter does not detach itself, so it is run under daemon(8).  The PID
# file is written by daemon(8), not by mysqlrouter.  Do not add a "pid_file"
# entry to the configuration file, mysqlrouter would then refuse to start
# with "PID file ... found. Already running?".
#

. /etc/rc.subr

name="mysqlrouter"
rcvar=mysqlrouter_enable

load_rc_config $name

: ${mysqlrouter_enable:="NO"}
: ${mysqlrouter_config:="%%PREFIX%%/etc/mysqlrouter/mysqlrouter.conf"}
: ${mysqlrouter_user:="mysqlrouter"}
: ${mysqlrouter_group:="mysqlrouter"}
: ${mysqlrouter_rundir:="/var/run/mysqlrouter"}
: ${mysqlrouter_logdir:="/var/log/mysqlrouter"}
: ${mysqlrouter_datadir:="/var/db/mysqlrouter"}
: ${mysqlrouter_args:=""}

pidfile="${mysqlrouter_rundir}/${name}.pid"
procname="%%PREFIX%%/bin/mysqlrouter"
required_files="${mysqlrouter_config}"

command="/usr/sbin/daemon"
command_args="-c -f -S -T ${name} -p ${pidfile} \
	${procname} --config ${mysqlrouter_config} ${mysqlrouter_args}"

extra_commands="reload"
sig_reload="HUP"

start_precmd="${name}_precmd"

mysqlrouter_precmd()
{
	# /var/run is cleared on boot and mysqlrouter cannot create the
	# directory itself: it drops privileges before the runtime directory
	# is used.  daemon(8) needs it to exist before it opens the PID file,
	# and rc.subr runs the whole command as ${mysqlrouter_user}, so the
	# directory has to belong to that account.  A unix socket configured
	# in a [routing] section is created here as well.
	install -d -o "${mysqlrouter_user}" -g "${mysqlrouter_group}" -m 0750 \
	    "${mysqlrouter_rundir}" || return 1

	# Only create these, never touch an existing directory: an
	# administrator may already run mysqlrouter under a different account.
	if [ ! -d "${mysqlrouter_logdir}" ]; then
		install -d -o "${mysqlrouter_user}" -g "${mysqlrouter_group}" \
		    -m 0750 "${mysqlrouter_logdir}" || return 1
	fi
	if [ ! -d "${mysqlrouter_datadir}" ]; then
		install -d -o "${mysqlrouter_user}" -g "${mysqlrouter_group}" \
		    -m 0750 "${mysqlrouter_datadir}" || return 1
	fi

	return 0
}

run_rc_command "$1"
