Added Default-Start/Stop to init.d script.
[guacd.git] / init.d / guacd.in
index 55c6f44..1d93c65 100644 (file)
 
 # guacd
 #
-# chkconfig:   - 20 80
+# 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
 
-# Source function library.
-. /lib/lsb/init-functions
-
 prog="guacd"
 exec="@sbindir@/$prog"
 pidfile="/var/run/$prog.pid"
 
-[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+# 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: "
-    start_daemon -p "$pidfile" $exec -p "$pidfile" 
+
+    getpid > /dev/null || $exec -p "$pidfile" 
     retval=$?
 
     case "$retval" in
@@ -78,24 +98,31 @@ start() {
 
 stop() {
     echo -n "Stopping $prog: "
-    killproc -p "$pidfile" $prog
+    
+    PID=`getpid`
     retval=$?
 
     case "$retval" in
         0)
-            echo "SUCCESS"
+            if kill $PID > /dev/null 2>&1
+            then
+                echo "SUCCESS"
+                return 0
+            fi
+
+            echo "FAIL"
+            return 1
             ;;
         *)
-            echo "FAIL"
+            echo "SUCCESS (not running)"
+            return 0
             ;;
     esac
 
-    return $retval
 }
 
 restart() {
-    stop
-    start
+    stop && start
 }
 
 force_reload() {
@@ -104,7 +131,7 @@ force_reload() {
 
 status() {
     
-    PID=`pidofproc -p "$pidfile" $prog`
+    PID=`getpid`
     retval=$?
 
     case "$retval" in
@@ -116,16 +143,19 @@ status() {
             ;;
     esac
 
+    return $retval
 
 }
 
-
 case "$1" in
     start|stop|status|restart|force-reload)
         $1
         ;;
+    try-restart)
+        status && restart
+        ;;
     *)
-        echo "Usage: $0 {start|stop|status|restart|force-reload}"
+        echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
         exit 2
 esac
 exit $?