#!/bin/sh
#
# PROVIDE: calibreweb
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# calibreweb_enable (bool):        Set to NO by default.
#                       Set it to YES to enable it.
# calibreweb_ip_addr:      IP Address used to listen for connections
#                       Default: 0.0.0.0
# calibreweb_conf_dir:     Directory where calibreweb configuration
#                       data is stored.
#                       Default: /usr/local/calibreweb
# calibreweb_settings:     Directory and file name of calibreweb settings
#                       db is stored.
#                       Default: /usr/local/calibreweb/app.db
# calibreweb_gdrive:       Directory and file name of calibreweb gdrive
#                       db is stored.
#                       Default: /usr/local/calibreweb/gdrive.db
# calibreweb_cert:         Directory and file name of calibreweb gdrive
#                       db is stored.
#                       Default: None
# calibreweb_key:          Directory and file name of calibreweb gdrive
#                       db is stored.
#                       Default: None
# calibreweb_flags:        Additonal flags as needed
#                       Default: None
# calibreweb_user:         The user account calibreweb daemon runs as what
#                       you want it to be. It uses 'calibreweb' user by
#                       default. Do not set it as empty or it will run
#                       as root.
# calibreweb_group:        The group account calibreweb daemon runs as what
#                       you want it to be. It uses 'calibreweb' group by
#                       default. Do not set it as empty or it will run
#                       as wheel.
# calibreweb_pid:      Set the name of the calibreweb pidfile
#                       Default: calibreweb.pid
# calibreweb_pid_dir:      Set the directory of the calibreweb pidfile
#                       Default: /var/run/calibreweb
# calibreweb_log:      Set the name of the calibreweb logfile
#                       Default: calibreweb.log
# calibreweb_log_dir:      Set the directory of the calibreweb logfile
#                       Default: /var/log/calibreweb

. /etc/rc.subr

name=calibreweb
rcvar=calibreweb_enable
load_rc_config ${name}

: ${calibreweb_enable:=NO}
: ${calibreweb_user:=calibreweb}
: ${calibreweb_group:=calibreweb}
: ${calibreweb_ip_addr="0.0.0.0"}
: ${calibreweb_conf_dir="/usr/local/share/calibreweb"}
: ${calibreweb_settings="${calibreweb_conf_dir}/app.db"}
: ${calibreweb_gdrive="${calibreweb_conf_dir}/gdrive.db"}
: ${calibreweb_pid:="calibreweb.pid"}
: ${calibreweb_pid_dir:="/var/run/calibreweb"}
: ${calibreweb_log:="calibreweb.log"}
: ${calibreweb_log_dir:="/var/log/calibreweb"}

pidfile=${calibreweb_pid_dir}/${calibreweb_pid}
logfile=${calibreweb_log_dir}/${calibreweb_log}

start_precmd="${name}_prestart"

procname="/usr/local/bin/cps"
command_interpreter="/usr/local/bin/python3.11"
command="/usr/sbin/daemon"
command_args="-p $pidfile $procname \
		-i ${calibreweb_ip_addr} \
		-p ${calibreweb_settings} \
		-g ${calibreweb_gdrive} \
		${calibreweb_cert:+-c ${calibreweb_cert}} \
		${calibreweb_key:+-k ${calibreweb_key}} \
		-o $logfile"

calibreweb_prestart()
{
	PATH=${PATH}:/usr/local/bin:/usr/local/sbin

	for calwebdir in ${calibreweb_pid_dir} ${calibreweb_log_dir} ${calibreweb_conf_dir}; do
		[ -d ${calwebdir} ] || install -d -g ${calibreweb_group} -o ${calibreweb_user} ${calwebdir}
	done
}

run_rc_command $1
