#!/bin/sh

# PROVIDE: rtorrent
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="rtorrent"
rcvar=rtorrent_enable

load_rc_config $name

: ${rtorrent_enable='NO'}
: ${rtorrent_run_dir="/var/run/${name}"}
: ${rtorrent_pidfile="${rtorrent_run_dir}/${name}.pid"}
: ${rtorrent_user='rtorrent'}
: ${rtorrent_group='rtorrent'}
: ${rtorrent_args=''}
: ${rtorrent_bindaddr=''} 	# Bind listening socket and outgoing connections to this network interface address.
: ${rtorrent_bindport=''}	# Try to open a listening port in the range a up to and including b
: ${rtorrent_download_dir=''}	# Set the default download directory.
: ${rtorrent_session_dir="/var/db/${name}"} # Session management will be enabled and the torrent files for all open downloads will be stored in this directory.
: ${rtorrent_config="/usr/local/etc/${name}/${name}.conf"} # .rtorrent.rc config file name.
: ${rtorrent_rpc_bindaddr=''}	# tcp (ip:port) socket for scgi/rpc connect.
: ${rtorrent_rpc_bindsocket="${rtorrent_run_dir}/${name}-rpc.sock"} # Unix domain socket for scgi/rpc connect.


command='/usr/sbin/daemon'
procname='/usr/local/bin/rtorrent'
command_args='-n'

if [ -n "${rtorrent_bindaddr}" ]; then
	command_args="${command_args} -b ${rtorrent_bindaddr}"
fi
if [ -n "${rtorrent_bindport}" ]; then
	command_args="${command_args} -p ${rtorrent_bindport}"
fi
if [ -n "${rtorrent_download_dir}" ]; then
	command_args="${command_args} -d ${rtorrent_download_dir}"
fi
if [ -n "${rtorrent_session_dir}" ]; then
	command_args="${command_args} -s ${rtorrent_session_dir}"
fi
if [ -n "${rtorrent_config}" ]; then
	command_args="${command_args} -o import=${rtorrent_config}"
fi
if [ -n "${rtorrent_rpc_bindsocket}" ]; then
	command_args="${command_args} -o scgi_local=${rtorrent_rpc_bindsocket}"
fi
if [ -n "${rtorrent_rpc_bindaddr}" ]; then
	command_args="${command_args} -o network.scgi.open_port=${rtorrent_rpc_bindaddr}"
fi
command_args="-p ${rtorrent_pidfile} -S -T ${name} ${procname} ${command_args} -o session.path.set=${rtorrent_session_dir} -o system.daemon.set=yes ${rtorrent_args}"


pidfile="${rtorrent_pidfile}"
required_dirs="${rtorrent_download_dir}"
required_files="${command} ${procname}"

start_precmd="${name}_start_precmd"

rtorrent_start_precmd()
{
	# create the file pid, and directory, with correct permissions
	if [ ! -d ${rtorrent_run_dir} ]; then
		install -d -o ${rtorrent_user} -g ${rtorrent_group} ${rtorrent_run_dir}
	fi
	if [ ! -d ${rtorrent_session_dir} ]; then
		install -d -o ${rtorrent_user} -g ${rtorrent_group} ${rtorrent_session_dir}
	fi
	if [ -n "${rtorrent_session_dir}" ]; then
		rm -f "${rtorrent_session_dir}/rtorrent.lock"
	fi
	if [ -e "${rtorrent_rpc_bindsocket}" ]; then
		rm -f "${rtorrent_rpc_bindsocket}"
	fi
}


run_rc_command "$1"

