#!/bin/sh

# VERSION=1

if [ -x /usr/local/bin/beroconf ]; then
	BEROCONF=/usr/local/bin/beroconf
else
	BEROCONF=/usr/fallback/beroconf
fi

CIFS_ENABLED=`${BEROCONF} get root cifs-enabled | grep -v failed`
CIFS_UNC=`${BEROCONF} get root cifs-unc | grep -v failed`
CIFS_USR=`${BEROCONF} get root cifs-user | grep -v failed`
CIFS_PWD=`${BEROCONF} get root cifs-password | grep -v failed`
CIFS_DOM=`${BEROCONF} get root cifs-domain | grep -v failed`
CIFS_MNT=/var/log
CIFS_TST=${CIFS_MNT}/cifs_test.txt

CIFS_MOD=/usr/local/modules/cifs.ko
NLS_MOD=/usr/local/modules/nls_base.ko

function cifs_mount {

	cifs_mnt="/bin/mount -t cifs ${CIFS_UNC//\//\\} ${CIFS_MNT} -o username=${CIFS_USR},password=${CIFS_PWD}"

	if [ ! -z ${CIFS_DOM} ]; then
		cifs_mnt="${cifs_mnt},domain=${CIFS_DOM}"
	fi

	${cifs_mnt}
}

function log_switch {

	if [ "${1}" = "cifs" ]; then
		if [ -L ${CIFS_MNT} ]; then
			mount -oremount,rw /
			rm -rf ${CIFS_MNT}
			mkdir -p ${CIFS_MNT}
			mount -oremount,ro /
		fi
	elif [ "${1}" = "tmp" ]; then
		if [ ! -L ${CIFS_MNT} ]; then
			mount -oremount,rw /
			rm -rf ${CIFS_MNT}
			ln -s /tmp ${CIFS_MNT}
			mount -oremount,ro /
		fi
	fi
}

case "${1}" in
	start)
		if [ "${CIFS_ENABLED}" != "1" ]; then
			echo " * Mounting ${CIFS_MNT} to a CIFS-share disabled in root.db, leaving."
			log_switch "tmp"
			exit 0
		fi

		if [ ! -f ${CIFS_MOD} ] || [ ! -f ${NLS_MOD} ]; then
			echo " * CIFS kernel modules not found, leaving."
			log_switch "tmp"
			exit 1
		fi

		insmod ${NLS_MOD}
		insmod ${CIFS_MOD}

		if [ -z ${CIFS_UNC} ] || [ -z ${CIFS_USR} ] || [ -z ${CIFS_PWD} ]; then
			echo " * CIFS credentials incomplete, leaving."
			log_switch "tmp"
			exit 1
		fi

		echo -n " * Mounting /var/log to ${CIFS_UNC}: "
		log_switch "cifs"
		cifs_mount

		touch ${CIFS_TST}
		if [ ! -f ${CIFS_TST} ]; then
			log_switch "tmp"
			echo "Error (could not create file)!"
			exit 1
		fi
		rm -f ${CIFS_TST}
		echo "Done."
		exit 0
	;;
	stop)
		echo -n " * Unmounting ${CIFS_MNT} from ${CIFS_UNC}: "
		if [ "${CIFS_ENABLED}" = "1" ]; then
			umount ${CIFS_MNT}
		else
			log_switch "tmp"
		fi
		echo "Done."
	;;
	*)
		echo "Usage: ${0} [start|stop]"
		exit 1
	;;
esac
