#!/bin/bash
#
# sslh         Startup script for the SSL/SSH multiplexer
#
# chkconfig: - 13 87
# description: Sslh accepts connections on specified ports, and forwards
#              them further based on tests performed on the first data
#              packet sent by the remote client.
# processname: sslh
# config: /etc/sslh.cfg
# config: /etc/sysconfig/sslh
# pidfile: /var/run/sslh/sslh.pid
#
# Authors:
# Andre Krajnik akrajnik@gmail.com - 2010-03-20
# Julien Thomas julthomas@free.fr - 2013-08-25

# Source function library.
. /etc/init.d/functions

if [ -f /etc/sysconfig/sslh ]; then
        . /etc/sysconfig/sslh
fi

PROGNAME=sslh
SSLH=${SSLH:-/usr/sbin/sslh-select}
SSLH_LANG=${SSLH_LANG:-C}
CONFIG=${CONFIG:-/etc/sslh.cfg}
PIDFILE=${PIDFILE:-/var/run/sslh/sslh.pid}
LOCKFILE=${LOCKFILE:-/var/lock/subsys/sslh}
STOP_TIMEOUT=${STOP_TIMEOUT:-10}
RETVAL=0

start() {
    echo -n "Starting $PROGNAME: "
    LANG=$SSLH_LANG daemon --pidfile="$PIDFILE" \
                           ${SSLH_USER:+--user="${SSLH_USER}"} \
                           "$SSLH" ${CONFIG:+-F "$CONFIG"} "$OPTIONS"
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch "$LOCKFILE"
    return $RETVAL
}

stop() {
    echo -n "Stopping $PROGNAME: "
    killproc -p "$PIDFILE" -d "$STOP_TIMEOUT" "$SSLH"
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f "$LOCKFILE" "$PIDFILE"
}

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status -p "$PIDFILE" "$SSLH"
        RETVAL=$?
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage: $PROGNAME {start|stop|status|restart}"
        RETVAL=2
        ;;
esac

exit $RETVAL
