diff options
Diffstat (limited to 'redhat/freeradius-radiusd-init')
-rwxr-xr-x | redhat/freeradius-radiusd-init | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/redhat/freeradius-radiusd-init b/redhat/freeradius-radiusd-init new file mode 100755 index 0000000..d19b2d4 --- /dev/null +++ b/redhat/freeradius-radiusd-init @@ -0,0 +1,191 @@ +#!/bin/sh +# +# radiusd Start/Stop the FreeRADIUS daemon +# +# chkconfig: - 88 10 +# description: Extensible, configurable, high performance RADIUS server. + +### BEGIN INIT INFO +# Provides: radiusd +# Required-Start: $network +# Required-Stop: +# Default-Start: +# Default-Stop: +# Should-Start: $time $syslog mysql ldap postgresql samba krb5-kdc +# Should-Stop: +# Short-Description: FreeRADIUS server +# Description: Extensible, configurable, high performance RADIUS server. +### END INIT INFO + +# Source function library. + +# Get the wrappers for the standard lsb init functions +. /lib/lsb/init-functions + +# and the distro specific ones +. /etc/init.d/functions + +prog=radiusd + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +exec=${exec:=/usr/sbin/$prog} +config_dir=${config_dir:=/etc/raddb} +config=${config:=$config_dir/radiusd.conf} +pidfile=${pidfile:=/var/run/$prog/$prog.pid} +lockfile=${lockfile:=/var/lock/subsys/radiusd} + +configtest() { + echo -n $"Checking $prog configuration: " + out=`$exec -Cxl stdout -d $config_dir`; retval=$? + out=`echo "${out}" | tail -n 1 | sed 's/^\s*ERROR:\s*\(.*\)\s*$/\1/'` + + # Seems some LSB function implementations *really* need + # a log message < 60 chars long, else output gets mangled. + if [ $retval -eq 0 ]; then + log_success_msg + else + if [ $(expr length "$out") -gt 60 ]; then + log_failure_msg + echo "$out" 1>&2 + else + log_failure_msg "$out" + fi + fi + return $retval +} + +start() { + echo -n $"Starting $prog: " + + if [ ! -x $exec ]; then + log_failure_msg "$exec not found or not executable" + exit 5 + fi + + if [ ! -f $config ]; then + log_failure_msg "Can't find radiusd.conf" + exit 6 + fi + + start_daemon -p $pidfile $exec -d $config_dir + retval=$? + if [ $retval -eq 0 ]; then + log_success_msg + else + log_failure_msg + fi + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc -p $pidfile $prog + retval=$? + if [ $retval -eq 0 ]; then + log_success_msg + rm -f $lockfile + else + log_failure_msg + fi + return $retval +} + +restart() { + stop + start +} + +reload() { + # radiusd may not be capable of a 100% configuration reload depending + # on which loadable modules are in use, if sending the server a + # HUP is not sufficient then use restart here instead. However, we + # prefer by default to use HUP since it's what is usually desired. + # + # restart + + kill -HUP `pidofproc -p $pidfile $prog` +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status -p $pidfile $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + +case "$1" in + start) + rh_status_q && exit 0 + configtest || exit 150 + $1 + ;; + + stop) + rh_status_q || exit 0 + $1 + ;; + + restart) + configtest || exit 150 + $1 + ;; + + reload) + rh_status_q || exit 7 + configtest || exit 150 + $1 + ;; + + force-reload) + configtest || exit 150 + force_reload + ;; + + condrestart|try-restart) + configtest || exit 150 + rh_status_q || exit 0 + restart + ;; + + configtest|testconfig) + configtest || exit 150 + ;; + + debug) + echo -n $"Debugging $prog: " + if rh_status_q; then + log_failure_msg "$prog already running; for live debugging see raddebug(8)" + exit 151 + else + log_success_msg + fi + $exec -X -d $config_dir || exit $? + ;; + + debug-threaded) + echo -n $"Debugging $prog: " + if rh_status_q; then + log_failure_msg "$prog already running; for live debugging see raddebug(8)" + exit 151 + else + log_success_msg + fi + $exec -f -xx -l stdout -d $config_dir || exit $? + ;; + + status) + rh_status + ;; + + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest|debug|debug-threaded}" + exit 2 +esac +exit $? |