Use local EAP, even if the realm doesn't exist
[freeradius.git] / debian / freeradius.init
index e90c5e7..0738914 100755 (executable)
 # Start/stop the FreeRADIUS daemon.
 
 ### BEGIN INIT INFO
-# Provides:          radiusd
-# Required-Start:    $network
-# Should-Start:      $time mysql ldap postgresql samba krb5-kdc
-# Required-Stop:
+# 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: FreeRADIUS server
-# Description:       Extensible, configurable, high performance RADIUS server.
+# Short-Description: Radius Daemon 
+# Description:       Extensible, configurable radius daemon
 ### END INIT INFO
 
-# Do NOT "set -e"
+set -e
 
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="FreeRADIUS server"
-NAME=freeradius
-DAEMON=/usr/sbin/$NAME
-PIDFILE=/var/run/$NAME/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-
-# Default values for config variables
-FR_USER=freerad
-FR_GROUP=freerad
-FR_ARGS=
-
-# Exit if the package is not installed
-[ -x $DAEMON ] || exit 0
+. /lib/lsb/init-functions
 
-# Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+PROG="freeradius"
+PROGRAM="/usr/sbin/freeradius"
+PIDFILE="/var/run/freeradius/freeradius.pid"
+DESCR="FreeRADIUS daemon"
 
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB start_daemon, killproc and log_* functions.
-. /lib/lsb/init-functions
+test -f $PROGRAM || exit 0
 
 # /var/run may be a tmpfs
-if [ ! -d /var/run/$NAME ]; then
-       install -o "$FR_USER" -g "$FR_GROUP" -m 0755 -d /var/run/$NAME
-       if [ $? -ne 0 ]; then
-               echo "Error creating the /var/run/$NAME directory."
-               exit 1
-       fi
+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)
-       [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
-       start_daemon -p $PIDFILE $DAEMON $FR_ARGS
-       if [ $? -ne 0 ]; then
-               [ "$VERBOSE" != no ] && log_end_msg 1 || \
-               log_failure_msg "Run '$DAEMON -X' to find out why."
-               exit 1
-       fi
-       [ "$VERBOSE" != no ] && log_end_msg 0
-       ;;
-  stop)
-       [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-       killproc -p $PIDFILE $DAEMON
-       if [ $? -ne 0 ]; then
-               [ "$VERBOSE" != no ] && log_end_msg 1
-               exit 1
-       fi
-       [ "$VERBOSE" != no ] && log_end_msg 0
-       ;;
-  restart)
-       log_daemon_msg "Restarting $DESC" "$NAME"
-       killproc -p $PIDFILE $DAEMON
-       if [ $? -ne 0 ]; then
-               log_end_msg 1
-               log_failure_msg "Failed to stop $NAME."
-               exit 1
-       fi
-       start_daemon -p $PIDFILE $DAEMON $FR_ARGS
-       if [ $? -ne 0 ]; then
-               log_end_msg 1
-               log_failure_msg "Failed to start $NAME."
-               log_failure_msg "Run '$DAEMON -X' to find out why."
-               exit 1
-       fi
-       log_end_msg 0
-       ;;
-  reload|force-reload)
-       log_daemon_msg "Reloading $DESC" "$NAME"
-       killproc -p $PIDFILE $DAEMON -SIGHUP
-       if [ $? -ne 0 ]; then
-               log_end_msg 1
-               exit 1
-       fi
-       sleep 2
-       pidofproc -p $PIDFILE > /dev/null
-       if [ $? -ne 0 ]; then
-               log_end_msg 1
-               log_failure_msg "$NAME has died."
-               exit 1
-       fi
-       log_end_msg 0
-       ;;
-  *)
-       echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-       exit 3
-       ;;
+        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