You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

175 lines
2.9 KiB

#!/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}