diff --git a/system/init.d/kazoo-bigcouch.redhat b/system/init.d/kazoo-bigcouch.redhat index 1bdda70..c56803e 100755 --- a/system/init.d/kazoo-bigcouch.redhat +++ b/system/init.d/kazoo-bigcouch.redhat @@ -5,110 +5,76 @@ # chkconfig: 345 13 87 # description: BigCouch is a dynamo-style distributed database based on Apache CouchDB. # processname: bigcouch -# pidfile: /var/run/bigcouch.pid +# pidfile: /var/run/kazoo-bigcouch.pid # -# Source function library. +RETVAL=0 +LOCK_FILE=${LOCK_FILE:-/var/lock/subsys/kazoo-bigcouch} + . /etc/init.d/functions if [ -f /etc/sysconfig/bigcouch ]; then - . /etc/sysconfig/bigcouch + . /etc/sysconfig/bigcouch fi -NAME="bigcouch" -LOCKFILE=${LOCKFILE-/var/lock/subsys/kazoo-bigcouch} -USER="bigcouch" -RETVAL=0 -STOP_TIMEOUT=${STOP_TIMEOUT-10} - -# Check that networking is up. if [ "${NETWORKING}" = "no" ]; then - exit 0 + exit 0 fi -[ -f /opt/bigcouch/bin/${NAME} ] || exit 0 - -# Detect core count -CORES=`grep -E "^processor" /proc/cpuinfo |wc -l` -if [ "$CORES" = "1" ]; then - BEAM=beam -else - BEAM=beam.smp -fi +[ -f /opt/bigcouch/bin/BigCouch ] || exit 0 start() { - RETVAL=1 - echo -n $"Starting ${NAME}: " - - export HOME=/srv - cd ${HOME} - chown ${USER} -R /var/log/bigcouch - chown ${USER} -R /srv - su ${USER} -s /bin/bash -c /opt/bigcouch/bin/${NAME} - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch ${LOCKFILE} - return $RETVAL + RETVAL=1 + echo -n $"Starting BigCouch: " + /usr/sbin/kazoo-bigcouch start + RETVAL=$? + echo + [ ${RETVAL} -eq 0 ] && touch ${LOCK_FILE} } stop() { - RETVAL=1 - echo -n $"Stopping ${NAME}: " - for i in `pidof ${BEAM}`; do - if cat /proc/$i/cmdline | grep -Eq "name[^\-]+bigcouch"; then - kill $i - RETVAL=$? - fi - done - if [ $RETVAL -eq 0 ]; then - rm -f ${lockfile} ${pidfile} - success - echo - return $RETVAL - else - failure - echo - return $RETVAL - fi + RETVAL=1 + echo -n $"Stopping BigCouch: " + /usr/sbin/kazoo-bigcouch stop + RETVAL=$? + if [ ${RETVAL} -eq 0 ]; then + rm -f ${LOCK_FILE} ${pidfile} + success + else + failure + fi + echo } 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..." - return 0; - fi - done - echo "bigcouch is stopped..." - return 1; + /usr/sbin/kazoo-bigcouch status + RETVAL=$? } - restart() { - stop - start + stop + start } case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status - ;; - restart|reload) - restart - ;; - condrestart) - [ ! -e ${LOCKFILE} ] && restart - ;; - *) - echo $"Usage: $0 (start|stop|restart|status)" - exit 1 + start) + start + ;; + stop) + stop + ;; + status) + status + ;; + restart|reload) + restart + ;; + condrestart) + [ ! -e ${LOCK_FILE} ] && restart + ;; + *) + echo $"Usage: $0 (start|stop|restart|status)" + RETVAL=1 esac -exit $? +exit $RETVAL diff --git a/system/init.d/kazoo-freeswitch.redhat b/system/init.d/kazoo-freeswitch.redhat index a4747a7..6c587d8 100755 --- a/system/init.d/kazoo-freeswitch.redhat +++ b/system/init.d/kazoo-freeswitch.redhat @@ -1,8 +1,8 @@ #!/bin/bash # -# /etc/rc.d/init.d/freeswitch +# /etc/rc.d/init.d/freeswitch # -# The FreeSWITCH Open Source Voice Platform +# The FreeSWITCH Open Source Voice Platform # # chkconfig: 345 89 14 # description: Starts and stops the freeswitch server daemon @@ -11,101 +11,82 @@ # pidfile: /var/run/freeswitch/kazoo-freeswitch.pid # -# Source function library. -. /etc/init.d/functions - -PROG_NAME=freeswitch -PID_FILE=${PID_FILE-/var/run/freeswitch/kazoo/freeswitch.pid} -FS_USER=${FS_USER-freeswitch} -FS_FILE=${FS_FILE-/usr/bin/freeswitch} -FS_HOME=${FS_HOME-/var/run/kazoo-freeswitch} -LOCK_FILE=/var/lock/subsys/kazoo-freeswitch -FREESWITCH_ARGS="-ncwait -nonat -conf /etc/kazoo/freeswitch -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" RETVAL=0 +PID_FILE=${PID_FILE:-/var/run/freeswitch/kazoo/freeswitch.pid} +FS_USER=${FS_USER:-freeswitch} +LOCK_FILE=/var/lock/subsys/kazoo-freeswitch + +. /etc/init.d/functions -# Source usr/localions file if [ -f /etc/sysconfig/freeswitch ]; then . /etc/sysconfig/freeswitch fi -# - start() { - echo -n "Starting $PROG_NAME: " - if [ -e $LOCK_FILE ]; then - if [ -e $PID_FILE ] && [ -e /proc/`cat $PID_FILE` ]; then - echo - echo -n $"$PROG_NAME is already running."; - failure $"$PROG_NAME is already running."; - echo - return 1 - fi - fi - mkdir -p /var/lib/kazoo-freeswitch/{db,cache,sounds,storage} - chown -R $FS_USER /var/lib/kazoo-freeswitch - mkdir -p /var/run/freeswitch - chown $FS_USER /var/run/freeswitch - mkdir -p /var/run/kazoo-freeswitch - chown $FS_USER /var/run/kazoo-freeswitch - mkdir -p /var/log/freeswitch - chown $FS_USER /var/log/freeswitch - cd $FS_HOME - daemon --user $FS_USER --pidfile $PID_FILE "$FS_FILE $FREESWITCH_ARGS $FREESWITCH_PARAMS >/dev/null 2>&1" - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch $LOCK_FILE; + echo -n "Starting FreeSWITCH: " + if [ -e $LOCK_FILE ]; then + if [ -e $PID_FILE ] && [ -e /proc/`cat $PID_FILE` ]; then + echo + echo -n $"FreeSWITCH is already running."; + failure $"FreeSWITCH is already running."; + echo + return 1 + fi + fi + daemon --user $FS_USER --pidfile ${PID_FILE} "/usr/sbin/kazoo-freeswitch start >/dev/null 2>&1" + RETVAL=$? echo - return $RETVAL + [ $RETVAL -eq 0 ] && touch $LOCK_FILE; + echo + return $RETVAL } stop() { - echo -n "Shutting down $PROG_NAME: " - if [ ! -e $LOCK_FILE ]; then - echo - echo -n $"cannot stop $PROG_NAME: $PROG_NAME is not running." - failure $"cannot stop $PROG_NAME: $PROG_NAME is not running." - echo - return 1; - fi - cd $FS_HOME - $FS_FILE -stop > /dev/null 2>&1 - killproc $PROG_NAME + echo -n "Shutting down FreeSWITCH: " + if [ ! -e $LOCK_FILE ]; then + echo + echo -n $"cannot stop FreeSWITCH: FreeSWITCH is not running." + failure $"cannot stop FreeSWITCH: FreeSWITCH is not running." + echo + return 1; + fi + /usr/sbin/kazoo-freeswitch stop RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f $LOCK_FILE; - return $RETVAL + return $RETVAL } rhstatus() { - status $PROG_NAME; + status FreeSWITCH; } case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status $PROG_NAME - RETVAL=$? - ;; - restart) - stop - start - ;; - reload) -# - ;; - condrestart) - [ -f $PID_FILE ] && restart || : + start) + start + ;; + stop) + stop + ;; + status) + status FreeSWITCH + RETVAL=$? + ;; + restart) + stop + start + ;; + reload) +# + ;; + condrestart) + [ -f $PID_FILE ] && restart || : ;; - *) - echo "Usage: $PROG_NAME {start|stop|status|reload|restart}" - exit 1 - ;; + *) + echo "Usage: FreeSWITCH {start|stop|status|reload|restart}" + exit 1 + ;; esac -exit $RETVAL +exit ${RETVAL} diff --git a/system/init.d/kazoo-haproxy.redhat b/system/init.d/kazoo-haproxy.redhat index 0079e88..175db23 100755 --- a/system/init.d/kazoo-haproxy.redhat +++ b/system/init.d/kazoo-haproxy.redhat @@ -3,109 +3,77 @@ # haproxy # # chkconfig: - 85 15 -# description: HAProxy is a free, very fast and reliable solution \ -# offering high availability, load balancing, and \ -# proxying for TCP and HTTP-based applications +# description: HAProxy is a free, very fast and reliable solution \ +# offering high availability, load balancing, and \ +# proxying for TCP and HTTP-based applications # processname: haproxy -# config: /etc/kazoo/haproxy/haproxy.cfg -# pidfile: /var/run/kazoo-haproxy.pid +# config: /etc/kazoo/haproxy/haproxy.cfg +# pidfile: /var/run/kazoo-haproxy.pid + +RETVAL=0 +LOCK_FILE=/var/lock/subsys/kazoo-haproxy -# Source function library. . /etc/rc.d/init.d/functions -# Source networking configuration. . /etc/sysconfig/network -# Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 -exec="/usr/sbin/haproxy" -prog=$(basename $exec) - -[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog - -cfgfile=/etc/kazoo/haproxy/haproxy.cfg -pidfile=/var/run/kazoo-haproxy.pid -lockfile=/var/lock/subsys/kazoo-haproxy - -check() { - $exec -c -V -f $cfgfile $OPTIONS -} start() { - $exec -c -q -f $cfgfile $OPTIONS - if [ $? -ne 0 ]; then - echo "Errors in configuration file, check with $prog check." - return 1 - fi - - echo -n $"Starting $prog: " - # start it up here, usually something like "daemon $exec" - daemon $exec -D -f $cfgfile -p $pidfile $OPTIONS - retval=$? - echo - [ $retval -eq 0 ] && touch $lockfile - return $retval + RETVAL=1 + echo -n $"Starting HAProxy: " + /usr/sbin/kazoo-haproxy start + RETVAL=$? + echo + [ ${RETVAL} -eq 0 ] && touch ${LOCK_FILE} } stop() { - echo -n $"Stopping $prog: " - # stop it here, often "killproc $prog" - killproc $prog - retval=$? - echo - [ $retval -eq 0 ] && rm -f $lockfile - return $retval -} - -restart() { - $exec -c -q -f $cfgfile $OPTIONS - if [ $? -ne 0 ]; then - echo "Errors in configuration file, check with $prog check." - return 1 - fi - stop - start -} - -reload() { - $exec -c -q -f $cfgfile $OPTIONS - if [ $? -ne 0 ]; then - echo "Errors in configuration file, check with $prog check." - return 1 - fi - echo -n $"Reloading $prog: " - $exec -D -f $cfgfile -p $pidfile $OPTIONS -sf $(cat $pidfile) - retval=$? - echo - return $retval + RETVAL=1 + echo -n $"Stopping HAProxy: " + /usr/sbin/kazoo-haproxy stop + RETVAL=$? + if [ ${RETVAL} -eq 0 ]; then + rm -f ${LOCK_FILE} ${pidfile} + success + else + failure + fi + echo } -force_reload() { - restart +status() { + /usr/sbin/kazoo-haproxy status + RETVAL=$? } -fdr_status() { - status $prog +restart() { + stop + start } case "$1" in - start|stop|restart|reload) - $1 - ;; - force-reload) - force_reload - ;; - check) - check - ;; - status) - fdr_status - ;; - condrestart|try-restart) - [ ! -f $lockfile ] || restart - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}" - exit 2 + start|stop|restart|reload) + $1 + ;; + force-reload) + restart + ;; + reload) + /usr/sbin/kazoo-haproxy reload + check) + /usr/sbin/kazoo-haproxy check + ;; + status) + /usr/sbin/kazoo-haproxy status + ;; + condrestart|try-restart) + [ ! -f $lockfile ] || restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}" + RETVAL=1 esac + +exit ${RETVAL} diff --git a/system/init.d/kazoo-rabbitmq.redhat b/system/init.d/kazoo-rabbitmq.redhat index bc244ad..c3d0dfc 100755 --- a/system/init.d/kazoo-rabbitmq.redhat +++ b/system/init.d/kazoo-rabbitmq.redhat @@ -5,188 +5,175 @@ # chkconfig: - 80 05 # description: Enable AMQP service provided by RabbitMQ # - -### BEGIN INIT INFO -# Provides: rabbitmq-server -# Required-Start: $remote_fs $network -# Required-Stop: $remote_fs $network -# Description: RabbitMQ broker +# Provides: rabbitmq-server +# Required-Start: $remote_fs $network +# Required-Stop: $remote_fs $network +# Description: RabbitMQ broker # Short-Description: Enable AMQP service provided by RabbitMQ broker -### END INIT INFO - -# Source function library. -. /etc/init.d/functions +RETVAL=0 PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME=rabbitmq-server -DAEMON=/usr/sbin/${NAME} -CONTROL=/usr/sbin/rabbitmqctl +CONTROL=/usr/sbin/kazoo-rabbitmq DESC=rabbitmq-server USER=rabbitmq ROTATE_SUFFIX= INIT_LOG_DIR=/var/log/rabbitmq PID_FILE=/var/run/rabbitmq/kazoo-pid - START_PROG="daemon" LOCK_FILE=/var/lock/subsys/kazoo-$NAME -test -x $DAEMON || exit 0 +. /etc/init.d/functions + test -x $CONTROL || exit 0 -RETVAL=0 set -e -while read LINE; do - export RABBITMQ_$LINE -done < /etc/kazoo/rabbitmq/rabbitmq-env.conf -export RABBITMQ_CONFIG_FILE=/etc/kazoo/rabbitmq/rabbitmq -export RABBITMQ_ENABLED_PLUGINS_FILE=/etc/kazoo/rabbitmq/enabled_plugins - [ -f /etc/default/${NAME} ] && . /etc/default/${NAME} [ -f /etc/sysconfig/${NAME} ] && . /etc/sysconfig/${NAME} ensure_pid_dir () { - PID_DIR=`dirname ${PID_FILE}` - if [ ! -d ${PID_DIR} ] ; then - mkdir -p ${PID_DIR} - chown -R ${USER}:${USER} ${PID_DIR} - chmod 755 ${PID_DIR} - fi + PID_DIR=`dirname ${PID_FILE}` + if [ ! -d ${PID_DIR} ] ; then + mkdir -p ${PID_DIR} + chown -R ${USER}:${USER} ${PID_DIR} + chmod 755 ${PID_DIR} + fi } remove_pid () { - rm -f ${PID_FILE} - rmdir `dirname ${PID_FILE}` || : + rm -f ${PID_FILE} + rmdir `dirname ${PID_FILE}` || : } start_rabbitmq () { - status_rabbitmq quiet - if [ $RETVAL = 0 ] ; then - echo RabbitMQ is currently running - else - RETVAL=0 - # RABBIT_NOFILES_LIMIT from /etc/sysconfig/rabbitmq-server is not handled - # automatically - if [ "$RABBITMQ_NOFILES_LIMIT" ]; then - ulimit -n $RABBITMQ_NOFILES_LIMIT + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + echo RabbitMQ is currently running + else + RETVAL=0 + # RABBIT_NOFILES_LIMIT from /etc/sysconfig/rabbitmq-server is not handled + # automatically + if [ "$RABBITMQ_NOFILES_LIMIT" ]; then + ulimit -n $RABBITMQ_NOFILES_LIMIT + fi + + ensure_pid_dir + set +e + RABBITMQ_PID_FILE=$PID_FILE $START_PROG $CONTROL start \ + > "${INIT_LOG_DIR}/startup_log" \ + 2> "${INIT_LOG_DIR}/startup_err" \ + 0<&- & + $CONTROL wait $PID_FILE >/dev/null 2>&1 + RETVAL=$? + set -e + case "$RETVAL" in + 0) + echo SUCCESS + if [ -n "$LOCK_FILE" ] ; then + touch $LOCK_FILE + fi + ;; + *) + remove_pid + echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\} + RETVAL=1 + ;; + esac fi - - ensure_pid_dir - set +e - RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \ - > "${INIT_LOG_DIR}/startup_log" \ - 2> "${INIT_LOG_DIR}/startup_err" \ - 0<&- & - $CONTROL wait $PID_FILE >/dev/null 2>&1 - RETVAL=$? - set -e - case "$RETVAL" in - 0) - echo SUCCESS - if [ -n "$LOCK_FILE" ] ; then - touch $LOCK_FILE - fi - ;; - *) - remove_pid - echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\} - RETVAL=1 - ;; - esac - fi } stop_rabbitmq () { - status_rabbitmq quiet - if [ $RETVAL = 0 ] ; then - set +e - $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err - RETVAL=$? - set -e - if [ $RETVAL = 0 ] ; then - remove_pid - if [ -n "$LOCK_FILE" ] ; then - rm -f $LOCK_FILE - fi - else - echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err - fi - else - echo RabbitMQ is not running - RETVAL=0 - fi + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + set +e + $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err + RETVAL=$? + set -e + if [ $RETVAL = 0 ] ; then + remove_pid + if [ -n "$LOCK_FILE" ] ; then + rm -f $LOCK_FILE + fi + else + echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err + fi + else + echo RabbitMQ is not running + RETVAL=0 + fi } status_rabbitmq() { - set +e - if [ "$1" != "quiet" ] ; then - $CONTROL status 2>&1 - else - $CONTROL status > /dev/null 2>&1 - fi - if [ $? != 0 ] ; then - RETVAL=3 - fi - set -e + set +e + if [ "$1" != "quiet" ] ; then + $CONTROL status 2>&1 + else + $CONTROL status > /dev/null 2>&1 + fi + if [ $? != 0 ] ; then + RETVAL=3 + fi + set -e } rotate_logs_rabbitmq() { - set +e - $CONTROL rotate_logs ${ROTATE_SUFFIX} - if [ $? != 0 ] ; then - RETVAL=1 - fi - set -e + set +e + $CONTROL rotate_logs ${ROTATE_SUFFIX} + if [ $? != 0 ] ; then + RETVAL=1 + fi + set -e } restart_running_rabbitmq () { - status_rabbitmq quiet - if [ $RETVAL = 0 ] ; then - restart_rabbitmq - else - echo RabbitMQ is not runnning - RETVAL=0 - fi + status_rabbitmq quiet + if [ $RETVAL = 0 ] ; then + restart_rabbitmq + else + echo RabbitMQ is not runnning + RETVAL=0 + fi } restart_rabbitmq() { - stop_rabbitmq - start_rabbitmq + stop_rabbitmq + start_rabbitmq } case "$1" in - start) - echo -n "Starting $DESC: " - start_rabbitmq - echo "$NAME." - ;; - stop) - echo -n "Stopping $DESC: " - stop_rabbitmq - echo "$NAME." - ;; - status) - status_rabbitmq - ;; - rotate-logs) - echo -n "Rotating log files for $DESC: " - rotate_logs_rabbitmq - ;; - force-reload|reload|restart) - echo -n "Restarting $DESC: " - restart_rabbitmq - echo "$NAME." - ;; - try-restart) - echo -n "Restarting $DESC: " - restart_running_rabbitmq - echo "$NAME." - ;; - *) - echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2 - RETVAL=1 - ;; + start) + echo -n "Starting $DESC: " + start_rabbitmq + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + stop_rabbitmq + echo "$NAME." + ;; + status) + status_rabbitmq + ;; + rotate-logs) + echo -n "Rotating log files for $DESC: " + rotate_logs_rabbitmq + ;; + force-reload|reload|restart) + echo -n "Restarting $DESC: " + restart_rabbitmq + echo "$NAME." + ;; + try-restart) + echo -n "Restarting $DESC: " + restart_running_rabbitmq + echo "$NAME." + ;; + *) + echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2 + RETVAL=1 + ;; esac exit $RETVAL diff --git a/system/sbin/kazoo-bigcouch b/system/sbin/kazoo-bigcouch new file mode 100755 index 0000000..dbd6f44 --- /dev/null +++ b/system/sbin/kazoo-bigcouch @@ -0,0 +1,78 @@ +#!/bin/bash + +if [ -f /etc/sysconfig/bigcouch ]; then + . /etc/sysconfig/bigcouch +fi + +RETVAL=0 +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 +else + BEAM=beam.smp +fi + +start() { + mkdir -p ${HOME} + chown -R ${USER} ${HOME} + mkdir -p /var/log/bigcouch + chown -R ${USER} /var/log/bigcouch + + cd ${HOME} + if [ "$(whoami)" == "${USER}" ]; then + exec ${BIN_FILE} + else + exec su ${USER} -s /bin/bash -c "${BIN_FILE}" + fi + RETVAL=$? +} + +stop() { + for i in `pidof ${BEAM}`; do + if cat /proc/$i/cmdline | grep -Eq "name[^\-]+bigcouch"; then + kill $i + RETVAL=$? + fi + done +} + +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 +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status + ;; + *) + echo $"Usage: $0 (start|stop|status)" + RETVAL=1 +esac + +exit ${RETVAL} + diff --git a/system/sbin/kazoo-freeswitch b/system/sbin/kazoo-freeswitch new file mode 100755 index 0000000..2d3d36c --- /dev/null +++ b/system/sbin/kazoo-freeswitch @@ -0,0 +1,67 @@ +#!/bin/bash + +if [ -f /etc/sysconfig/freeswitch ]; then + . /etc/sysconfig/freeswitch +fi + +RETVAL=0 +USER=${FS_USER:-freeswitch} +CFG_FILE=${FS_CONFIG:-/etc/kazoo/freeswitch} +BIN_FILE=${FS_BIN:-/usr/bin/freeswitch} +export HOME=${FS_HOME:-/var/run/kazoo-freeswitch} + +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} + 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 + + cd ${HOME} + if [ "$(whoami)" == "${USER}" ]; then + exec ${BIN_FILE} ${FREESWITCH_ARGS} ${FREESWITCH_PARAMS} $@ + else + su ${USER} -s /bin/bash -c "exec ${BIN_FILE} ${FREESWITCH_ARGS} ${FREESWITCH_PARAMS} $@" + fi + RETVAL=$? +} + +stop() { + cd ${HOME} + ${BIN_FILE} -stop > /dev/null 2>&1 + killproc freeswitch + RETVAL=$? +} + +status() { + fs_cli -x 'status' + fs_cli -x 'erlang status' + RETVAL=$? +} + +case "$1" in + start) + shift + start -ncwait $@ + ;; + foreground) + shift + start $@ + ;; + stop) + stop + ;; + status) + status + ;; + *) + echo "Usage: freeswitch {start|stop|status}" + RETVAL=1 + ;; +esac +exit ${RETVAL} diff --git a/system/sbin/kazoo-haproxy b/system/sbin/kazoo-haproxy new file mode 100755 index 0000000..d858558 --- /dev/null +++ b/system/sbin/kazoo-haproxy @@ -0,0 +1,143 @@ +#!/bin/sh + +if [ -f /etc/sysconfig/haproxy ]; then + . /etc/sysconfig/haproxy +fi + +RETVAL=0 +USER=${HAPROXY_USER:-haproxy} +CFG_FILE=${HAPROXY_CONFIG:-/etc/kazoo/haproxy/haproxy.cfg} +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} +} + +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 + return + fi + + mkdir -p /var/run/haproxy + chown -R ${USER} /var/run/haproxy + mkdir -p /var/log/haproxy + chown -R ${USER} /var/log/haproxy + + cd ${HOME} + if [ "$(whoami)" == "${USER}" ]; then + exec ${BIN_FILE} -f ${CFG_FILE} -p ${PID_FILE} ${OPTIONS} $@ + else + exec su ${USER} -s /bin/bash -c "${BIN_FILE} -f ${CFG_FILE} -p ${PID_FILE} ${OPTIONS} $@" + fi + RETVAL=$? +} + +stop() { + kill $(cat ${PID_FILE}) + RETVAL=$? +} + +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 + 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 ! nc -U /tmp/haproxy.sock &> /dev/null; then + echo "Unable to connect to haproxy, ensure it is running!" + RETVAL=1 + return 1 + fi + echo -n "|" + for HEADER in $TABLE_HEADER; do + if [[ "${HEADER}" =~ "|" ]]; then + NAME="${HEADER%%|*}" + SIZE=${HEADER#*|} + else + NAME="${HEADER%%|*}" + SIZE=6 + fi + printf "%-${SIZE}s |" $NAME + done + echo + echo "show stat" | nc -U /tmp/haproxy.sock \ + | while IFS=',' read ${STATS}; do + if [ -z "$svname" ]; then + continue + fi + if [ "$svname" == 'svname' ]; then + continue + fi + if [ "$svname" == 'BACKEND' ]; then + continue + fi + if [ "$svname" == 'FRONTEND' ]; then + continue + fi + echo -n "|" + for VAR in $TABLE_VARS; do + if [[ "${VAR}" =~ "|" ]]; then + NAME="${VAR%%|*}" + SIZE=${VAR#*|} + else + NAME="${VAR%%|*}" + SIZE=6 + fi + eval VALUE=\$$NAME + if [ "${VAR}" == 'check_duration' ]; then + VALUE="${VALUE}ms" + fi + printf "%-${SIZE}s |" ${VALUE:-0} + done + echo + done +} + +case "$1" in + start|stop|restart|reload) + shift + $1 -D $@ + ;; + foreground) + shift + start $@ + ;; + check) + check + ;; + status) + status + ;; + *) + echo $"Usage: $0 {start|stop|restart|foreground|reload|check|status}" + RETVAL=1 +esac + +exit ${RETVAL} diff --git a/system/sbin/kazoo-rabbitmq b/system/sbin/kazoo-rabbitmq new file mode 100755 index 0000000..8241c79 --- /dev/null +++ b/system/sbin/kazoo-rabbitmq @@ -0,0 +1,51 @@ +#!/bin/bash -e + +RETVAL=0 +USER=${RABBITMQ_USER-rabbitmq} +CFG_FILE=${RABBITMQ_ENV:-/etc/kazoo/rabbitmq/rabbitmq-env.conf} +BIN_FILE=${RABBITMQ_BIN:-/usr/lib/rabbitmq/bin/rabbitmq-server} + +while read LINE; do + export RABBITMQ_$LINE +done < ${CFG_FILE} + +if [ -f /etc/sysconfig/bigcouch ]; then + . /etc/sysconfig/bigcouch +fi + +export HOME=${RABBITMQ_HOME-/var/lib/rabbitmq} +export RABBITMQ_CONFIG_FILE=/etc/kazoo/rabbitmq/rabbitmq +export RABBITMQ_ENABLED_PLUGINS_FILE=/etc/kazoo/rabbitmq/enabled_plugins +export RABBITMQ_NODENAME=kazoo-rabbitmq + +start() { + mkdir -p ${HOME} + chown -R ${USER} ${HOME} + mkdir -p /var/log/rabbitmq + chown -R ${USER} /var/log/rabbitmq + + cd ${HOME} + if [ "$(whoami)" == "${USER}" ]; then + exec ${BIN_FILE} $@ + else + exec su ${USER} -s /bin/bash -c "${BIN_FILE} $@" + fi + RETVAL=$? +} + +case "$1" in + start) + shift + start -detached $@ + ;; + foreground) + shift + start $@ + ;; + *) + exec /usr/lib/rabbitmq/bin/rabbitmqctl $@ + RETVAL=$? + ;; +esac + +exit ${RETVAL} diff --git a/system/systemd/kazoo-bigcouch.service b/system/systemd/kazoo-bigcouch.service new file mode 100644 index 0000000..31551e2 --- /dev/null +++ b/system/systemd/kazoo-bigcouch.service @@ -0,0 +1,14 @@ +[Unit] +Description=BigCouch DB Configured for Kazoo +After=syslog.target network.target + +[Service] +Type=forking +User=bigcouch +Group=daemon +WorkingDirectory=/srv +ExecStart=/usr/sbin/kazoo-bigcouch start +ExecStop=/usr/sbin/kazoo-bigcouch stop + +[Install] +WantedBy=multi-user.target diff --git a/system/systemd/kazoo-freeswitch.service b/system/systemd/kazoo-freeswitch.service new file mode 100644 index 0000000..d4f0fcb --- /dev/null +++ b/system/systemd/kazoo-freeswitch.service @@ -0,0 +1,16 @@ +[Unit] +Description=FreeSWITCH Configured for Kazoo +After=syslog.target network.target +After=postgresql.service postgresql-9.3.service postgresql-9.4.service mysqld.service httpd.service + +[Service] +User=freeswitch +# 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 +ExecStart=/usr/sbin/kazoo-freeswitch foreground -nc -nf +ExecReload=/usr/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/system/systemd/kazoo-haproxy.service b/system/systemd/kazoo-haproxy.service new file mode 100644 index 0000000..b5f8f25 --- /dev/null +++ b/system/systemd/kazoo-haproxy.service @@ -0,0 +1,15 @@ +[Unit] +Description=HAProxy Load Balancer Configured for Kazoo +After=syslog.target network.target + +[Service] +User=haproxy +Group=haproxy +Environment=HAPROXY_BIN=/usr/sbin/haproxy-systemd-wrapper +Environment=HAPROXY_PID=/run/haproxy.pid +ExecStart=/usr/sbin/kazoo-haproxy foreground +ExecReload=/bin/kill -USR2 $MAINPID + +[Install] +WantedBy=multi-user.target + diff --git a/system/systemd/kazoo-rabbitmq.service b/system/systemd/kazoo-rabbitmq.service new file mode 100644 index 0000000..adbcdec --- /dev/null +++ b/system/systemd/kazoo-rabbitmq.service @@ -0,0 +1,14 @@ +[Unit] +Description=RabbitMQ Broker Configured for Kazoo +After=syslog.target network.target + +[Service] +Type=notify +User=rabbitmq +Group=rabbitmq +WorkingDirectory=/var/lib/rabbitmq +ExecStart=/usr/sbin/kazoo-rabbitmq start +ExecStop=/usr/sbin/kazoo-rabbitmq stop + +[Install] +WantedBy=multi-user.target