port fix from branch_1_1
[freeradius.git] / debian / freeradius.init
index b25a57f..e39a366 100755 (executable)
@@ -1,7 +1,14 @@
 #!/bin/sh
 # Start/stop the FreeRADIUS daemon.
 
-set -e
+### BEGIN INIT INFO
+# Provides:          radiusd
+# Required-Start:    $network
+# Should-Start:      $time mysql ldap postgresql samba krb5-kdc
+# Required-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+### END INIT INFO
 
 PROG="freeradius"
 PROGRAM="/usr/sbin/freeradius"
@@ -10,11 +17,20 @@ DESCR="FreeRADIUS daemon"
 
 test -f $PROGRAM || exit 0
 
+# /var/run may be a tmpfs
+if [ ! -d /var/run/freeradius ]; then
+       install -o freerad -g freerad -m 0755 -d /var/run/freeradius
+       if [ $? -ne 0 ]; then
+               echo "Error creating the /var/run/freeradius directory."
+               exit 1
+       fi
+fi
+
 case "$1" in
        start)
                echo -n "Starting $DESCR: "
                start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $PROGRAM
-               if [ $? = 0 ]; then
+               if [ $? -eq 0 ]; then
                        echo "$PROG."
                else
                        echo "(failed!  run '$PROGRAM -x' to find out why.)"
@@ -23,25 +39,30 @@ case "$1" in
                ;;
        stop)
                echo -n "Stopping $DESCR: "
-               start-stop-daemon --stop --quiet --pidfile $PIDFILE
+               start-stop-daemon --stop --retry=TERM/30/KILL/5 --oknodo --quiet --pidfile $PIDFILE
                echo "$PROG."
                ;;
        restart)
-               echo -n "Restarting $DESCR: "
+               echo "Restarting $DESCR..."
                $0 stop
-               sleep 2
                $0 start
                ;;
-       reload | force-reload) 
+       reload | force-reload)
                echo -n "Reloading configuration files for $DESCR"
-               start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
+               start-stop-daemon --stop --signal 1 --oknodo --quiet --pidfile $PIDFILE
                sleep 2
-               ps --pid $(cat $PIDFILE) > /dev/null || exit 1
-               echo "."
+               [ -r $PIDFILE ] && kill -0 $(cat $PIDFILE) > /dev/null 2>&1
+               if [ $? -eq 0 ]; then
+                       echo "."
+               else
+                       echo " failed! ($PROG has died)"
+                       exit 1
+               fi
                ;;
        *)
-               echo "Usage: /etc/init.d/freeradius start|stop|restart|reload|force-reload"
-               exit 1 
+               echo "Usage: $0 start|stop|restart|reload|force-reload"
+               exit 1
+               ;;
 esac
 
 exit 0