#!/bin/sh
checkpid(){
	echo "######################################################"
	echo "checkpid"
	pid=`echo $$` 
	pname=`echo $0`
	mypidfile=/tmp/uswc-service.pid
	uswcpidfile=/tmp/uswc.pid
	/etc/init.d/uswc-service enable
	if test -f "$mypidfile";then
		expid=`cat $mypidfile`
		pfalg=`ps|grep "$expid"|grep "$pname"|wc -l`
	fi
	if [ "1" = "$pfalg" ];then
		exit 0
	else
		echo $pid > $mypidfile
	fi
}

inituswc(){
	echo "######################################################"
	echo "inituswc"
	uci get uswc.@uswc[0] >/dev/null 2>&1
	if [ "$?" != "0" ];then
		touch /etc/config/uswc
		uci add uswc uswc
		uci commit uswc
	fi
}

checkuswcenable(){
	echo "###############################################################"
	echo "Check USWC enable..."
	uci get uswc.@uswc[0].enable >/dev/null 2>&1
	if [ "$?" = "0" ];then
		enable=$(uci get uswc.@uswc[0].enable)
		if [ "$enable" = "1" ];then
			echo "Pass!"
		else
			echo "USWC is disabled. Please enable USWC and try again."
			/etc/init.d/uswc disable
			uswc stop
			sleep 30
		fi
	else
		echo "USWC is disabled. Please enable USWC and try again."
		/etc/init.d/uswc disable
		uswc stop
		sleep 30
	fi
}

checkuptime(){
	echo "######################################################"
	echo "checkuptime"
	uswc -u
}

checkrun(){
	echo "######################################################"
	echo "checkrun"
	if test -f "$uswcpidfile";then
		exuswcpid=`cat $uswcpidfile`
		uswcfalg=`ps|grep "$exuswcpid"|grep uswc|wc -l`
	fi
	if [ "1" = "$uswcfalg" ];then
		sleep 5
	else
		/etc/init.d/uswc start
		sleep 5
	fi
}

main(){
	echo "######################################################"
	echo "main"
	while true
	do
		checkuswcenable
		checkrun
		checkuptime	
	done
}

startservice(){
	echo "######################################################"
	echo "startservice"
	sleep 2
	checkpid
	inituswc
	main
}

stopservice(){
	kill -9 `cat /tmp/uswc-service.pid`
}

action=$1
[  -z $1 ] && action=start
case "$action" in
start)
    startservice
    ;;
stop)
    stopservice
    ;;
*)
    echo "
Usage: uswc [<OPTIONS>]

Options:
        start
        stop
        -v, --version Report version number
"
    ;;
esac
