diff --git a/system/init.d/kazoo-generic.redhat b/system/init.d/kazoo-generic.redhat index b3ba4c0..f615ace 100755 --- a/system/init.d/kazoo-generic.redhat +++ b/system/init.d/kazoo-generic.redhat @@ -14,8 +14,9 @@ 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 +test -x ${KAZOO_BIN} || exit 0 RETVAL=0 set -e @@ -36,43 +37,49 @@ export NAME_ARG="-name ${NAME}" export VMARGS_PATH=/etc/kazoo/core/vm.args # Check that networking is up. -if [ "$NETWORKING" = "no" ]; then +if [ "${NETWORKING}" = "no" ]; then exit 0 fi start() { echo -n $"Starting ${NAME}: " - cd $KAZOO_ROOT + cd ${KAZOO_ROOT} export CODE_LOADING_MODE=interactive - $KAZOO_BIN start > /dev/null 2>&1; - - for (( i=0; i<10; ++i )); do - OUT=`$KAZOO_BIN getpid`; - if [ $? == 0 ]; then PID=$OUT; break; fi - sleep 1; + 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 [ -z "$PID" ]; then + if ${SWITCH_USER} "${KAZOO_BIN} pid" > /dev/null 2>&1; then + success $"OK" + else failure RETVAL=1 - else - success fi + echo } stop() { echo -n $"Stopping ${NAME}: " - cd $KAZOO_ROOT - $KAZOO_BIN stop > /dev/null 2>&1; + cd ${KAZOO_ROOT} + ${SWITCH_USER} "${KAZOO_BIN} stop" > /dev/null 2>&1; - if [ $? != 0 ]; then + if ${SWITCH_USER} "${KAZOO_BIN} pid" > /dev/null 2>&1; then failure RETVAL=1 else success fi + echo } restart() { @@ -81,8 +88,8 @@ restart() { } status() { - cd $KAZOO_ROOT - $KAZOO_BIN eval "kz_nodes:status()." | sed \$d + cd ${KAZOO_ROOT} + ${SWITCH_USER} "${KAZOO_BIN} eval 'kz_nodes:status().'" | sed \$d if [ $? != 0 ]; then (>&2 echo "${NAME} is not running!") @@ -91,9 +98,10 @@ status() { } connect() { - cd $KAZOO_ROOT - export COOKIE_ARG="-setcookie `$KAZOO_BIN eval 'erlang:get_cookie()'`" - $KAZOO_BIN remote_console + 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 @@ -101,8 +109,8 @@ connect() { } attach() { - cd $KAZOO_ROOT - $KAZOO_BIN attach + cd ${KAZOO_ROOT} + ${SWITCH_USER} "${KAZOO_BIN} attach" if [ $? != 0 ]; then (>&2 echo "${NAME} is not running!") @@ -111,9 +119,10 @@ attach() { } ping() { - cd $KAZOO_ROOT - export COOKIE_ARG="-setcookie `$KAZOO_BIN eval 'erlang:get_cookie()'`" - $KAZOO_BIN 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 @@ -121,8 +130,10 @@ ping() { } pid() { - cd $KAZOO_ROOT - $KAZOO_BIN 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 @@ -130,15 +141,15 @@ pid() { } foreground() { - cd $KAZOO_ROOT + cd ${KAZOO_ROOT} export CODE_LOADING_MODE=interactive - $KAZOO_BIN foreground + ${SWITCH_USER} "${KAZOO_BIN} foreground" } console() { - cd $KAZOO_ROOT + cd ${KAZOO_ROOT} export CODE_LOADING_MODE=interactive - $KAZOO_BIN console + ${SWITCH_USER} "${KAZOO_BIN} console" } case "$1" in