#!/sbin/sh

#
# openssh.rc: SSH daemon start-up and shutdown script
#

# Allowed exit values:
#       0 = success; causes "OK" to show up in checklist.
#       1 = failure; causes "FAIL" to show up in checklist.
#       2 = skip; causes "N/A" to show up in the checklist.
#           Use this value if execution of this script is overridden
#           by the use of a control variable, or if this script is not
#           appropriate to execute for some other reason.
#       3 = reboot; causes the system to be rebooted after execution.

# Input and output:
#       stdin is redirected from /dev/null
#
#       stdout and stderr are redirected to the /etc/rc.log file
#       during checklist mode, or to the console in raw mode.

PATH=/usr/sbin:/usr/bin:/sbin:/usr/local/sbin:/usr/local/ssl/bin:/usr/local/bin
export PATH

WHAT='OpenSSH - Secure Shell'
WHAT_PATH=/usr/local/sbin/sshd
WHAT_PID=/var/run/sshd.pid
WHAT_CONFIG=/etc/rc.config.d/opensshd

# NOTE: If your script executes in run state 0 or state 1, then /usr might
#       not be available.  Do not attempt to access commands or files in
#       /usr unless your script executes in run state 2 or greater.  Other
#       file systems typically not mounted until run state 2 include /var
#       and /opt.

rval=0

# Check the exit value of a command run by this script.  If non-zero, the
# exit code is echoed to the log file and the return value of this script
# is set to indicate failure.

set_return ()
{
    x=$?
    if [ $x -ne 0 ]; then
	echo "EXIT CODE: $x"
	rval=1  # script FAILed
	fi
    } # set_return

case $1 in
    'start_msg')
	echo "Starting $WHAT"
	;;

    'stop_msg')
	echo "Stopping $WHAT"
	;;

    'start')
	if [ -f $WHAT_CONFIG ] ; then
	    . $WHAT_CONFIG
	else
	    echo "ERROR: $WHAT_CONFIG defaults file MISSING"
	    fi
	ps -ef | grep "/usr/local/sbin/sshd" | grep -v grep > /dev/null
	NOT_RUNNING=$?
	if [ "$SSHD_START" -eq 1 -a -x "$WHAT_PATH" -a "$NOT_RUNNING" -eq 1 ]; then
	    $WHAT_PATH $SSHD_ARGS && echo "$WHAT started"
	    set_return
	else
	    rval=2
	    fi
	    ;;

    'stop')
	if kill `cat $WHAT_PID`; then
	    echo "$WHAT stopped"
	else
	    rval=1
	    echo "Unable to stop $WHAT"
	    fi
	set_return
	;;

    *)
	echo "usage: $0 {start|stop|start_msg|stop_msg}"
	rval=1
	;;
    esac

exit $rval
