#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/chilli
NAME=chilli
DESC=chilli

START_CHILLI=0

if [ -f /etc/default/chilli ] ; then
   . /etc/default/chilli
fi

if [ "$START_CHILLI" != "1" ] ; then
   echo "Chilli default off. Look at /etc/default/chilli"
   exit 0
fi

test -f $DAEMON || exit 0

. /etc/chilli/functions

MULTI=$(ls /etc/chilli/*/chilli.conf 2>/dev/null)
[ -z "$DHCPIF" ] && [ -n "$MULTI" ] && {
    for c in $MULTI; 
    do
	echo "Found configuration $c"
	DHCPIF=$(basename $(echo $c|sed 's#/chilli.conf##'))
	export DHCPIF
	echo "Running DHCPIF=$DHCPIF $0 $*"
	sh $0 $*
    done
    exit
}

if [ -n "$DHCPIF" ]; then
    CONFIG=/etc/chilli/$DHCPIF/chilli.conf
else
    CONFIG=/etc/chilli.conf
fi

[ -f $CONFIG ] || {
    echo "$CONFIG Not found"
    exit 0
}

check_required

RETVAL=0
prog="chilli"

case "$1" in
  start)
	echo -n "Starting $DESC: "
	/sbin/modprobe tun >/dev/null 2>&1
	echo 1 > /proc/sys/net/ipv4/ip_forward
        
	$0 cleartemp	
	writeconfig
	radiusconfig
	
	test ${HS_ADMINTERVAL:-0} -gt 0 && {	
            (crontab -l 2>&- | grep -v $0
		echo "*/$HS_ADMINTERVAL * * * * $0 radconfig"
		) | crontab - 2>&-
	}

	ifconfig $HS_LANIF 0.0.0.0

	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.$HS_LANIF.pid \
		--exec $DAEMON -- -c $CONFIG
	RETVAL=$?
	echo "$NAME."
	;;
    
    checkrunning)
	check=`start-stop-daemon --start --exec $DAEMON --test`
	if [ x"$check" != x"$DAEMON already running." ] ; then
            $0 start
	fi
	;;
    
    radconfig)
	[ -e $MAIN_CONF ] || writeconfig
	radiusconfig
	;;
    
    restart)
	$0 stop
	sleep 1
	$0 start
	RETVAL=$?
	;;
    
    stop)
	echo -n "Stopping $DESC: "
	
	crontab -l 2>&- | grep -v $0 | crontab -
	
	
	start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/$NAME.$HS_LANIF.pid \
	    --exec $DAEMON 
	echo "$NAME."
	sleep 1 
	$0 cleartemp
	
	;;
    
    reload)
	echo "Reloading $DESC."
	start-stop-daemon --stop --signal 1 --quiet --pidfile \
	    /var/run/$NAME.$HS_LANIF.pid --exec $DAEMON
	;;
    
    condrestart)
	check=`start-stop-daemon --start --exec $DAEMON --test`
	if [ x"$check" != x"$DAEMON already running." ] ; then
            $0 restart
            RETVAL=$?
	fi
	;;
    
    status)
	status chilli
	RETVAL=$?
	;;

    cleartemp)
	TMPCONFIGS=$(ls /var/run/chilli.*.cfg.bin 2> /dev/null)

	for TMPCONF in $TMPCONFIGS; do

		PID=$(basename $TMPCONF ".cfg.bin")
		PID=${PID##*chilli.}
		PROCESSES=$(ps p $PID | wc -l)

		if [ $PROCESSES -lt 2 ]; then
			echo "Bugfix: Removing stale config file $TMPCONF "
			rm $TMPCONF
		fi
	done
	;;
    
    *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|condrestart|status|reload|radconfig}" >&2
	exit 1
	;;
esac

exit 0
