#!/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 
 |