#!/bin/sh
#
# Copyright (C) 2013 Glyptodon LLC
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#

# guacd
#
# chkconfig:   2345 20 80
# description: Guacamole proxy daemon

### BEGIN INIT INFO
# Provides:          guacd
# Required-Start:    $network $syslog 
# Required-Stop:     $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Guacamole proxy daemon
# Description: The Guacamole proxy daemon, required to translate remote desktop protocols into the text-based Guacamole protocol used by the JavaScript application.
### END INIT INFO

prog="guacd"
exec="/usr/local/sbin/$prog"
pidfile="/var/run/$prog.pid"

# Returns PID of currently running process, if any
getpid() {

    if [ -f "$pidfile" ]
    then

        read PID < "$pidfile"

        # If pidfile contains PID and PID is valid
        if [ -n "$PID" ] && ps "$PID" > /dev/null 2>&1
        then
            echo "$PID"
            return 0
        fi

    fi

    # pidfile/pid not found, or process is dead
    return 1

}

start() {
    [ -x $exec ] || exit 5
    echo -n "Starting $prog: "

    getpid > /dev/null || $exec -p "$pidfile" 
    retval=$?

    case "$retval" in
        0)
            echo "SUCCESS"
            ;;
        *)
            echo "FAIL"
            ;;
    esac

    return $retval
}

stop() {
    echo -n "Stopping $prog: "
    
    PID=`getpid`
    retval=$?

    case "$retval" in
        0)
            if kill $PID > /dev/null 2>&1
            then
                echo "SUCCESS"
                return 0
            fi

            echo "FAIL"
            return 1
            ;;
        *)
            echo "SUCCESS (not running)"
            return 0
            ;;
    esac

}

restart() {
    stop && start
}

force_reload() {
    restart
}

status() {
    
    PID=`getpid`
    retval=$?

    case "$retval" in
        0)
            echo "$prog is running with PID=$PID."
            ;;
        *)
            echo "$prog is not running."
            ;;
    esac

    return $retval

}

case "$1" in
    start|stop|status|restart|force-reload)
        $1
        ;;
    try-restart)
        status && restart
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
        exit 2
esac
exit $?

