#!/bin/sh

SYSLOG=busybox-syslog.service
KLOGD=busybox-klogd.service
CONFFILE=/etc/syslog/syslog.conf
CONFFILE_TMP=/tmp/syslog.conf

do_start() {
	systemctl start $SYSLOG
}

do_stop() {
	systemctl stop $KLOGD
	systemctl stop $SYSLOG
}

config_init() {
	if [ ! -f "${CONFFILE}" ]; then
		touch "${CONFFILE}"
		echo -e "*.debug\t\t/var/log/syslog.log\n" > ${CONFFILE}
	fi
}

enable_split() {
	if [ ! -d "${SCONFDIR}" ]; then
		mkdir -p "${SCONFDIR}"
	fi
	if [ ! -f "${SPLITFLAG}" ]; then
		touch "${SPLITFLAG}"
	fi
	if [ -z "$SD_DIR" -o ! -z "$RO" ]; then
		echo -e "*.debug\t\t/var/log/syslog.log\n" > ${CONFFILE}
		echo -e "local0.*\t\t/var/log/main.log\n" >> ${CONFFILE}
		echo -e "local1.*\t\t/var/log/system.log\n" >> ${CONFFILE}
		echo -e "local2.*\t\t/var/log/radio.log\n" >> ${CONFFILE}
	else
		echo -e "*.debug\t\t/run/media/${SD_DIR}/syslog.log\n" > ${CONFFILE}
		echo -e "local0.*\t\t/run/media/${SD_DIR}/main.log\n" >> ${CONFFILE}
		echo -e "local1.*\t\t/run/media/${SD_DIR}/system.log\n" >> ${CONFFILE}
		echo -e "local2.*\t\t/run/media/${SD_DIR}/radio.log\n" >> ${CONFFILE}
	fi
}

disable_split() {
	if [ -f "${SPLITFLAG}" ]; then
		rm -rf "${SPLITFLAG}"
	fi
	if [ -z "$SD_DIR" -o ! -z "$RO" ]; then
		echo -e "*.debug\t\t/var/log/syslog.log\n" > ${CONFFILE}
	else
		echo -e "*.debug\t\t/run/media/${SD_DIR}/syslog.log\n" > ${CONFFILE}
	fi
}

do_set_level() {
	LOGLEVEL="debug"
	case $1 in
		0)
			LOGLEVEL="emerg" ;;
		1)
			LOGLEVEL="alert" ;;
		2)
			LOGLEVEL="crit" ;;
		3)
			LOGLEVEL="err" ;;
		4)
			LOGLEVEL="warning" ;;
		5)
			LOGLEVEL="notice" ;;
		6)
			LOGLEVEL="info" ;;
		7)
			LOGLEVEL="debug" ;;
	esac
	
	config_init

	cp -a ${CONFFILE} ${CONFFILE_TMP} 
	sed -i "s/^\*\.[a-z*]*/\*\.${LOGLEVEL}/g" ${CONFFILE_TMP}
	cp -a ${CONFFILE_TMP} ${CONFFILE}

	echo "set level $LOGLEVEL"
}

do_set_output() {
	config_init

	cp -a ${CONFFILE} ${CONFFILE_TMP}
	sed -i "s:^\(\*\.[a-z]*[[:space:]]*\)\(.*\)$:\1${1}:g" ${CONFFILE_TMP}
	cp -a ${CONFFILE_TMP} ${CONFFILE}
}

SD_DIR=`mount | grep mmcblk1 | sed "s/^\/dev\/\(mmcblk1[p1]*\)[[:space:]]*.*$/\1/g"`
RO=`mount | grep mmcblk1 | grep \(ro,`

if [ -f /mnt/vbox_ip ]; then # APSIM project ONLY
	if [ -f /var/log/syslog.log ]; then
		cp /var/log/syslog.log /mnt/ -f
	fi
	do_set_output /mnt/syslog.log
	exec /sbin/syslogd $@
else
	if [ -z "$SD_DIR" -o ! -z "$RO" ]; then
		echo "syslog-start: sd card not found or readonly"
		do_set_output /var/log/syslog.log
		exec /sbin/syslogd $@
	else
		echo "syslog-start: sd card is ready"
		if [ -f /var/log/syslog.log ]; then
			cp /var/log/syslog.log /run/media/$SD_DIR/ -f
		fi
		do_set_output /run/media/$SD_DIR/syslog.log
		exec /sbin/syslogd $@
	fi
fi

