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

START=50

USE_PROCD=1
PROG=/usr/sbin/crond

validate_cron_section() {
	uci_validate_section system system "${1}" \
		'cronloglevel:uinteger'
}

start_service() {
	sed -i '/telnet/d' /etc/crontabs/root >/dev/null 2>&1
	sed -i '/dropbear/d' /etc/crontabs/root >/dev/null 2>&1
	[ -x /sbin/autoupgrade ] && {
		local upgrade_time
		upgrade_time="$(uci_get "system.@system[0].upgrade_time")"
		[ -n "$upgrade_time" ] || upgrade_time=3
		sed -i '/autoupgrade/d' /etc/crontabs/root >/dev/null 2>&1
		echo "0 $upgrade_time * * * autoupgrade" >> /etc/crontabs/root
	}

	[ -z "$(ls /etc/crontabs/)" ] && return 1

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

	[ -z "${loglevel}" ] || {
		/sbin/validate_data uinteger "${loglevel}" 2>/dev/null
		[ "$?" -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}"
	for crontab in /etc/crontabs/*; do
		 procd_set_param file "$crontab"
	done
	procd_set_param respawn
	procd_close_instance
}

service_triggers() {
	procd_add_validation validate_cron_section
}
