#!/bin/bash
# VERSION=1

BEROCONF="/usr/fallback/beroconf"

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

function start () {
	# if cloud disabled, leave
	if [ "$(${BEROCONF} get root redirect_cfg | grep -v failed)" == "off" ]; then
		log "Disabled."
		exit 0
	fi
	# if curl not working, setting the fallback
	php -v 1>/dev/null 2>/tmp/dummy
	if [ -s "/tmp/dummy" ]; then
		mount -o remount,rw /
		rm -f /pkginfo/VERSION.curl
		rm -f /lib/libcurl.so.4.1.1
		rm -f /usr/lib/php/curl.so
		cp /usr/fallback/lib/libcurl.so.4.1.1 /lib
		cp /usr/fallback/lib/curl.so /usr/lib/php/curl.so
		${BEROCONF} set root TLSv1.2-disabled ERROR_TLS_DISABLED
		mount -o remount,ro /
	fi
	rm -f /tmp/dummy
	/usr/bin/env -i bash -c "/usr/php/redirect.php"
	log "Started."
}

function stop () {
	log "Stopped."
}

# do not start if this card needs to be produced
if [ "$(${BEROCONF} get root need_prod | grep -v failed)" = "1" ]; then
	log "Need production. exit"
	exit 0
fi

# do not start of this card is factory-resetted
if [ -f /sys/class/beronet/gateway/resetjumper ] && [ "$(cat /sys/class/beronet/gateway/resetjumper)" = "1" ]; then
	log "Factory-resetted. exit"
	exit 0
fi

# do not start if this card is in update-mode
if [ "$(${BEROCONF} get root boot_fwupdate | grep -v failed)" = "1" ]; then
	log "Update-mode. exit"
	exit 0
fi

# do not start if this card is in recovery-mode
if [ "$(${BEROCONF} get root boot_recoverymode | grep -v failed)" = "1" ]; then
	# only if TLSv1.2 works
	if [ "$(${BEROCONF} get root TLSv1.2-disabled | grep -v failed)" = "" ]; then
		log "Recovery-mode. exit"
		exit 0
	fi
	# otherwise: try to recover device using redirect service via berocloud
fi

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

exit 0
