#!/bin/bash if [ -f /etc/default/freeswitch ]; then . /etc/default/freeswitch fi if [ -f /etc/sysconfig/freeswitch ]; then . /etc/sysconfig/freeswitch fi RETVAL=1 USER=${FS_USER:-freeswitch} BIN_FILE=${FS_BIN:-/usr/bin/freeswitch} PID_FILE=${FS_PID:-/var/run/freeswitch/kazoo-freeswitch.pid} CFG_FILE=${FS_CONFIG:-/etc/kazoo/freeswitch} export HOME=${FS_HOME:-/var/lib/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 /usr/share/kazoo-freeswitch/sounds -storage /var/lib/kazoo-freeswitch/storage" fi prepare() { mkdir -p /var/log/freeswitch chown -R ${USER} /var/log/freeswitch mkdir -p /var/lib/kazoo-freeswitch/{db,cache,storage} chown -R ${USER} /var/lib/kazoo-freeswitch mkdir -p /usr/share/kazoo-freeswitch/sounds chown -R ${USER} /usr/share/kazoo-freeswitch/sounds mkdir -p /var/run/freeswitch chown -R ${USER} /var/run/freeswitch if [ -e ${PID_FILE} ]; then rm -rf ${PID_FILE} fi } start() { cd ${HOME} if fs_cli -x 'status' > /dev/null 2>&1; then echo "FreeSWITCH is already running!" return fi /usr/bin/epmd -daemon set -- ${BIN_FILE} ${FREESWITCH_ARGS} ${FREESWITCH_PARAMS} "$@" if [ "$(whoami)" == "${USER}" ]; then exec "$@" else exec sudo -u ${USER} "$@" fi RETVAL=$? if [ ${RETVAL} -ne 0 ]; then echo "Failed to start FreeSWITCH!" RETVAL=1 fi } stop() { cd ${HOME} ${BIN_FILE} -stop > /dev/null 2>&1 killproc freeswitch RETVAL=$? } 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 ;; background) shift start "-ncwait" $@ ;; start) shift start $@ ;; stop) stop ;; status) status ;; restart) restart ;; pause) pause ;; resume) resume ;; *) echo "Usage: freeswitch {prepare|start|background|stop|restart|status|pause|resume}" ;; esac exit ${RETVAL}