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.
 
 

198 lines
3.8 KiB

#!/bin/bash
#
# kazoo
#
# chkconfig: 345 85 87
# description: Dubbed a "scalable, distributed, cloud-based" telephony platform
# processname: kazoo
#
# Source function library.
. /etc/rc.d/init.d/functions
NAME=$(basename $0)
KAZOO_ROOT="/opt/kazoo"
KAZOO_BIN="${KAZOO_ROOT}/bin/kazoo"
USER="kazoo"
SWITCH_USER="su ${USER} -s /bin/bash -c"
test -x ${KAZOO_BIN} || exit 0
RETVAL=0
set -e
[ -f /etc/default/${NAME} ] && . /etc/default/${NAME}
[ -f /etc/sysconfig/${NAME} ] && . /etc/sysconfig/${NAME}
if [ "${NAME}" == "kazoo-applications" ]; then
NAME="kazoo_apps"
else
NAME=${NAME#*-}
fi
# export
export HOME="${KAZOO_ROOT}"
export NAME_ARG="-name ${NAME}"
export VMARGS_PATH=/etc/kazoo/core/vm.args
# Check that networking is up.
if [ "${NETWORKING}" = "no" ]; then
exit 0
fi
start() {
echo -n $"Starting ${NAME}: "
if ${SWITCH_USER} "${KAZOO_BIN} pid" > /dev/null 2>&1; then
failure
echo
RETVAL=1
return
fi
cd ${KAZOO_ROOT}
export CODE_LOADING_MODE=interactive
mkdir -p /tmp/erl_pipes/${NAME}
chown ${USER} /tmp/erl_pipes/${NAME}
mkdir -p /var/log/kazoo
chown ${USER} /var/log/kazoo
chown ${USER} -R /opt/kazoo /opt/kazoo/.*
${SWITCH_USER} "${KAZOO_BIN} start" > /dev/null 2>&1;
WAIT_TIME=0
until ${SWITCH_USER} "${KAZOO_BIN} pid" > /dev/null 2>&1 || [ $NEXT_WAIT_TIME -eq 4 ]; do
sleep $(( NEXT_WAIT_TIME++ ))
done
if ${SWITCH_USER} "${KAZOO_BIN} pid" > /dev/null 2>&1; then
success
else
failure
RETVAL=1
fi
echo
}
stop() {
echo -n $"Stopping ${NAME}: "
cd ${KAZOO_ROOT}
${SWITCH_USER} "${KAZOO_BIN} stop" > /dev/null 2>&1;
if ${SWITCH_USER} "${KAZOO_BIN} pid" > /dev/null 2>&1; then
failure
RETVAL=1
else
success
fi
echo
}
restart() {
stop
start
}
status() {
cd ${KAZOO_ROOT}
${SWITCH_USER} "${KAZOO_BIN} eval 'kz_nodes:status().'" | sed \$d
if [ $? != 0 ]; then
(>&2 echo "${NAME} is not running!")
RETVAL=1
fi
}
connect() {
cd ${KAZOO_ROOT}
COOKIE=`${SWITCH_USER} "${KAZOO_BIN} eval 'erlang:get_cookie()'"`
export COOKIE_ARG="-setcookie ${COOKIE}"
${SWITCH_USER} "${KAZOO_BIN} remote_console"
if [ $? != 0 ]; then
(>&2 echo "${NAME} is not running!")
RETVAL=1
fi
}
attach() {
cd ${KAZOO_ROOT}
${SWITCH_USER} "${KAZOO_BIN} attach"
if [ $? != 0 ]; then
(>&2 echo "${NAME} is not running!")
RETVAL=1
fi
}
ping() {
cd ${KAZOO_ROOT}
COOKIE=`${SWITCH_USER} "${KAZOO_BIN} eval 'erlang:get_cookie()'"`
export COOKIE_ARG="-setcookie ${COOKIE}"
${SWITCH_USER} "${KAZOO_BIN} ping"
if [ $? != 0 ]; then
(>&2 echo "${NAME} is not running!")
RETVAL=1
fi
}
pid() {
cd ${KAZOO_ROOT}
COOKIE=`${SWITCH_USER} "${KAZOO_BIN} eval 'erlang:get_cookie()'"`
export COOKIE_ARG="-setcookie ${COOKIE}"
${SWITCH_USER} "${KAZOO_BIN} pid"
if [ $? != 0 ]; then
(>&2 echo "${NAME} is not running!")
RETVAL=1
fi
}
foreground() {
cd ${KAZOO_ROOT}
export CODE_LOADING_MODE=interactive
${SWITCH_USER} "${KAZOO_BIN} foreground"
}
console() {
cd ${KAZOO_ROOT}
export CODE_LOADING_MODE=interactive
${SWITCH_USER} "${KAZOO_BIN} console"
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
connect)
connect
;;
attach)
attach
;;
ping)
ping
;;
pid)
pid
;;
foreground)
foreground
;;
console)
console
;;
*)
echo $"Usage: $0 (start|stop|restart|status|connect|attach|ping|pid|foreground|console)"
exit 1
esac
exit $RETVAL