#!/bin/bash
# Etersoft, 2010
# 2010 (c) Devaev Maxim <mdevaev@etersoft.ru>
#
# rtorrent - init script for autorun rtorrent on boot
#
#####

# chkconfig: 235 98 55
# description: Shared rtorrent daemon
#
### BEGIN INIT INFO
# Provides: rtorrentd
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Shared rtorrent daemon
### END INIT INFO


WITHOUT_RC_COMPAT="1"
. /etc/rc.d/init.d/functions

[ -r "/etc/sysconfig/network" ] && . /etc/sysconfig/network
[ "$NETWORKING" == "no" ] && exit

[ -r "/etc/sysconfig/rtorrent" ] && . /etc/sysconfig/rtorrent
for var in RTORRENTD_USER RTORRENTD_DOWNLOADS RTORRENTD_SESSION RTORRENTD_TMP; do
	[ -n "`eval echo \\$"$var"`" ] || { echo "Variable \$$var is not defined"; exit 1; }
done


#####
rtorrentd_start()
{
	echo -n "Starting rtorrentd: "

	if [ -n "$RTORRENT_SOCKET" ]; then
		RTORRENT_OPTIONS="$RTORRENT_OPTIONS -O scgi_local=\"$RTORRENT_SOCKET\""
		rm -f "$RTORRENT_SOCKET"
	fi

	su - "$RTORRENTD_USER" -c "SCREENDIR=\"$RTORRENTD_TMP/screen\" /usr/bin/screen -dmS \
		rtorrent /usr/bin/rtorrent -d \"$RTORRENTD_DOWNLOADS\" -s \"$RTORRENTD_SESSION\" $RTORRENT_OPTIONS"
	RETVAL="$?"

	if [ -n "$RTORRENT_SOCKET" ]; then
		sleep 1 # Waiting for socket creation
		[ -z "$RTORRENT_SOCKET_OWNER" ] || chown "$RTORRENT_SOCKET_OWNER" "$RTORRENT_SOCKET"
		[ -z "$RTORRENT_SOCKET_PERMISSIONS" ] || chmod "$RTORRENT_SOCKET_PERMISSIONS" "$RTORRENT_SOCKET"
	fi

	if [ "$RETVAL" == "0" ]; then success; echo
	else failure; echo; exit 1
	fi
}

rtorrentd_stop()
{
	echo -n "Stopping rtorrentd: "

	rtorrent_pid=`ps "-au$RTORRENTD_USER" 2>/dev/null | grep 'rtorrent$' | awk '{print $1}'`
	if [ -n "$rtorrent_pid" ]; then
		kill "$rtorrent_pid"
		RETVAL="$?"
	fi

	if [ "$RETVAL" == "0" -a -n "$rtorrent_pid" ]; then success; echo
	else failure; echo; exit 1
	fi

}

rtorrentd_restart()
{
	rtorrentd_stop
	rtorrentd_start
}

rtorrentd_status()
{
	rtorrent_pid=`ps "-au$RTORRENTD_USER" 2>/dev/null | grep 'rtorrent$' | awk '{print $1}'`
	if [ -n "$rtorrent_pid" ]; then echo "rtorrent is running at $rtorrent_pid"
	else echo "rtorrent is not running"; exit 1
	fi
}


#####
case "$1" in
	"start") rtorrentd_start;;
	"stop") rtorrentd_stop;;
	"restart") rtorrentd_restart;;
	"status") rtorrentd_status;;
	*) msg_usage "${0##*/} {start|stop|restart|status}"; exit 1;;
esac

