Link with libradius, too
[freeradius.git] / debian / freeradius.init
index b25a57f..0738914 100755 (executable)
@@ -1,8 +1,21 @@
 #!/bin/sh
 # Start/stop the FreeRADIUS daemon.
 
+### BEGIN INIT INFO
+# Provides:          freeradius
+# Required-Start:    $remote_fs $network $syslog
+# Should-Start:      $time mysql slapd postgresql samba krb5-kdc
+# Required-Stop:     $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Radius Daemon 
+# Description:       Extensible, configurable radius daemon
+### END INIT INFO
+
 set -e
 
+. /lib/lsb/init-functions
+
 PROG="freeradius"
 PROGRAM="/usr/sbin/freeradius"
 PIDFILE="/var/run/freeradius/freeradius.pid"
@@ -10,38 +23,41 @@ DESCR="FreeRADIUS daemon"
 
 test -f $PROGRAM || exit 0
 
+# /var/run may be a tmpfs
+if [ ! -d /var/run/freeradius ]; then
+  mkdir -p /var/run/freeradius
+  chown freerad:freerad /var/run/freeradius
+fi
+
+export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
+
+ret=0
+
 case "$1" in
-       start)
-               echo -n "Starting $DESCR: "
-               start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $PROGRAM
-               if [ $? = 0 ]; then
-                       echo "$PROG."
-               else
-                       echo "(failed!  run '$PROGRAM -x' to find out why.)"
-                       exit 1
-               fi
-               ;;
-       stop)
-               echo -n "Stopping $DESCR: "
-               start-stop-daemon --stop --quiet --pidfile $PIDFILE
-               echo "$PROG."
-               ;;
-       restart)
-               echo -n "Restarting $DESCR: "
-               $0 stop
-               sleep 2
-               $0 start
-               ;;
-       reload | force-reload) 
-               echo -n "Reloading configuration files for $DESCR"
-               start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
-               sleep 2
-               ps --pid $(cat $PIDFILE) > /dev/null || exit 1
-               echo "."
-               ;;
-       *)
-               echo "Usage: /etc/init.d/freeradius start|stop|restart|reload|force-reload"
-               exit 1 
+        start)
+                log_daemon_msg "Starting $DESCR" "$PROG"
+                start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $PROGRAM || ret=$?
+                log_end_msg $ret
+                exit $ret
+                ;;
+        stop)
+                log_daemon_msg "Stopping $DESCR" "$PROG"
+                if [ -f "$PIDFILE" ] ; then
+                  start-stop-daemon --stop --retry=TERM/30/KILL/5 --quiet --pidfile $PIDFILE || ret=$?
+                  log_end_msg $ret
+                else 
+                  log_action_cont_msg "$PIDFILE not found"
+                  log_end_msg 0
+                fi
+                ;;
+        restart|force-reload)
+                $0 stop
+                $0 start
+                ;;
+        *)
+                echo "Usage: $0 start|stop|restart|force-reload"
+                exit 1 
+                ;;
 esac
 
 exit 0