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