#!/bin/sh

PORT=1202         # <port>
LOCAL_ONLY=false  # true | false
NO_SANDBOX=false  # true | false
IDENT=false       # true | false
ALLOW_ROOT=false  # true | false
DEBUG=false       # true | false
EXPIRATION=15     # 0 | <minutes> | none

SBRSHD=/usr/sbin/sbrshd
PIDFILE=/var/run/sbrshd.pid

if ! [ -x $SBRSHD ]; then
    exit 0
fi

signal_sbrshd()
{
    SIGNAL=$1

    if [ -f $PIDFILE ]; then
        PID=`cat $PIDFILE`

        if [ x"$PID" != x ] && [ -d /proc/$PID ]; then
            if ! kill -$SIGNAL $PID; then
                echo "failed!"
                return
            fi

            if [ $SIGNAL = TERM ]; then
                for i in 1 2 3 4 5; do
                    if [ ! -d /proc/$PID ]; then
                        rm $PIDFILE
                        echo "done."
                        return
                    fi

                    sleep 1
                done

                echo "process did not die!"
            else
                echo "done."
            fi
        else
            echo "process not found!"

            if [ $SIGNAL = TERM ]; then
                rm $PIDFILE
            fi
        fi
    else
        echo "pid file not found!"
    fi
}

case "$1" in
    start)
        echo -n "Starting sbrshd: "

        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`

            if [ "$PID" ] && [ -d /proc/$PID ]; then
		echo "already running!"
		exit 1
            else
                rm $PIDFILE
            fi
        fi

        ARGS="$SBRSHD --port=$PORT --mount-expiration=$EXPIRATION"

        if $LOCAL_ONLY; then
            ARGS="$ARGS --local-only"
        fi
        if $NO_SANDBOX; then
            ARGS="$ARGS --no-sandbox"
        fi
        if $IDENT; then
            ARGS="$ARGS --ident"
        fi
        if $ALLOW_ROOT; then
            ARGS="$ARGS --allow-root"
        fi
        if $DEBUG; then
            ARGS="$ARGS --debug=/tmp/sbrshd-$PORT.log"
        fi

        PID=`$ARGS`

        if [ x"$PID" != x ]; then
	    echo "done."
	    echo $PID > $PIDFILE
	else
	    exit 1
        fi
        ;;

    stop)
        echo -n "Stopping sbrshd: "
        signal_sbrshd TERM
        ;;

    restart)
        $0 stop
	sleep 1
        $0 start
        ;;

    enable-debug)
        echo -n "Opening sbrshd debug log: "
        signal_sbrshd USR1
        ;;

    disable-debug)
        echo -n "Closing sbrshd debug log: "
        signal_sbrshd USR2
        ;;

    *)
        echo "Usage: $0 {start|stop|restart|enable-debug|disable-debug}"
        exit 1
        ;;
esac

exit 0
