#!/bin/sh
#
# Copyright (C) 2008-2009 by JCF Ploemen <linux@jp.pp.ru>
# released under GPL, version 2 or later

################################################
#                                              #
#  TO CONFIGURE EDIT /etc/default/sabnzbdplus  #
#                                              #
################################################

### BEGIN INIT INFO
# Provides:          sabnzbdplus
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Should-Start:      NetworkManager
# Should-Stop:       NetworkManager
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SABnzbd+ binary newsgrabber
### END INIT INFO

DAEMON=/usr/bin/sabnzbdplus

[ -x $DAEMON ] || exit 0

NAME=$(basename $DAEMON)
DESC="SABnzbd+ binary newsgrabber"
SETTINGS=/etc/default/sabnzbdplus
OPTIONS="--daemon"
PYTHONEXEC="$(readlink -f $(sed -n '1s/^#\!\([a-z0-9\.\/]\+\).*/\1/p' $DAEMON))"
PIDFILE=/var/run/sabnzbdplus.pid

. /lib/lsb/init-functions

check_retval() {
	if [ $? -eq 0 ]; then
		log_end_msg 0
		return 0
	else
		log_end_msg 1
		exit 1
	fi
}

is_running() {
	# returns 0 when running, 1 otherwise
	start-stop-daemon --quiet --stop --test --user $USER --exec $PYTHONEXEC --name $NAME || return 1
}

load_settings() {
	[ -r $SETTINGS ] || exit 0
	. $SETTINGS

	[ -z "$USER" ] && {
		log_warning_msg "$DESC: not configured, aborting. See $SETTINGS";
		exit 0; }

	[ -n "$CONFIG" ] && OPTIONS="$OPTIONS --config-file $CONFIG"
	[ -n "$HOST" ] && [ -n "$PORT" ] && OPTIONS="$OPTIONS --server $HOST:$PORT"
	[ -n "$EXTRAOPTS" ] && OPTIONS="$OPTIONS $EXTRAOPTS"
}

case "$1" in
	start)
		load_settings
		if ! is_running; then
			log_daemon_msg "Starting $DESC"
			start-stop-daemon --quiet --chuid $USER --start --exec $DAEMON -- $OPTIONS
			check_retval
			# create a pidfile; we don't use it but some monitoring app likes to have one
			[ -w $(dirname $PIDFILE) ] && \
				pgrep -f -x -n -u $USER "$(sed -n '1s/^#\!//p' $DAEMON) $DAEMON $OPTIONS" > $PIDFILE
		else
			log_success_msg "$DESC: already running"
		fi
	;;
	stop)
		load_settings
		if is_running; then
			log_daemon_msg "Stopping $DESC"
			start-stop-daemon --quiet --stop --signal TERM --retry 30 --exec $PYTHONEXEC --name $NAME --user $USER
			check_retval
		else
			log_success_msg "$DESC: not running"
		fi
		[ -f $PIDFILE ] && rm -f $PIDFILE
	;;
	force-reload|restart)
		$0 stop && $0 start
	;;
	*)
		log_failure_msg "Usage: $0 {start|stop|restart|force-reload}"
	;;
esac

exit 0
