#!/bin/bash
#
# agbs        Startup script for the Access Grid Bridge Server
#
# chkconfig: - 85 15
# description: Bridge service for Access Grid 3.xx
#
# config: /etc/default/agbs.conf
CONFIGFILE=/etc/default/agbs.conf


if [ -f ${CONFIGFILE} ]; then
        . ${CONFIGFILE}
fi

[ -z ${AGBRIDGE_OWNER} ] && {
  echo "AGBRIDGE_OWNER is not set. Set it in ${CONFIGFILE}"
  exit 1
}
[ -z ${AGBRIDGE_HOME} ] && {
  echo "AGBRIDGE_HOME is not set. Set it in ${CONFIGFILE}"
  exit 2
}
[ -z ${AGBRIDGE_EXE} ] && {
  echo "AGBRIDGE_EXE is not set. Set it in ${CONFIGFILE}"
  exit 1
}
[ -z ${AGBRIDGE_NAME} ] && {
  echo "AGBRIDGE_NAME is not set. Set it in ${CONFIGFILE}"
  exit 1
}
[ -z "${AGBRIDGE_LOCATION}" ] && {
  echo "AGBRIDGE_LOCATION is not set. Set it in ${CONFIGFILE}"
  exit 1
}
[ -z ${PEERLISTURL} ] && {
  echo "PEERLISTURL is not set. Set it in ${CONFIGFILE}"
  exit 1
}

prog=Bridge
bs_stdout_log=${AGBRIDGE_HOME}/BridgeStdOut.log
bs_stderr_log=${AGBRIDGE_HOME}/BridgeStdErr.log
lockfile=${AGBRIDGE_LOCKFILE:-/var/lock/agbs}
RETVAL=0

[ -x ${AGBRIDGE_EXE} ] || {
  echo "${AGBRIDGE_EXE} needs to exist and be executable"
  exit 3
}


start() {
        echo -n $"Starting $prog: "
	(cd ${AGBRIDGE_HOME} && su ${AGBRIDGE_OWNER} \
	  -c "${AGBRIDGE_EXE} \
	  -u ${PEERLISTURL} \
	  -n ${AGBRIDGE_NAME} \
	  -l ${AGBRIDGE_LOCATION} \
	  1>>${bs_stdout_log} 2>>${bs_stderr_log}" &)
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

stop() {
	echo -n $"Stopping $prog ... "
	pkill -HUP ${prog}
        RETVAL=$?
	[ $RETVAL -ne 0 ] && {
	  sleep 3
	  echo -n $"... "
	  pkill -TERM ${prog}
	}
	[ $RETVAL -ne 0 ] && {
	  sleep 3
	  echo -n $"... "
	  pkill -KILL ${prog}
        }
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && rm -f ${lockfile}
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	stop
	start
	;;
  *)
	echo $"Usage: $prog {start|stop|restart}"
	exit 1
esac

exit $RETVAL
