Subversion Repositories ALCASAR

Rev

Rev 40 | Go to most recent revision | Blame | Last modification | View Log

#!/bin/sh
#
# chilli      CoovaChilli init
#
# chkconfig: 2345 65 35
# description: CoovaChilli

# Source function library.

daemon=
killproc=killall

[ -e /etc/rc.d/init.d/functions ] && {
    . /etc/rc.d/init.d/functions
    daemon=daemon
    killproc=killproc
}

[ -e /etc/sysconfig/network ] && {
    . /etc/sysconfig/network
    [ ${NETWORKING} = "no" ] && exit 0
}

[ -f /usr/sbin/chilli ] || exit 0

. /etc/chilli/functions

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

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

[ -f $CONFIG ] || {
    gprintf "%s Not found\n" "$CONFIG"
    exit 0
}

check_required

RETVAL=0
prog="chilli"

case $1 in
    start)
        gprintf "Starting %s: " "$prog"

        /sbin/modprobe tun >/dev/null 2>&1
        echo 1 > /proc/sys/net/ipv4/ip_forward

        [ -e /dev/net/tun ] || {
            (cd /dev; 
                mkdir net; 
                cd net; 
                mknod tun c 10 200)
        }

        writeconfig
        radiusconfig

        test ${HS_ADMINTERVAL:-0} -gt 0 && {    
            (crontab -l 2>&- | grep -v $0
                gprintf "*/%s * * * * %s radconfig\n" "$HS_ADMINTERVAL" "$0"
                ) | crontab - 2>&-
        }
        
        ifconfig $HS_LANIF 0.0.0.0
        $daemon /usr/sbin/chilli -c $CONFIG &
        RETVAL=$?
        echo
        ;;
    
    radconfig)
        [ -e $MAIN_CONF ] || writeconfig
        radiusconfig
        ;;

    reload)
        killall -HUP chilli
        ;;

    restart)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
    
    status)
        status chilli
        RETVAL=$?
        ;;
        
    stop)
        gprintf "Shutting down %s: " "$prog"

        crontab -l 2>&- | grep -v $0 | crontab -

        [ -f /var/run/chilli.$HS_LANIF.pid ] && { 
            kill $(cat /var/run/chilli.$HS_LANIF.pid)
            RETVAL=$?
            [ $RETVAL = 0 ] && {
                rm -f /var/run/chilli.$HS_LANIF.pid 2>/dev/null
            }
        }

        #$killproc chilli

        echo
        ;;
    
    *)
        gprintf "Usage: %s {start|stop|restart|reload|radconfig}\n" "$0"
        exit 1
esac

exit $?