#!/bin/bash
|
|
|
|
if [ -f /etc/default/kamailio ]; then
|
|
. /etc/default/kamailio
|
|
fi
|
|
|
|
if [ -f /etc/sysconfig/kamailio ]; then
|
|
. /etc/sysconfig/kamailio
|
|
fi
|
|
|
|
RETVAL=0
|
|
USER=${KAMAILIO_USER:-kamailio}
|
|
GROUP=${KAMAILIO_GROUP:-kamailio}
|
|
BIN_FILE=${KAMAILIO_BIN:-/usr/sbin/kamailio}
|
|
PID_FILE=${KAMAILIO_PID:-/var/run/kamailio/kazoo-kamailio.pid}
|
|
CFG_FILE=${KAMAILIO_CONFIG:-/etc/kazoo/kamailio/kamailio.cfg}
|
|
export HOME=${KAMAILIO_HOME:-/var/run/kamailio}
|
|
|
|
SHM_MEMORY=$((`echo $SHM_MEMORY | sed -e 's/[^0-9]//g'`))
|
|
PKG_MEMORY=$((`echo $PKG_MEMORY | sed -e 's/[^0-9]//g'`))
|
|
[ $SHM_MEMORY -le 0 ] && SHM_MEMORY=64
|
|
[ $PKG_MEMORY -le 0 ] && PKG_MEMORY=8
|
|
|
|
if test "$DUMP_CORE" = "yes" ; then
|
|
ulimit -c unlimited
|
|
fi
|
|
|
|
prepare() {
|
|
mkdir -p /var/run/kamailio
|
|
chown -R ${USER} /var/run/kamailio
|
|
if [ -e ${PID_FILE} ]; then
|
|
rm -rf ${PID_FILE}
|
|
fi
|
|
}
|
|
|
|
start() {
|
|
cd ${HOME}
|
|
|
|
check_config
|
|
check_fork
|
|
|
|
if [ "$(whoami)" == "${USER}" ]; then
|
|
set -- ${BIN_FILE} -f ${CFG_FILE} -m ${SHM_MEMORY} -M ${PKG_MEMORY} ${EXTRA_OPTIONS} "$@"
|
|
exec "$@"
|
|
else
|
|
set -- ${BIN_FILE} -f ${CFG_FILE} -m ${SHM_MEMORY} -M ${PKG_MEMORY} -u ${USER} -g ${GROUP} ${EXTRA_OPTIONS} "$@"
|
|
exec sudo -u ${USER} "$@"
|
|
fi
|
|
RETVAL=$?
|
|
|
|
if [ ${RETVAL} -ne 0 ]; then
|
|
echo "Failed to start Kamailio!"
|
|
RETVAL=1
|
|
fi
|
|
}
|
|
|
|
stop() {
|
|
killall ${BIN_FILE}
|
|
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
|
|
;;
|
|
background)
|
|
shift
|
|
start $@
|
|
;;
|
|
start)
|
|
shift
|
|
start -DD -E $@
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
restart)
|
|
restart
|
|
;;
|
|
status)
|
|
status
|
|
;;
|
|
check)
|
|
check_config
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {prepare|start|background|stop|restart|status|check|pid}"
|
|
RETVAL=1
|
|
esac
|
|
|
|
exit ${RETVAL}
|