#!/bin/sh
#
#	@author Forrest Lin
#

PIDFILE=/var/run/sncfgd.pid
RESETFILE=/mnt/factoryreset
CFGFILE=/mnt/sncfg.bak

if [ -f $PIDFILE ] ; then
	PID=`cat $PIDFILE`
	if [ -z "$PID" ] || [ ! -d /proc/$PID ] ; then
		rm -f $PIDFILE
	fi
fi

if [ ! -f /mnt/default.cfg ]; then
	echo "Generate /mnt/defualt.cfg"
	/sbin/apinfo > /mnt/default.cfg
fi

factory_reset_check() {
	if [ -f $RESETFILE ] ; then
		echo -n "reset to factory default ..."
		/sbin/sncfg default
		ret=$?
		if [ $ret = 0 ] ; then
			echo " OK"
		else
			echo " Failed"
		fi
		rm -f $RESETFILE
		reboot
	fi
}

cfgfile_restore_check() {
	if [ -f $CFGFILE ] ; then
		echo -n "restoring configuration ..."
		/sbin/sncfg restore $CFGFILE
		ret=$?
		if [ $ret = 0 ] ; then
			echo " OK"
		else
			echo " Failed"
		fi
		rm -f $CFGFILE
		reboot
	fi
}

usage() {
	echo "Usage: $0 {start|stop|reload}"
	exit 1
}

start() {
	if [ -f $PIDFILE ] ; then
		echo -n "sncfgd is already running ... "
		ret=0
	else
		/sbin/sncfgd
		ret=$?
		if [ $ret = 0 ] ; then
			factory_reset_check
			cfgfile_restore_check
		fi
	fi
}	
	
stop() {
	if [ -f $PIDFILE ] ; then
		kill `cat $PIDFILE` > /dev/null 2>&1
		ret=$?
		rm -f $PIDFILE
	else
		ret=1
	fi
}

case "$1" in
	start)
		echo -n "[Starting] sncfgd ... "
		start
	;;
	stop)
		echo -n "[Stoping] sncfgd ... it must not be stopped, do you know what you are doing !? ... "
		stop
	;;
	reload)
		echo -n "[Reloading] sncfgd ... it must not be reloaded, do you know what you are doing !? ... "
		stop
		if [ $ret = 0 ] ; then
			sleep 1
		fi
		start
	;;
	*)
		usage
	;;
esac

if [ $ret = 0 ] ; then
	echo " OK"
	exit 0
else
	echo " FAIL"
	exit 1
fi
