#!/usr/bin/env bash
#
# Copyright 2008, Centova Technologies Inc.
#
# Starts or stops the Centova Cast privilege separation daemon.
#
# DO NOT USE THIS SCRIPT UNLESS YOU KNOW WHAT YOU'RE DOING.  Stopping the
# daemon when privsep mode is enabled will render the web interface unusable.
#
# Usage:
#   ./castdctl.sh start		- start the daemon
#   ./castdctl.sh stop		- stop the daemon
#   ./castdctl.sh restart	- restart the daemon
#

[ $# -lt 1 ] && echo "Usage: $0 <start|stop>" && exit 1

SYSPATH=`dirname $0`/../system
RUNASCC="$SYSPATH/runascc/runascc"

START=0
if [ "$1" == "start" ]; then
	START=1
	echo -n "Starting cast daemon ... "
elif [ "$1" == "stop" ]; then
	echo -n "Stopping cast daemon ... "
	START=0
elif [ "$1" == "restart" ]; then
	$0 stop
	$0 start
	exit $?
else
	echo "Sorry, this script does not speak gibberish.  Specify either 'start' or 'stop'."
	exit 1
fi

# find any running castd process
PIDFILE="$SYSPATH/../vhosts/castd.pid"
CASTDPID=`cat $PIDFILE 2>/dev/null`
RUNNING=0
[[ ! -z "$CASTDPID" && -d "/proc/$CASTDPID" ]] && RUNNING=1

# stop castd if needed
if [ $START -gt 0 ]; then
	[ $RUNNING -gt 0 ] && echo "already running" && exit 0

	$SYSPATH/runascc/spawn $SYSPATH/runascc/castd > $PIDFILE

	VHOSTSOWNER=`stat -c "%U:%G" "$SYSPATH/../vhosts"`
	chown $VHOSTSOWNER $PIDFILE
	
	sleep 1
	CASTDPID=`cat $PIDFILE 2>/dev/null`
	if [ ! -d "/proc/$CASTDPID" ]; then
		echo "failed"
		rm -f $PIDFILE
		exit 1
	fi
	
	echo "ok"

else
	[ $RUNNING -eq 0 ] && echo "not running" && exit 0
	kill -9 $CASTDPID
	echo "ok"
fi

exit 0
