#! /bin/sh /etc/rc.common
### BEGIN INIT INFO
# Provides:          chilli
# Required-Start:    $remote_fs $syslog $network
# Required-Stop:     $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start CoovaChilli daemon at boot time
# Description:       Enable CoovaChilli service provided by daemon.
### END INIT INFO

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


START_CHILLI=1

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"

load_config(){
	. /lib/functions.sh
	config_load chilli
	local cfg=chilli
	local radiusserver1 radiusserver2 radiusauthport radiusacctport radiussecret radiusnasid uamhomepage uamserver uamsecret
	config_get radiusserver1 $cfg radiusserver1 
	config_get radiusserver2 $cfg radiusserver2 
	config_get radiusauthport $cfg radiusauthport
	config_get radiusacctport $cfg radiusacctport
	config_get radiussecret $cfg radiussecret
	config_get radiusnasid $cfg radiusnasid
	config_get uamhomepage $cfg uamhomepage
	config_get uamserver $cfg uamserver
	config_get uamsecret $cfg uamsecret
	
	#echo "radiusserver1=$radiusserver1" >/dev/console
#generate /etc/chilli/config
cat << EOF
HS_UAMPORT=3990                                                                                                                     
HS_DNS_DOMAIN=    
HS_DNS1=    
HS_DNS2=    
HS_UAMALLOW=    
HS_UAMLOGOUT_IP=1.1.1.1    
HS_DEFINTERIMINTERVAL=300    
HS_ACCTUPDATE=on    
HS_CHILLIXML=on    
HS_MODE=hotspot    
HS_TYPE=chillispot
HS_WWWDIR=/etc/chilli/www   
HS_WWWBIN=/etc/chilli/wwwsh    
HS_PROVIDER=Coova    
HS_PROVIDER_LINK=http://www.coova.org/    
HS_LOC_NAME=HotSpot    
HS_UAMHOMEPAGE=$uamhomepage   
HS_WISPRLOGIN=    
HS_UAMDOMAIN=NULL    
HS_UAMLOGOUT_DOMAIN=ap.logout
HS_UAMSECRET=$uamsecret
HS_RADIUS=$radiusserver1
HS_RADIUS2=$radiusserver2
HS_RADSECRET=$radiussecret
HS_RADAUTH=$radiusauthport
HS_RADACCT=$radiusacctport
HS_NASID=$radiusnasid
HS_SSID=coova1030
HS_ADMUSR=NULL    
HS_ADMPWD=NULL    
HS_WANIF=eth1    
HS_LANIF=br-lan    
HS_NETWORK=192.168.0.0    
HS_NETMASK=255.255.255.0    
HS_DNS1=8.8.8.8    
HS_DNS2=114.114.114.114
HS_NASIP=192.168.1.8    
HS_UAMLISTEN=192.168.0.1    
HS_UAMFORMAT=$uamserver
EOF
	

}

start(){
	chilli_enable="$(uci_get chilli.chilli.enable)"
	[ $chilli_enable = "0" ] && return 
	echo "start chilli" >/dev/console

	load_config >/etc/chilli/config

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

	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

        $DAEMON -c $CONFIG --pidfile /var/run/$NAME.$HS_LANIF.pid &
        sleep 5
}

radconfig(){
	[ -e $MAIN_CONF ] || writeconfig
	radiusconfig
}

restart(){
	echo "restart $chilli_enable" > /dev/console
	stop 
	chilli_enable="$(uci_get chilli.chilli.enable)"
	[ $chilli_enable = "0" ] && return 
	sleep 1
	start
	RETVAL=$?
}

stop(){
	echo -n "Stopping $DESC: " >/dev/console
	crontab -l 2>&- | grep -v $0 | crontab -
        kill $(cat /var/run/$NAME.$HS_LANIF.pid)
        rm /var/run/$NAME.$HS_LANIF*
        sleep 3
}

reload(){
        stop
        sleep 1
        start
        RETVAL=$?
}

status(){
	status chilli
	RETVAL=$?
}


