#!/bin/bash

### BEGIN INIT INFO
# Provides:     homegear-webssh
# Required-Start:   $network $remote_fs $syslog
# Required-Stop:    $network $remote_fs $syslog
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    Start homegear-webssh
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

. /lib/lsb/init-functions

CONFIGPATH=/etc/homegear
DAEMON=/usr/bin/homegear-webssh
PIDPATH=/var/run/homegear
PIDFILE=$PIDPATH/homegear-webssh.pid
LOGPATH=/var/log/homegear

test -x $DAEMON || exit 5

if [ -r /etc/default/homegear-webssh ]; then
        . /etc/default/homegear-webssh
fi

HOMEGEAR_WEBSSH_OPTS="$HOMEGEAR_WEBSSH_OPTS -d"

LOCKFILE=/var/lock/homegear-webssh

lock_homegear() {
        if [ -x /usr/bin/lockfile-create ]; then
                lockfile-create $LOCKFILE
                lockfile-touch $LOCKFILE &
                LOCKTOUCHPID="$!"
        fi
}

unlock_homegear() {
        if [ -x /usr/bin/lockfile-create ] ; then
                kill $LOCKTOUCHPID
                lockfile-remove $LOCKFILE
        fi
}

case $1 in
        start)
                if test ! -d $PIDPATH; then
                    mkdir -p $PIDPATH
                fi
                chmod -R 750 $PIDPATH

                if test ! -d $LOGPATH; then
                    mkdir -p $LOGPATH
                fi
                chmod -R 750 $LOGPATH

                log_daemon_msg "Starting homegear-webssh" "homegear-webssh"
                lock_homegear
                #Probably has no effect at all...
                ulimit -r 100
                start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- -p $PIDFILE $HOMEGEAR_WEBSSH_OPTS
                status=$?
                unlock_homegear

                log_end_msg $status
                ;;
        stop)
                log_daemon_msg "Stopping homegear-webssh" "homegear-webssh"
                if test -e $PIDFILE; then
                    PID=`cat $PIDFILE`
                    PROCESSCOUNT=`ps --pid $PID | grep -c homegear-webssh`
                    if [ $PROCESSCOUNT -ne 0 ]; then
                        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
                    fi
                    INDEX=0
                    while [ $PROCESSCOUNT -ne 0 ] && [ $INDEX -lt 5000 ]; do
                        sleep 0.01
                        PROCESSCOUNT=`ps --pid $PID | grep -c homegear-webssh`
                        if log_use_fancy_output; then
                            LOGLINE=`tail -n 20 $LOGPATH/homegear-webssh.log | grep -o ".[sS]hutdown. => .*$" | tail -n 1`
                            MESSAGE=`printf "%-70s" "${LOGLINE:14}"`
                            if [ ! -z "$LOGLINE" ]; then
                                $TPUT civis || true
                                $TPUT sc && \
                                $TPUT hpa 36 && \
                                CYAN=$( $TPUT setaf 6)
                                NORMAL=$( $TPUT op)
                                echo -ne "(${CYAN} $MESSAGE ${NORMAL})" || true
                                $TPUT rc || true
                                $TPUT cnorm || true
                            fi
                        fi
                        INDEX=$((INDEX+1))
                    done
                    if log_use_fancy_output; then
                        $TPUT civis || true
                        $TPUT sc && \
                        $TPUT hpa 36 && \
                        CYAN=$( $TPUT setaf 6)
                        NORMAL=$( $TPUT op)
                        echo -ne "                                                                          " || true
                        $TPUT rc || true
                        $TPUT cnorm || true
                    fi
                    if [ $PROCESSCOUNT -ne 0 ]; then
                        log_end_msg 1
                    else
                        log_end_msg 0
                    fi
                    rm -f $PIDFILE
                else
                    log_end_msg 1
                    echo "Can't stop homegear-webssh. There is no pid file."
                fi
                ;;
        restart|force-reload)
                $0 stop && sleep 2 && $0 start
                ;;
        try-restart)
                if $0 status >/dev/null; then
                        $0 restart
                else
                        exit 0
                fi
                ;;
        reload)
                log_daemon_msg "Reloading homegear-webssh" "homegear-webssh"
                if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $PIDFILE; then
                    log_end_msg 0 || true
                else
                    log_end_msg 1 || true
                fi
                ;;
        status)
                status_of_proc $DAEMON "homegear-webssh"
                ;;
        *)
                echo "Usage: $0 {start|stop|restart|reload|force-reload|status}"
                exit 2
                ;;
esac
