#! /bin/sh

### BEGIN INIT INFO
# Provides:          debtorrent-client
# Required-Start:    $network $remote_fs
# Required-Stop:     $remote_fs
# Should-Start:      $named
# Should-Stop:       
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: bittorent proxy for debian archive
# Description:       debtorrent is a program that proxies requests from
#                    APT to download packages and instead uses a 
#                    bittorrent-like peer-to-peer method to download them.
#                    This provides the debtorrent daemon client.
### END INIT INFO

# /etc/init.d/debtorrent-client: start and stop the debtorrent client daemon

DAEMON=/usr/bin/debtorrent-client
NAME="debtorrent-client"
DEFAULTSFILE=/etc/default/debtorrent-client
PIDFILE=/var/run/debtorrent-client.pid

DEBTORRENT_ENABLE=false
DEBTORRENT_USER=debtorrent
DEBTORRENT_CONFIG_FILE=/etc/debtorrent/debtorrent-client.conf
DEBTORRENT_DOWNLOAD_DIR=/var/cache/debtorrent
DEBTORRENT_CACHE_DIR=/var/cache/debtorrent/.DebTorrent
DEBTORRENT_LOG_DIR=/var/log/debtorrent

test -x $DAEMON || exit 0

. /lib/lsb/init-functions
test -f /etc/default/rcS && . /etc/default/rcS

if [ -s $DEFAULTSFILE ]; then
    . $DEFAULTSFILE
    case "x$DEBTORRENT_ENABLE" in
        xtrue|xfalse)   ;;
        *)              log_failure_msg "Value of DEBTORRENT_ENABLE in $DEFAULTSFILE must be either 'true' or 'false';"
                        log_failure_msg "not starting $NAME daemon."
                        exit 1
                        ;;
    esac
    case "x$DEBTORRENT_USER" in
        x)              log_warning_msg "Value of DEBTORRENT_USER in $DEFAULTSFILE must be a valid user;"
                        log_failure_msg "not starting $NAME daemon."
                        exit 1
                        ;;
    esac
fi

export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"

case "$1" in
  start)
    if "$DEBTORRENT_ENABLE"; then
        log_daemon_msg "Starting $NAME daemon" "$NAME"
        if [ -s $PIDFILE ] && kill -0 $(cat $PIDFILE) >/dev/null 2>&1; then
                log_progress_msg "apparently already running"
                log_end_msg 0
        exit 0
        fi
        if [ ! -s "$DEBTORRENT_CONFIG_FILE" ]; then
            log_failure_msg "missing or empty config file $DEBTORRENT_CONFIG_FILE"
            log_end_msg 1
            exit 1
        fi
        start-stop-daemon --start --quiet --background \
            --pidfile $PIDFILE --make-pidfile --chuid $DEBTORRENT_USER \
            --exec $DAEMON \
            -- --configfile "$DEBTORRENT_CONFIG_FILE" \
               --download_dir "$DEBTORRENT_DOWNLOAD_DIR" \
               --cache_dir "$DEBTORRENT_CACHE_DIR" \
               --log_dir "$DEBTORRENT_LOG_DIR"
        log_end_msg $?
    else
        if [ -s "$DEBTORRENT_CONFIG_FILE" ]; then
            [ "$VERBOSE" != no ] && log_warning_msg "$NAME daemon not enabled in $DEFAULTSFILE, not starting..."
        fi
    fi
    ;;
  stop)
    log_daemon_msg "Stopping $NAME daemon" "$NAME"
	start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
		--retry INT/15/TERM/5/KILL/5
    log_end_msg $?
    rm -f $PIDFILE
    ;;

  reload)
    log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
    log_warning_msg "cannot re-read the config file (use restart)."
    ;;

  restart|force-reload)
    set +e
    if $DEBTORRENT_ENABLE; then
        log_daemon_msg "Restarting $NAME daemon" "$NAME"
	    if [ -s $PIDFILE ] && kill -0 $(cat $PIDFILE) >/dev/null 2>&1; then
		    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
		    	--retry INT/15/TERM/5/KILL/5 || true
		    sleep 1
	    else
    	    rm -f $PIDFILE
	    fi
        if start-stop-daemon --start --quiet --background \
	        --pidfile $PIDFILE --make-pidfile --chuid $DEBTORRENT_USER \
	        --exec $DAEMON \
	        -- --configfile "$DEBTORRENT_CONFIG_FILE" \
	           --download_dir "$DEBTORRENT_DOWNLOAD_DIR" \
	           --cache_dir "$DEBTORRENT_CACHE_DIR" \
	           --log_dir "$DEBTORRENT_LOG_DIR"
        then
            log_end_msg 0
        else
            log_end_msg 1
            rm -f $PIDFILE
        fi
    else
        [ "$VERBOSE" != no ] && log_warning_msg "$NAME daemon not enabled in $DEFAULTSFILE, not starting..."
    fi
    ;;
  
  status)
    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
    ;;

  *)
    echo "Usage: /etc/init.d/debtorrent-client {start|stop|status|reload|force-reload|restart}"
    exit 1
esac

exit 0
