#!/bin/bash
# VERSION=6
# CHANGES="merge old /usr/local/init/S65cloud to /etc/init.d/S65cloud"

# global variables #
export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/fallback"
BEROCONF=/usr/fallback/beroconf

function log () {
	echo "[init_cloud] ${1}"
}

function setCron() {
	# remove old cloud task from cron
	if [ ! -z "$(crontab -l | grep 'cloud-api')" ]; then
		crontab -l | grep -v 'cloud-api' > /tmp/crontab.cloud
		crontab /tmp/crontab.cloud
		rm -f /tmp/crontab.cloud
	fi

	# remove new cloud task to cron
	if [ ! -z "$(crontab -l | grep 'cloud api')" ]; then
		# if a cron-job for cloud api is already defined, remove it
		crontab -l | grep -v 'cloud api' > /tmp/crontab.cloud
		crontab /tmp/crontab.cloud
		rm -f /tmp/crontab.cloud
	fi

	# get the interval for the cron-job (in minutes)
	job_interval=$(${BEROCONF} get root cloud_interval | grep -v failed)
	if [ -z "${job_interval}" ]; then
		job_interval=2
	fi

	# save current crontab
	crontab -l > /tmp/crontab.cloud

	# add cloud api entry
	echo "*/${job_interval} * * * * /usr/fallback/cloud api" >> /tmp/crontab.cloud

	# apply changes
	crontab /tmp/crontab.cloud
	rm -f /tmp/crontab.cloud
}

function start () {
	## update from berocloud
	if [[ "$(${BEROCONF} get root boot_fwupdate)" = "1" ]] && [[ "$(${BEROCONF} get root cloud_enable)" = "1" ]]; then
		/usr/bin/env -i bash -c "/usr/fallback/cloud update" # new way	
	fi

	## boot in normal/update/recovery-mode
	setCron
	log "Started."

	## startign provisioning to recover the device
	if [[ "$(${BEROCONF} get root TLSv1.2-disabled)" = "ERROR_TLS_DISABLED" ]] && [[ "$(${BEROCONF} get root cloud_enable)" = "1" ]]; then
		/etc/init.d/S45provisioning recover &
		echo $! > /tmp/provisioning-recover.pid
	fi
}

function stop () {
	# remove cloud api from crontab
	crontab -l | grep -v 'cloud api' > /tmp/crontab.cloud
	crontab /tmp/crontab.cloud
	rm -f /tmp/crontab.cloud
	log "Stopped."
}

case "${1}" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		stop
		sleep 1
		start
		;;
	*)
		echo "Usage: ${0} [start|stop|restart]" >&2
		exit 1
		;;
esac

exit 0
