#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org

START=50

USE_PROCD=1
PROG=/usr/sbin/crond

PLW_SIG_STATUS="/tmp/plw_sig_status"
validate_cron_section() {
	uci_validate_section system system "${1}" \
		'cronloglevel:uinteger'
}

cron_config_get()
{ 
	config_get enabled $1 enabled
	if [ "$enabled" == "1" ];then
		config_get start_time $1 start_time
		config_get stop_time $1 stop_time
		config_get weekdays $1 weekdays
		[ -n $start_time ] && {
			s_h=$(echo $start_time |cut  -d ":" -f1)
			s_m=$(echo $start_time |cut  -d ":" -f2)
			echo "$s_m $s_h * * $weekdays wifi_down.sh" >> /etc/crontabs/root
		}
		[ -n $stop_time ] && {
			e_h=$(echo $stop_time |cut  -d ":" -f1)
			e_m=$(echo $stop_time |cut  -d ":" -f2)
			echo "$e_m $e_h * * $weekdays wifi_up.sh" >> /etc/crontabs/root
		}
	fi
}
pasre_cron_config()
{
	sed -i /wifi/d /etc/crontabs/root
	cron_enable=$(uci_get "cron.@cron[0].enable")
	if [ "$cron_enable" == "1" ];then
		config_load cron
		config_foreach cron_config_get rule
	fi
	sed -i 's/Sun/0/g;s/Mon/1/g;s/Tues/2/g;s/Wed/3/g;s/Thur/4/g;s/Fri/5/g;s/Sat/6/g' /etc/crontabs/root
}

pasre_autoupgrade_config()
{
	local start_time
	sed -i /autoupgrade/d /etc/crontabs/root
	
	autoupgrade_enable=`uci get autoupgrade.@autoupgrade[0].enabled`
	autoreboot_enable=`uci get autoupgrade.@autoupgrade[0].auto_reboot_enabled`
	if [ "$autoupgrade_enable" == "1" -o  "$autoreboot_enable" == "1" ];then
        start_time=`uci get autoupgrade.@autoupgrade[0].start_time`
	start_time=`expr $start_time / 60`
        echo "0 $start_time * * * autoupgrade" >> /etc/crontabs/root
	fi
}

pasre_autochannel_config()
{
	local start_time
	sed -i /autochannel/d /etc/crontabs/root
	
	autochannel_enable=`uci get autochannel.@autochannel[0].enabled`
	if [ "$autochannel_enable" == "1" ];then
        interval=`uci get autochannel.@autochannel[0].interval`
        echo "*/$interval * * * * autochannel" >> /etc/crontabs/root
	fi
}


start_service () {
	pasre_cron_config
	pasre_autoupgrade_config
#	pasre_autochannel_config
	
	[ -z "$(ls /etc/crontabs/)" ] && return 1

	loglevel=$(uci_get "system.@system[0].cronloglevel")

	[ -z "${loglevel}" ] || {
		/sbin/validate_data uinteger "${loglevel}"
		[ "$?" -eq 0 ] || {
			echo "validation failed"
			return 1
		}
	}

	mkdir -p /var/spool/cron
	ln -s /etc/crontabs /var/spool/cron/ 2>/dev/null

	procd_open_instance
	procd_set_param command "$PROG" -f -c /etc/crontabs -l ${loglevel:-5}
	procd_close_instance
}

service_triggers()
{
	procd_add_validation validate_cron_section
}
