#!/bin/bash if [ -f /etc/default/kazoo ]; then . /etc/default/kazoo fi RETVAL=0 NAME=kazoo-applications USER=${KAZOO_USER:-kazoo} BIN_FILE=${BIN_FILE:-/opt/kazoo/bin/kazoo} export HOME=${KAZOO_ROOT:-/opt/kazoo} export VMARGS_PATH=${KAZOO_VMARGS:-/etc/kazoo/core/vm.args} if [ -f /etc/sysconfig/kazoo ]; then . /etc/sysconfig/kazoo fi if [ "${NAME}" == "kazoo-applications" ]; then NAME="kazoo_apps" else NAME=${NAME#*-} fi export NAME_ARG="-name ${NAME}" start() { cd ${HOME} if su -s /bin/bash -c "${BIN_FILE} pid" ${USER} > /dev/null 2>&1; then RETVAL=1 return fi mkdir -p /tmp/erl_pipes/${NAME} chown -R ${USER} /tmp/erl_pipes/${NAME} mkdir -p /var/log/kazoo chown -R ${USER} /var/log/kazoo chown -R ${USER} /opt/kazoo /opt/kazoo/.* cd ${HOME} export CODE_LOADING_MODE=interactive if [ "$(whoami)" == "${USER}" ]; then exec ${BIN_FILE} $@ else exec su -s /bin/bash -c "${BIN_FILE} $@" ${USER} fi WAIT_TIME=0 until su -s /bin/bash -c "${BIN_FILE} pid" ${USER} > /dev/null 2>&1 || [ ${WAIT_TIME} -eq 4 ]; do sleep $(( WAIT_TIME++ )) done if ! su -s /bin/bash -c "${BIN_FILE} pid" ${USER} > /dev/null 2>&1; then RETVAL=1 fi } stop() { cd ${HOME} su -s /bin/bash -c "${BIN_FILE} stop" ${USER} if su -s /bin/bash -c "${BIN_FILE} pid" ${USER} > /dev/null 2>&1; then RETVAL=1 fi } restart() { stop start } status() { cd ${HOME} su -s /bin/bash -c "${BIN_FILE} eval 'kz_nodes:status().'" ${USER} | sed \$d if [ $? != 0 ]; then (>&2 echo "${NAME} is not running!") RETVAL=1 fi } connect() { cd ${HOME} COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` export COOKIE_ARG="-setcookie ${COOKIE}" su -s /bin/bash -c "${BIN_FILE} remote_console" ${USER} if [ $? != 0 ]; then (>&2 echo "${NAME} is not running!") RETVAL=1 fi } attach() { cd ${HOME} su -s /bin/bash -c "${BIN_FILE} attach" ${USER} if [ $? != 0 ]; then (>&2 echo "${NAME} is not running!") RETVAL=1 fi } ping() { cd ${HOME} COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` export COOKIE_ARG="-setcookie ${COOKIE}" su -s /bin/bash -c "${BIN_FILE} ping" ${USER} if [ $? != 0 ]; then (>&2 echo "${NAME} is not running!") RETVAL=1 fi } pid() { cd ${HOME} COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` export COOKIE_ARG="-setcookie ${COOKIE}" su -s /bin/bash -c "${BIN_FILE} pid" ${USER} if [ $? != 0 ]; then (>&2 echo "${NAME} is not running!") RETVAL=1 fi } foreground() { cd ${HOME} export CODE_LOADING_MODE=interactive su -s /bin/bash -c "${BIN_FILE} foreground" ${USER} } case "$1" in start) start "start" ;; stop) stop ;; status) status ;; restart) restart ;; connect) connect ;; attach) attach ;; ping) ping ;; pid) pid ;; foreground) foreground ;; *) echo "Usage: $0 (start|stop|restart|status|connect|attach|ping|pid|foreground)" RETVAL=1 esac exit ${RETVAL}