#!/bin/sh
. $IPKG_INSTROOT/etc/functions.sh
COMMAND=$1

if [ "$COMMAND" = "apply" ]
then
	uci commit configuration
	config_load configuration
	config_get status automatic status
	if [ "$status" = "enable" ]; then
		echo "enable"
		sed -i '/cfg_schedule/d' /etc/crontabs/root
		config_get interval automatic interval
		config_get date_time automatic date_time
		config_get date_day automatic date_day
		config_get date_weekday automatic date_weekday
		local cron_min=`echo $date_time | awk '{FS=":"}{print $2}'`
		local cron_hour=`echo $date_time | awk '{FS=":"}{print $1}'`
		case "$interval" in
			daily )
				echo "" >> /etc/crontabs/root
				echo $cron_min $cron_hour "* * * /sbin/cfg_schedule dobackup" >> /etc/crontabs/root
				;;
			monthly )
				echo "" >> /etc/crontabs/root
				echo $cron_min $cron_hour $date_day "* * /sbin/cfg_schedule dobackup" >> /etc/crontabs/root
				;;
			weekly )
				local date_weekday2
				case "$date_weekday" in
					Sun ) date_weekday2=0;;
					Mon ) date_weekday2=1;;
					Tue ) date_weekday2=2;;
					Wed ) date_weekday2=3;;
					Thu ) date_weekday2=4;;
					Fri ) date_weekday2=5;;
					Sat ) date_weekday2=6;;
					*   ) echo "wrong weekday";;
				esac
				echo "" >> /etc/crontabs/root
				echo $cron_min $cron_hour "* *" $date_weekday2 "/sbin/cfg_schedule dobackup" >> /etc/crontabs/root
				;;
			* )
				echo "wrong interval"
				;;
		esac
	else
		echo "disable"
		# delete crontab if exist
		sed -i '/cfg_schedule/d' /etc/crontabs/root
	fi
	sync
	# restart cron
	/etc/init.d/cron stop
	/etc/init.d/cron start
	exit 0;
fi

if [ "$COMMAND" = "dobackup" ]
then
	CONFIG_COUNT=`ls -1 /data/config_backup | grep tar.gz | wc -l`
	#echo "CONFIG_COUNT=" $CONFIG_COUNT
	if [ $CONFIG_COUNT -ge 20 ]
	then
		echo "Max 20 config backups, delete earliest auto backup."
		AUTO_BACKUP_COUNT=`ls -1 /data/config_backup | grep autobackup | wc -l`
		if [ $AUTO_BACKUP_COUNT -eq 0 ]
		then
			echo "Max 20 config backups, can not create local backup."
			exit 0
		else
			# delete earliest
			local delete_name=`ls -1 /data/config_backup | grep tar.gz | head -n 1 | awk '{FS=".tar.gz"}{print $1}'`
			rm -f /data/config_backup/$delete_name.tar.gz
			rm -f /data/config_backup/$delete_name.txt
			/sbin/cfg_local backup auto
		fi
	else
		/sbin/cfg_local backup auto
	fi
	sync
	exit 0
fi
