From eb9c9fd0b20faf096b93b1d5790e9e57423098b4 Mon Sep 17 00:00:00 2001 From: bitbashing Date: Wed, 15 Jun 2016 08:03:59 -0700 Subject: [PATCH] clean up scripts and resolve permissions errors in centos 7 --- haproxy/haproxy.cfg | 2 +- system/sbin/kazoo-applications | 119 ++++++++++-------------- system/sbin/kazoo-bigcouch | 109 ++++++++++++---------- system/sbin/kazoo-ecallmgr | 119 ++++++++++-------------- system/sbin/kazoo-freeswitch | 68 +++++++++++--- system/sbin/kazoo-haproxy | 106 +++++++++++---------- system/sbin/kazoo-kamailio | 88 +++++++++++------- system/sbin/kazoo-rabbitmq | 32 +++++-- system/systemd/kazoo-bigcouch.service | 7 +- system/systemd/kazoo-freeswitch.service | 9 +- system/systemd/kazoo-haproxy.service | 11 ++- system/systemd/kazoo-kamailio.service | 6 ++ system/systemd/kazoo-rabbitmq.service | 5 + 13 files changed, 386 insertions(+), 295 deletions(-) diff --git a/haproxy/haproxy.cfg b/haproxy/haproxy.cfg index c195f83..854328d 100644 --- a/haproxy/haproxy.cfg +++ b/haproxy/haproxy.cfg @@ -3,7 +3,7 @@ global log 127.0.0.1 local1 notice maxconn 4096 user haproxy - group haproxy + group daemon stats socket /tmp/haproxy.sock mode 777 defaults diff --git a/system/sbin/kazoo-applications b/system/sbin/kazoo-applications index 5ecd0b0..e7a8cfc 100755 --- a/system/sbin/kazoo-applications +++ b/system/sbin/kazoo-applications @@ -23,33 +23,34 @@ 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 - +prepare() { 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/.* - +} + +start() { cd ${HOME} + + if sudo -u ${USER} ${BIN_FILE} pid > /dev/null 2>&1; then + echo "Kazoo ${NAME} is already running!" + RETVAL=1 + return + fi + export CODE_LOADING_MODE=interactive + set -- ${BIN_FILE} "$@" if [ "$(whoami)" == "${USER}" ]; then - exec ${BIN_FILE} $@ + exec "$@" else - exec su -s /bin/bash -c "${BIN_FILE} $@" ${USER} + exec sudo -u ${USER} "$@" fi + RETVAL=$? - 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 + if [ ${RETVAL} -ne 0 ]; then + echo "Failed to start Kazoo ${NAME}!" RETVAL=1 fi } @@ -57,9 +58,10 @@ start() { stop() { cd ${HOME} - su -s /bin/bash -c "${BIN_FILE} stop" ${USER} + sudo -u ${USER} ${BIN_FILE} stop - if su -s /bin/bash -c "${BIN_FILE} pid" ${USER} > /dev/null 2>&1; then + if sudo -u ${USER} ${BIN_FILE} pid > /dev/null 2>&1; then + echo "Failed to stop Kazoo ${NAME}!" RETVAL=1 fi } @@ -72,89 +74,71 @@ restart() { 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 + sudo -u ${USER} ${BIN_FILE} eval 'kz_nodes:status().' | sed \$d + RETVAL=$? } connect() { cd ${HOME} - COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` + COOKIE=`sudo -u ${USER} ${BIN_FILE} eval 'erlang:get_cookie()'` 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 + sudo -u ${USER} ${BIN_FILE} remote_console + RETVAL=$? } attach() { cd ${HOME} - su -s /bin/bash -c "${BIN_FILE} attach" ${USER} - if [ $? != 0 ]; then - (>&2 echo "${NAME} is not running!") - RETVAL=1 - fi + echo "WARNING: You are now directly attached to the running ${NAME} Erlang node." + echo " It is safer to use: $0 connect" + sudo -u ${USER} ${BIN_FILE} attach + RETVAL=$? } ping() { cd ${HOME} - COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` + COOKIE=`sudo -u ${USER} ${BIN_FILE} eval 'erlang:get_cookie()'` 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 + sudo -u ${USER} ${BIN_FILE} ping + RETVAL=$? } pid() { cd ${HOME} - COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` + COOKIE=`sudo -u ${USER} ${BIN_FILE} eval 'erlang:get_cookie()'` 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} + sudo -u ${USER} ${BIN_FILE} pid + RETVAL=$? } case "$1" in + prepare) + prpeare + ;; start) start "start" - ;; + ;; + foreground) + start "foreground" + ;; stop) stop - ;; - status) - status - ;; + ;; restart) restart - ;; + ;; + status) + status + ;; connect) connect - ;; + ;; attach) attach ;; @@ -164,12 +148,9 @@ case "$1" in pid) pid ;; - foreground) - foreground - ;; *) - echo "Usage: $0 (start|stop|restart|status|connect|attach|ping|pid|foreground)" + echo "Usage: $0 (prpeare|start|foreground|stop|restart|status|connect|attach|ping|pid)" RETVAL=1 esac -exit ${RETVAL} +exit ${RETVAL} \ No newline at end of file diff --git a/system/sbin/kazoo-bigcouch b/system/sbin/kazoo-bigcouch index a189b1e..3eebb11 100755 --- a/system/sbin/kazoo-bigcouch +++ b/system/sbin/kazoo-bigcouch @@ -5,7 +5,7 @@ if [ -f /etc/default/bigcouch ]; then fi if [ -f /etc/sysconfig/bigcouch ]; then - . /etc/sysconfig/bigcouch + . /etc/sysconfig/bigcouch fi RETVAL=0 @@ -13,69 +13,84 @@ USER=${BIGCOUCH_USER:-bigcouch} BIN_FILE=${BIGCOUCH_BIN:-/opt/bigcouch/bin/bigcouch} export HOME=${BIGCOUCH_HOME:-/srv} -[ -f ${BIN_FILE} ] || exit 1 - # Detect core count CORES=`grep -E "^processor" /proc/cpuinfo |wc -l` if [ "${CORES}" = "1" ]; then - BEAM=beam + BEAM=beam else - BEAM=beam.smp + BEAM=beam.smp fi +prepare() { + mkdir -p ${HOME} + chown -R ${USER} ${HOME} + mkdir -p /var/log/bigcouch + chown -R ${USER} /var/log/bigcouch +} + start() { - mkdir -p ${HOME} - chown -R ${USER} ${HOME} - mkdir -p /var/log/bigcouch - chown -R ${USER} /var/log/bigcouch + cd ${HOME} - cd ${HOME} - if [ "$(whoami)" == "${USER}" ]; then - exec ${BIN_FILE} - else - exec su -s /bin/bash -c "${BIN_FILE}" ${USER} - fi - RETVAL=$? + set -- ${BIN_FILE} "$@" + if [ "$(whoami)" == "${USER}" ]; then + exec "$@" + else + exec sudo -u ${USER} "$@" + fi + RETVAL=$? + + if [ ${RETVAL} -ne 0 ]; then + echo "Failed to start BigCouch!" + RETVAL=1 + fi } stop() { - for i in `pidof ${BEAM}`; do - if cat /proc/$i/cmdline | grep -Eq "name[^\-]+bigcouch"; then - kill $i - RETVAL=$? - fi - done + for i in `pidof ${BEAM}`; do + if cat /proc/$i/cmdline | grep -Eq "name[^\-]+bigcouch"; then + kill $i + RETVAL=$? + fi + done +} + +restart() { + stop + start } status() { - RETVAL=1 - for i in `pidof ${BEAM}`; do - if cat /proc/$i/cmdline | grep -Eq "name[^\-]+bigcouch"; then - echo "bigcouch (pid $i) is running..." - if which curl &>/dev/null; then - curl localhost:5984/_membership - fi - RETVAL=0 - fi - done - if [ ${RETVAL} -eq 1 ]; then - echo "bigcouch is not running!" - fi + RETVAL=1 + for i in `pidof ${BEAM}`; do + if cat /proc/$i/cmdline | grep -Eq "name[^\-]+bigcouch"; then + echo "BigCouch (pid $i) is running..." + if which curl &>/dev/null; then + curl localhost:5984/_membership + fi + RETVAL=0 + fi + done + if [ ${RETVAL} -eq 1 ]; then + echo "BigCouch is not running!" + fi } case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status - ;; - *) - echo $"Usage: $0 (start|stop|status)" - RETVAL=1 + prepare) + prpeare + ;; + start) + start + ;; + stop) + stop + ;; + status) + status + ;; + *) + echo $"Usage: $0 (prpeare|start|stop|restart|status)" + RETVAL=1 esac exit ${RETVAL} diff --git a/system/sbin/kazoo-ecallmgr b/system/sbin/kazoo-ecallmgr index d3656bf..c5c62b2 100755 --- a/system/sbin/kazoo-ecallmgr +++ b/system/sbin/kazoo-ecallmgr @@ -23,33 +23,34 @@ 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 - +prepare() { 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/.* - +} + +start() { cd ${HOME} + + if sudo -u ${USER} ${BIN_FILE} pid > /dev/null 2>&1; then + echo "Kazoo ${NAME} is already running!" + RETVAL=1 + return + fi + export CODE_LOADING_MODE=interactive + set -- ${BIN_FILE} "$@" if [ "$(whoami)" == "${USER}" ]; then - exec ${BIN_FILE} $@ + exec "$@" else - exec su -s /bin/bash -c "${BIN_FILE} $@" ${USER} + exec sudo -u ${USER} "$@" fi + RETVAL=$? - 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 + if [ ${RETVAL} -ne 0 ]; then + echo "Failed to start Kazoo ${NAME}!" RETVAL=1 fi } @@ -57,9 +58,10 @@ start() { stop() { cd ${HOME} - su -s /bin/bash -c "${BIN_FILE} stop" ${USER} + sudo -u ${USER} ${BIN_FILE} stop - if su -s /bin/bash -c "${BIN_FILE} pid" ${USER} > /dev/null 2>&1; then + if sudo -u ${USER} ${BIN_FILE} pid > /dev/null 2>&1; then + echo "Failed to stop Kazoo ${NAME}!" RETVAL=1 fi } @@ -72,89 +74,71 @@ restart() { 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 + sudo -u ${USER} ${BIN_FILE} eval 'kz_nodes:status().' | sed \$d + RETVAL=$? } connect() { cd ${HOME} - COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` + COOKIE=`sudo -u ${USER} ${BIN_FILE} eval 'erlang:get_cookie()'` 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 + sudo -u ${USER} ${BIN_FILE} remote_console + RETVAL=$? } attach() { cd ${HOME} - su -s /bin/bash -c "${BIN_FILE} attach" ${USER} - if [ $? != 0 ]; then - (>&2 echo "${NAME} is not running!") - RETVAL=1 - fi + echo "WARNING: You are now directly attached to the running ${NAME} Erlang node." + echo " It is safer to use: $0 connect" + sudo -u ${USER} ${BIN_FILE} attach + RETVAL=$? } ping() { cd ${HOME} - COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` + COOKIE=`sudo -u ${USER} ${BIN_FILE} eval 'erlang:get_cookie()'` 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 + sudo -u ${USER} ${BIN_FILE} ping + RETVAL=$? } pid() { cd ${HOME} - COOKIE=`su -s /bin/bash -c "${BIN_FILE} eval 'erlang:get_cookie()'" ${USER}` + COOKIE=`sudo -u ${USER} ${BIN_FILE} eval 'erlang:get_cookie()'` 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} + sudo -u ${USER} ${BIN_FILE} pid + RETVAL=$? } case "$1" in + prepare) + prpeare + ;; start) start "start" - ;; + ;; + foreground) + start "foreground" + ;; stop) stop - ;; - status) - status - ;; + ;; restart) restart - ;; + ;; + status) + status + ;; connect) connect - ;; + ;; attach) attach ;; @@ -164,12 +148,9 @@ case "$1" in pid) pid ;; - foreground) - foreground - ;; *) - echo "Usage: $0 (start|stop|restart|status|connect|attach|ping|pid|foreground)" + echo "Usage: $0 (prpeare|start|foreground|stop|restart|status|connect|attach|ping|pid)" RETVAL=1 esac -exit ${RETVAL} +exit ${RETVAL} \ No newline at end of file diff --git a/system/sbin/kazoo-freeswitch b/system/sbin/kazoo-freeswitch index f782d7f..a429350 100755 --- a/system/sbin/kazoo-freeswitch +++ b/system/sbin/kazoo-freeswitch @@ -1,7 +1,7 @@ #!/bin/bash if [ -f /etc/default/freeswitch ]; then - . /etc/default/freeswitch + . /etc/default/freeswitch fi if [ -f /etc/sysconfig/freeswitch ]; then @@ -18,21 +18,38 @@ if [ -z "${FREESWITCH_ARGS}" ]; then FREESWITCH_ARGS="-nonat -conf ${CFG_FILE} -db /var/lib/kazoo-freeswitch/db -log /var/log/freeswitch -cache /var/lib/kazoo-freeswitch/cache -sounds /var/lib/kazoo-freeswitch/sounds -storage /var/lib/kazoo-freeswitch/storage" fi -start() { - mkdir ${HOME} - chown -R ${USER} ${HOME} +prepare() { + mkdir ${HOME} + chown -R ${USER} ${HOME} mkdir -p /var/log/freeswitch chown -R ${USER} /var/log/freeswitch mkdir -p /var/lib/kazoo-freeswitch/{db,cache,sounds,storage} chown -R ${USER} /var/lib/kazoo-freeswitch +} +start() { cd ${HOME} - if [ "$(whoami)" == "${USER}" ]; then - exec ${BIN_FILE} ${FREESWITCH_ARGS} ${FREESWITCH_PARAMS} $@ + + if fs_cli -x 'status' > /dev/null 2>&1; then + echo "FreeSWITCH is already running!" + RETVAL=1 + return + fi + + /usr/bin/epmd -daemon + + set -- ${BIN_FILE} ${FREESWITCH_ARGS} ${FREESWITCH_PARAMS} "$@" + if [ "$(whoami)" == "${USER}" ]; then + exec "$@" else - exec su -s /bin/bash -c "exec ${BIN_FILE} ${FREESWITCH_ARGS} ${FREESWITCH_PARAMS} $@" ${USER} + exec sudo -u ${USER} "$@" fi RETVAL=$? + + if [ ${RETVAL} -ne 0 ]; then + echo "Failed to start FreeSWITCH!" + RETVAL=1 + fi } stop() { @@ -43,19 +60,34 @@ stop() { } status() { - fs_cli -x 'status' - fs_cli -x 'erlang status' + fs_cli -x 'status' && fs_cli -x 'erlang status' RETVAL=$? } +restart() { + stop + start +} + +pause() { + fs_cli -x 'fsctl pause' +} + +resume() { + fs_cli -x 'fsctl resume' +} + case "$1" in + prepare) + prepare + ;; start) shift - start "-ncwait $@" + start "-ncwait" $@ ;; foreground) shift - start "$@" + start $@ ;; stop) stop @@ -63,9 +95,19 @@ case "$1" in status) status ;; + restart) + restart + ;; + pause) + pause + ;; + resume) + resume + ;; *) - echo "Usage: freeswitch {start|stop|status}" + echo "Usage: freeswitch {prepare|start|foreground|stop|restart|status|pause|resume}" RETVAL=1 ;; esac -exit ${RETVAL} + +exit ${RETVAL} \ No newline at end of file diff --git a/system/sbin/kazoo-haproxy b/system/sbin/kazoo-haproxy index 028ba45..e58a3aa 100755 --- a/system/sbin/kazoo-haproxy +++ b/system/sbin/kazoo-haproxy @@ -15,37 +15,41 @@ PID_FILE=${HAPROXY_PID:-/var/run/haproxy/kazoo-haproxy.pid} BIN_FILE=${HAPROXY_BIN:-/usr/sbin/haproxy} export HOME=${HAPROXY_HOME:-/var/lib/haproxy} -check() { - /usr/sbin/haproxy -c -V -f ${CFG_FILE} ${OPTIONS} +prepare() { + mkdir -p /var/run/haproxy + chown -R ${USER} /var/run/haproxy + mkdir -p /var/log/haproxy + chown -R ${USER} /var/log/haproxy + touch ${PID_FILE} + chown ${USER} ${PID_FILE} } start() { - /usr/sbin/haproxy -c -q -f ${CFG_FILE} ${OPTIONS} - if [ $? -ne 0 ]; then - echo "Errors in configuration file, check with haproxy check." - RETVAL=1 + cd ${HOME} + + check_config + if [ ${RETVAL} -ne 0 ]; then return fi + if echo "show stat" | nc -U /tmp/haproxy.sock > /dev/null 2>&1; then echo "HAProxy is already running!" RETVAL=1 return fi - mkdir -p /var/run/haproxy - chown -R ${USER} /var/run/haproxy - mkdir -p /var/log/haproxy - chown -R ${USER} /var/log/haproxy - touch ${PID_FILE} - chown ${USER} ${PID_FILE} - - cd ${HOME} + set -- ${BIN_FILE} -f ${CFG_FILE} -p ${PID_FILE} ${OPTIONS} "$@" if [ "$(whoami)" == "${USER}" ]; then - exec "${BIN_FILE} -f ${CFG_FILE} -p ${PID_FILE} ${OPTIONS} $@" + exec "$@" else - exec su -s /bin/bash -c "${BIN_FILE} -f ${CFG_FILE} -p ${PID_FILE} ${OPTIONS} $@" ${USER} + exec sudo -u ${USER} "$@" fi RETVAL=$? + + if [ ${RETVAL} -ne 0 ]; then + echo "Failed to start HAProxy!" + RETVAL=1 + fi } stop() { @@ -54,37 +58,23 @@ stop() { } restart() { - /usr/sbin/haproxy -c -q -f ${CFG_FILE} ${OPTIONS} - if [ $? -ne 0 ]; then - echo "Errors in configuration file, check with haproxy check." - RETVAL=1 + check_config + if [ ${RETVAL} -ne 0 ]; then return fi + stop start } -reload() { - /usr/sbin/haproxy -c -q -f ${CFG_FILE} ${OPTIONS} - if [ $? -ne 0 ]; then - echo "Errors in configuration file, check with haproxy check." - RETVAL=1 - return - fi - ${BIN_FILE} -f ${CFG_FILE} -p ${PID_FILE} ${OPTIONS} -sf $(cat ${PID_FILE}) $@ - retval=$? - echo - return $retval -} - status() { local STATS="pxname svname qcur qmax scur smax slim stot bin bout dreq dresp ereq econ eresp wretr wredis status weight act bck chkfail chdown lastchg downtime qlimit pid iid sid throttle lbtot tracked type rate rate_lim rate_max check_status check_code check_duration hrsp_1xx hrsp_2xx hrsp_3xx hrsp_4xx hrsp_5xx hrsp_other hanafail req_rate req_rate_max req_tot cli_abrt srv_abrt" local TABLE_HEADER="Host|25 Backend|15 Status Active Rate 1xx 2xx 3xx 4xx 5xx Ping" local TABLE_VARS="svname|25 pxname|15 status scur req_rate hrsp_1xx hrsp_2xx hrsp_3xx hrsp_4xx hrsp_5xx check_duration" if ! echo "show stat" | nc -U /tmp/haproxy.sock > /dev/null 2>&1; then - echo "Unable to connect to haproxy, ensure it is running!" + echo "Unable to connect to HAProxy, ensure it is running!" RETVAL=1 - return 1 + return fi echo -n "|" for HEADER in $TABLE_HEADER; do @@ -131,35 +121,55 @@ status() { done } -restart() { - stop - start +reload() { + check_config + if [ ${RETVAL} -ne 0 ]; then + return + fi + + ${BIN_FILE} -f ${CFG_FILE} -p ${PID_FILE} ${OPTIONS} -sf $(cat ${PID_FILE}) $@ + RETVAL=$? +} + +check_config() { + /usr/sbin/haproxy -c -V -f ${CFG_FILE} ${OPTIONS} + RETVAL=$? + + if [ ${RETVAL} -ne 0 ]; then + echo "ERROR: Invalid/incorrect configuration file!" + fi } case "$1" in + prepare) + prepare + ;; start) shift start "-D $@" ;; - stop) - stop - ;; - restart|reload) - restart - ;; foreground) shift start "$@" ;; - check) - check + stop) + stop + ;; + restart) + restart ;; status) status ;; + reload) + reload + ;; + check) + check_config + ;; *) - echo $"Usage: $0 {start|stop|restart|foreground|reload|check|status}" + echo $"Usage: $0 {prepare|start|foreground|stop|restart|status|reload|check}" RETVAL=1 esac -exit ${RETVAL} +exit ${RETVAL} \ No newline at end of file diff --git a/system/sbin/kazoo-kamailio b/system/sbin/kazoo-kamailio index bffa559..779ed9a 100755 --- a/system/sbin/kazoo-kamailio +++ b/system/sbin/kazoo-kamailio @@ -13,7 +13,7 @@ USER=${KAMAILIO_USER:-kamailio} GROUP=${KAMAILIO_GROUP:-kamailio} BIN_FILE=${KAMAILIO_BIN:-/usr/sbin/kamailio} CFG_FILE=${KAMAILIO_CONFIG:-/etc/kazoo/kamailio/kamailio.cfg} -PID_FILE=/var/run/kazoo-kamailio/kamailio.pid +PID_FILE=${KAMAILIO_PID:-/var/run/kazoo-kamailio/kamailio.pid} export HOME=${KAMAILIO_HOME:-/var/run/kamailio} OPTIONS="-P ${PID_FILE} -m ${SHM_MEMORY} -M ${PKG_MEMORY} -u ${USER} -g ${GROUP} ${EXTRA_OPTIONS}" @@ -26,43 +26,31 @@ if test "$DUMP_CORE" = "yes" ; then ulimit -c unlimited fi -# Do not start kamailio if fork=no is set in the config file -# otherwise the boot process will just stop -check_fork () -{ - if grep -q "^[[:space:]]*fork[[:space:]]*=[[:space:]]*no.*" $CFG_FILE; then - echo "Not starting Kamailio: fork=no specified in config file" - exit 1 - fi -} - -check_kamailio_config () -{ - local ERRORS=$($BIN_FILE -c 2>&1 > /dev/null) - RETVAL=$? - if [ "${RETVAL}" != '0' ]; then - echo "Not starting Kamailio: invalid configuration file!" - echo -e "\n${ERRORS}\n" - RETVAL=1 - fi -} - -start() { - check_kamailio_config - check_fork - +prepare() { mkdir -p /var/run/kazoo-kamailio chown -R ${USER} /var/run/kazoo-kamailio mkdir -p /var/run/kamailio chown -R ${USER} /var/run/kamailio +} +start() { cd ${HOME} + + check_config + check_fork + + set -- ${BIN_FILE} -f ${CFG_FILE} -P ${PID_FILE} -m ${SHM_MEMORY} -M ${PKG_MEMORY} -u ${USER} -g ${GROUP} ${EXTRA_OPTIONS} "$@" if [ "$(whoami)" == "${USER}" ]; then - exec ${BIN_FILE} -f ${CFG_FILE} -P ${PID_FILE} -m ${SHM_MEMORY} -M ${PKG_MEMORY} -u ${USER} -g ${GROUP} ${EXTRA_OPTIONS} $@ + exec "$@" else - exec su -s /bin/bash -c "${BIN_FILE} -f ${CFG_FILE} -P ${PID_FILE} -m ${SHM_MEMORY} -M ${PKG_MEMORY} -u ${USER} -g ${GROUP} ${EXTRA_OPTIONS} $@" ${USER} + exec sudo -u ${USER} "$@" fi RETVAL=$? + + if [ ${RETVAL} -ne 0 ]; then + echo "Failed to start BigCouch!" + RETVAL=1 + fi } stop() { @@ -70,35 +58,65 @@ stop() { RETVAL=$? } +restart() { + stop + start +} + status() { kamctl fifo ds_list RETVAL=$? } +# Do not start kamailio if fork=no is set in the config file +# otherwise the boot process will just stop +check_fork () +{ + if grep -q "^[[:space:]]*fork[[:space:]]*=[[:space:]]*no.*" $CFG_FILE; then + echo "WARNING: fork=no specified in config file" + exit 1 + fi +} + +check_config () +{ + local ERRORS=$($BIN_FILE -c -f ${CFG_FILE} 2>&1 > /dev/null) + RETVAL=$? + + if [ ${RETVAL} -ne 0 ]; then + echo "ERROR: Invalid configuration file ${CFG_FILE}!" + echo -e "\n${ERRORS}\n" + else + echo "No errors found in ${CFG_FILE}" + fi +} + case "$1" in + prepare) + prepare + ;; start) shift start $@ ;; foreground) shift - start "-DD -E" + start -DD -E $@ ;; stop) stop ;; - check) - check_kamailio_config + restart) + restart ;; status) status ;; - restart) - stop - start + check) + check_config ;; *) - echo $"Usage: $0 {start|stop|restart|status}" + echo $"Usage: $0 {prepare|start|foreground|stop|restart|status|check}" RETVAL=1 esac diff --git a/system/sbin/kazoo-rabbitmq b/system/sbin/kazoo-rabbitmq index 859c624..4440a72 100755 --- a/system/sbin/kazoo-rabbitmq +++ b/system/sbin/kazoo-rabbitmq @@ -22,22 +22,40 @@ export RABBITMQ_CONFIG_FILE=/etc/kazoo/rabbitmq/rabbitmq export RABBITMQ_ENABLED_PLUGINS_FILE=/etc/kazoo/rabbitmq/enabled_plugins export RABBITMQ_NODENAME=kazoo-rabbitmq -start() { +prepare() { mkdir -p ${HOME} chown -R ${USER} ${HOME} mkdir -p /var/log/rabbitmq chown -R ${USER} /var/log/rabbitmq +} +start() { cd ${HOME} - if [ "$(whoami)" == "${USER}" ]; then - exec ${BIN_FILE} $@ - else - exec su -s /bin/bash -c "${BIN_FILE} $@" ${USER} - fi + + if /usr/lib/rabbitmq/bin/rabbitmqctl status > /dev/null 2>&1; then + echo "RabbitMQ is already running!" + RETVAL=1 + return + fi + + set -- ${BIN_FILE} "$@" + if [ "$(whoami)" == "${USER}" ]; then + exec "$@" + else + exec sudo -u ${USER} "$@" + fi RETVAL=$? + + if [ ${RETVAL} -ne 0 ]; then + echo "Failed to start RabbitMQ!" + RETVAL=1 + fi } case "$1" in + prepare) + prepare + ;; start) shift start "-detached $@" @@ -52,4 +70,4 @@ case "$1" in ;; esac -exit ${RETVAL} +exit ${RETVAL} \ No newline at end of file diff --git a/system/systemd/kazoo-bigcouch.service b/system/systemd/kazoo-bigcouch.service index 0124f01..b551c48 100644 --- a/system/systemd/kazoo-bigcouch.service +++ b/system/systemd/kazoo-bigcouch.service @@ -4,9 +4,14 @@ After=syslog.target network.target [Service] Type=forking +User=bigcouch +Group=daemon WorkingDirectory=/srv +PermissionsStartOnly=true +ExecStartPre=/usr/sbin/kazoo-bigcouch prepare ExecStart=/usr/sbin/kazoo-bigcouch start ExecStop=/usr/sbin/kazoo-bigcouch stop +Restart=on-abort [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target \ No newline at end of file diff --git a/system/systemd/kazoo-freeswitch.service b/system/systemd/kazoo-freeswitch.service index 5348159..4645c57 100644 --- a/system/systemd/kazoo-freeswitch.service +++ b/system/systemd/kazoo-freeswitch.service @@ -4,12 +4,17 @@ After=syslog.target network.target After=postgresql.service postgresql-9.3.service postgresql-9.4.service mysqld.service httpd.service [Service] +User=freeswitch +Group=daemon +WorkingDirectory=/var/run/kazoo-freeswitch +PermissionsStartOnly=true # RuntimeDirectory is not yet supported in CentOS 7. A workaround is to use /etc/tmpfiles.d/freeswitch.conf #RuntimeDirectory=/run/freeswitch #RuntimeDirectoryMode=0750 -WorkingDirectory=/run/freeswitch +ExecStartPre=/usr/sbin/kazoo-freeswitch prepare ExecStart=/usr/sbin/kazoo-freeswitch foreground -nc -nf ExecReload=/usr/bin/kill -HUP $MAINPID +Restart=on-abort [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target \ No newline at end of file diff --git a/system/systemd/kazoo-haproxy.service b/system/systemd/kazoo-haproxy.service index 71719f7..f97f7a1 100644 --- a/system/systemd/kazoo-haproxy.service +++ b/system/systemd/kazoo-haproxy.service @@ -3,11 +3,16 @@ Description=HAProxy Load Balancer Configured for Kazoo After=syslog.target network.target [Service] +User=haproxy +Group=daemon +WorkingDirectory=/var/lib/haproxy +PermissionsStartOnly=true +PIDFile=/var/run/haproxy/kazoo-haproxy.pid Environment=HAPROXY_BIN=/usr/sbin/haproxy-systemd-wrapper -Environment=HAPROXY_PID=/run/haproxy.pid +ExecStartPre=/usr/sbin/kazoo-haproxy prepare ExecStart=/usr/sbin/kazoo-haproxy foreground ExecReload=/bin/kill -USR2 $MAINPID +Restart=on-abort [Install] -WantedBy=multi-user.target - +WantedBy=multi-user.target \ No newline at end of file diff --git a/system/systemd/kazoo-kamailio.service b/system/systemd/kazoo-kamailio.service index 8984fc9..ba1b4e2 100644 --- a/system/systemd/kazoo-kamailio.service +++ b/system/systemd/kazoo-kamailio.service @@ -3,6 +3,12 @@ Description=Kamailio (OpenSER) - the Open Source SIP Server Configured for Kazoo After=syslog.target network.target [Service] +User=kamailio +Group=daemon +WorkingDirectory=/var/run/kamailio +PermissionsStartOnly=true +PIDFile=/var/run/kazoo-kamailio/kamailio.pid +ExecStartPre=/usr/sbin/kazoo-kamailio prepare ExecStart=/usr/sbin/kazoo-kamailio foreground ExecReload=/usr/bin/kill -HUP $MAINPID Restart=on-abort diff --git a/system/systemd/kazoo-rabbitmq.service b/system/systemd/kazoo-rabbitmq.service index 73e77fe..5f71e5e 100644 --- a/system/systemd/kazoo-rabbitmq.service +++ b/system/systemd/kazoo-rabbitmq.service @@ -4,9 +4,14 @@ After=syslog.target network.target [Service] Type=notify +User=rabbitmq +Group=daemon WorkingDirectory=/var/lib/rabbitmq +PermissionsStartOnly=true +ExecStartPre=/usr/sbin/kazoo-rabbitmq prepare ExecStart=/usr/sbin/kazoo-rabbitmq start ExecStop=/usr/sbin/kazoo-rabbitmq stop +Restart=on-abort [Install] WantedBy=multi-user.target