#! /bin/sh
#
# radiusd	Start the radius daemon.
#
#		Use ntsysv or your favorite runlevel editor to start
#		radiusd	at runlevels 3 and 5 to activate radius
#
# chkconfig: 345 98 10
# description: Activate/Deactivate Radius services

RADIUSD=/usr/sbin/radiusd
RADRELAY=/usr/sbin/radrelay
DESC="Cistron radius server"
LOCKF=/var/lock/subsys/radiusd

# These are the defaults.
RADIUS_ARGS="-y"
# This is useful if you want to replicate accounting packets
# to another radius server - see README.radrelay
#RADIUS_ARGS="-y -w -F %N/detail -F detail.rep"
#RADRELAY_ARGS="-a /var/log/radacct XX.SERVER.HERE.XX detail.rep"

start() {
	# start daemon
	if [ -x "$RADRELAY" ] && [ -n "$RADRELAY_ARGS" ]
	then
		echo -n $"Starting radius relay server: "
		daemon $RADRELAY $RADRELAY_ARGS
	fi

	echo -n $"Starting RADIUSD server: "
	daemon $WATCHER $RADIUSD $RADIUS_ARGS
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && touch $LOCKF && touch /var/log/radutmp
	return $RETVAL
}

rhstatus() {
	status radiusd
}

stop() {
	# stop daemon
	if [ -x "$RADRELAY" ] && [ -n "$RADRELAY_ARGS" ]
	then
		echo -n $"Stopping radius relay server: "
		killproc $RADRELAY 2>/dev/null
	fi

	echo -n $"Stopping RADIUSD server: "
	if [ -n "$WATCHER" ]; then
		killproc $WATCHER 2>/dev/null
	else
		killproc $RADIUSD 2>/dev/null
	fi
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && rm -f $LOCKF && rm -f /var/log/radutmp && rm -f /var/run/radiusd.pid
}

restart() {
	stop
	sleep 3
	start
}

# Source function library.
. /etc/rc.d/init.d/functions

test -f $RADIUSD || exit 0
test -f /etc/raddb/clients || exit 0

case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  reload)
	echo $"Reloading radius configuration files."
	killproc $RADIUSD -1
	;;
  restart)
	restart
	;;
  status)
	rhstatus
	;;
  condrestart)
	[ -f $LOCKF ] && restart || :
	;;
  *)
	echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
	exit 1
esac

exit 0
