#!/bin/sh
#
# This is the PrimeBase server control script. 
# It should be called when the machine is being booted
# or shutdown with as 'PrimeBaseCtl [stop|start]'.
#
PRIMEBASEHOME=/usr/local/primebase
cmd=$1


LOG=/tmp/PrimeBase.log
if [ ! -f $LOG ]
then
        echo "PrimeBase Installer log." > $LOG 
        chmod 777 $LOG 

fi


echo "==========================================" >> $LOG
date >> $LOG
#----------------------------------------------------
#stop_start_server: cmd dstype location run_as
stop_start_server() {

	if [ ! -d $3 ]
	then
		echo "Server location does not exist: $3" >> $LOG
		return
	fi
	
	server_was_running=0
	
	PID_FILE="$3/.$2.pid"
	
	if [ -f $PID_FILE ]
	then
                pid=`cat $PID_FILE`
		if [ `uname` = "Rhapsody" ]
		then
                	ps $pid | grep $pid >> /dev/null
		else
                	ps -p$pid | grep $pid >> /dev/null
		fi
		if [ $? -eq 0 ]
		then
			server_was_running=1
		fi
	fi


	if [ $server_was_running -eq 1 -a $1 = "start" ]
	then
		return
	fi
	
	if [ $server_was_running -eq 0 -a $1 = "stop" ]
	then
		return
	fi
	
	
	case $2 in
		"DS" )
			if [ $1 = "start" ]
			then
				echo "Starting Data Server in location $3 as $4" >> $LOG
				startstopscript="start_data_server"
			else
				startstopscript="stop_data_server"
			fi
		;;
		
		"AS" )
			if [ $1 = "start" ]
			then
				echo "Starting Standard Application Server in location $3 as $4" >> $LOG
				startstopscript="start_standard_server"
			else
				startstopscript="stop_application_server"
			fi
		;;
		
		"OS" )
			if [ $1 = "start" ]
			then
				echo "Starting Open Server in location $3 as $4" >> $LOG
				startstopscript="start_open_server"
			else
				startstopscript="stop_open_server"
			fi
		;;
	esac
	
	if [ "$startstopscript" != "" ]
	then
		if [ "$me" = "$4" ]
		then
			$3/$startstopscript
		else
			su - $4 -c $3/$startstopscript
		fi
	fi
}
#---------------------------------------------------------------------------------

case $cmd in

	"start" | "stop" )
	
		list=`awk '{if (( NF == 5) && ( $1 != "#" ) && ( $5 = "Yes" ) ) {print $1, $3, $4; }}' $PRIMEBASEHOME/pbstab`
		
		set $list
		cnt=0
		while [ $# -ne 0 ]
		do
		
		    stop_start_server $cmd $1 $2 $3
			shift 3
		done
	;;
	
	
	* )
		echo "usage: " $0 " [start|stop]"
	;;
esac
