#!/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 # Source function library. . /etc/init.d/functions if [ -f /lib/lsb/init-functions ]; then . /lib/lsb/init-functions fi PROG="radiusd" PROGRAM="/usr/sbin/radiusd" PIDFILE="/var/run/radiusd/radiusd.pid" DESCR="FreeRADIUS daemon" if [ -r /etc/default/$PROG ]; then . /etc/default/$PROG fi test -f $PROGRAM || exit 0 check_certs() { if [ ! -f /etc/raddb/certs/server.pem ]; then echo -n "Creating certificates for freeradius..." if sudo -u radiusd /etc/raddb/certs/bootstrap 1> /dev/null 2> /dev/null; then echo "done" else echo "failed!" fi fi } # /var/run may be a tmpfs if [ ! -d /var/run/radiusd ]; then mkdir -p /var/run/radiusd chown radiusd:radiusd /var/run/radiusd fi if [ ! -d /var/log/radius ]; then mkdir -p /var/log/radius touch /var/log/radius/radius.log chown radiusd:radiusd /var/run/radius fi if [ ! -f ${PIDFILE} ]; then touch ${PIDFILE} chown radiusd:radiusd ${PIDFILE} fi export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" ret=0 case "$1" in start) check_certs echo -n "Starting $DESCR" "$PROG" start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $PROGRAM -- $FREERADIUS_OPTIONS || ret=$? [ "$ret" == 0 ] && echo " Success" || echo " Failed" exit $ret ;; stop) echo -n "Stopping $DESCR" "$PROG" if [ -f "$PIDFILE" ] ; then start-stop-daemon --stop --retry=TERM/30/KILL/5 --quiet --pidfile $PIDFILE || ret=$? else echo -n "$PIDFILE not found" ret=1 fi [ "$ret" == 0 ] && echo " Success" || echo " Failed" ;; status) status $PROGRAM; exit $? ;; restart) $0 stop $0 start ;; reload|force-reload) echo -n "Reloading $DESCR" "$PROG" if [ -f "$PIDFILE" ] ; then start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE || ret=$? else echo -n "$PIDFILE not found" ret=1 fi [ "$ret" == 0 ] && echo " Success" || echo " Failed" ;; *) echo "Usage: $0 start|stop|status|restart|force-reload|reload" exit 1 ;; esac exit 0