mirror of https://github.com/sipwise/kamailio.git
If the scripts exist during clean install, the postinst script will take care of adding kamailio-proxy and kamailio-lb rc2.d links. By default no run is set to these scripts so we make sure that we'll only run the templates ones.remotes/origin/3.3+ngcp2.6
parent
dca829eae1
commit
00fccf89f4
@ -0,0 +1,4 @@
|
||||
# do not use upstream script, we have our own
|
||||
# /etc/default/kamailio.* configuration, generated
|
||||
# via /etc/ngcp-config/templates/etc/default/kamailio.*
|
||||
RUN_KAMAILIO=no
|
||||
@ -0,0 +1,235 @@
|
||||
#!/bin/sh
|
||||
### BEGIN INIT INFO
|
||||
# Provides: kamailio-lb
|
||||
# Required-Start: $syslog $network $local_fs $time $remote_fs
|
||||
# Required-Stop: $syslog $network $local_fs $remote_fs
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start the Kamailio SIP proxy server
|
||||
# Description: Start the Kamailio SIP proxy server
|
||||
### END INIT INFO
|
||||
|
||||
TYPE=lb
|
||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
DAEMON=/usr/sbin/kamailio
|
||||
NAME=kamailio
|
||||
DESC=kamailio-$TYPE
|
||||
HOMEDIR=/var/run/kamailio
|
||||
PIDFILE=$HOMEDIR/$NAME.$TYPE.pid
|
||||
DEFAULTS=/etc/default/kamailio.$TYPE
|
||||
CFGFILE=/etc/kamailio/$TYPE/kamailio.cfg
|
||||
RUN_KAMAILIO=no
|
||||
|
||||
# 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.*" $CFGFILE; then
|
||||
echo "Not starting $DESC: fork=no specified in config file; run /etc/init.d/kamailio debug instead"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_kamailio_config ()
|
||||
{
|
||||
# Check if kamailio configuration is valid before starting the server
|
||||
set +e
|
||||
out=$($DAEMON $OPTIONS -c 2>&1 > /dev/null)
|
||||
retcode=$?
|
||||
set -e
|
||||
if [ "$retcode" != '0' ]; then
|
||||
echo "Not executing command for $DESC: invalid configuration file!"
|
||||
echo -e "\n$out\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_homedir ()
|
||||
{
|
||||
# Create HOMEDIR directory in case it doesn't exist
|
||||
if [ ! -d $HOMEDIR ]; then
|
||||
mkdir $HOMEDIR
|
||||
fi
|
||||
|
||||
# Set the appropiate owner and group
|
||||
chown ${USER}:${GROUP} $HOMEDIR
|
||||
}
|
||||
|
||||
|
||||
create_radius_seqfile ()
|
||||
{
|
||||
# Create a radius sequence file to be used by the radius client if
|
||||
# radius accounting is enabled. This is needed to avoid any issue
|
||||
# with the file not being writable if kamailio first starts as user
|
||||
# root because DUMP_CORE is enabled and creates this file as user
|
||||
# root and then later it switches back to user kamailio and cannot
|
||||
# write to the file. If the file exists before kamailio starts, it
|
||||
# won't change it's ownership and will be writable for both root
|
||||
# and kamailio, no matter what options are chosen at install time
|
||||
RADIUS_SEQ_FILE=$HOMEDIR/kamailio_radius.seq
|
||||
|
||||
if [ ! -f $RADIUS_SEQ_FILE ]; then
|
||||
touch $RADIUS_SEQ_FILE
|
||||
fi
|
||||
|
||||
chown ${USER}:${GROUP} $RADIUS_SEQ_FILE
|
||||
chmod 660 $RADIUS_SEQ_FILE
|
||||
}
|
||||
|
||||
|
||||
if [ ! -f $DAEMON ]; then
|
||||
echo "No $DESC daemon at $DAEMON."
|
||||
case "$1" in
|
||||
status)
|
||||
# LSB - 4: program or service status is unknown.
|
||||
exit 4
|
||||
;;
|
||||
*)
|
||||
# LSB - 5: program is not installed.
|
||||
exit 5
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
# Load startup options if available
|
||||
if [ -f $DEFAULTS ]; then
|
||||
. $DEFAULTS || true
|
||||
fi
|
||||
|
||||
|
||||
if [ "$RUN_KAMAILIO" != "yes" ]; then
|
||||
echo "$DESC not yet configured. Edit /etc/default/kamailio.$TYPE first."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
test -z "$SHM_MEMORY" && SHM_MEMORY=64
|
||||
test -z "$PKG_MEMORY" && PKG_MEMORY=4
|
||||
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=4
|
||||
[ -z "$USER" ] && USER=kamailio
|
||||
[ -z "$GROUP" ] && GROUP=kamailio
|
||||
|
||||
|
||||
if test "$DUMP_CORE" = "yes" ; then
|
||||
# set proper ulimit
|
||||
ulimit -c unlimited
|
||||
|
||||
# directory for the core dump files
|
||||
# COREDIR=/home/corefiles
|
||||
# [ -d $COREDIR ] || mkdir $COREDIR
|
||||
# chmod 777 $COREDIR
|
||||
# echo "$COREDIR/core.$TYPE.%e.sig%s.%p" > /proc/sys/kernel/core_pattern
|
||||
fi
|
||||
|
||||
|
||||
if [ "$SSD_SUID" != "yes" ]; then
|
||||
OPTIONS="-f $CFGFILE -P $PIDFILE -m $SHM_MEMORY -M $PKG_MEMORY -u $USER -g $GROUP"
|
||||
SSDOPTS=""
|
||||
else
|
||||
OPTIONS="-f $CFGFILE -P $PIDFILE -m $SHM_MEMORY -M $PKG_MEMORY"
|
||||
SSDOPTS="--chuid $USER:$GROUP"
|
||||
fi
|
||||
|
||||
|
||||
start_kamailio_daemon ()
|
||||
{
|
||||
start-stop-daemon --start --quiet --pidfile $PIDFILE $SSDOPTS \
|
||||
--exec $DAEMON -- $OPTIONS
|
||||
res=$?
|
||||
|
||||
echo -n "$NAME "
|
||||
if [ $res -eq 0 ] ; then
|
||||
echo "started."
|
||||
exit 0
|
||||
else
|
||||
if [ ! -r "$PIDFILE" ]; then
|
||||
echo "error, failed to start."
|
||||
exit 1
|
||||
elif read pid < "$PIDFILE" && ps -p "$pid" > /dev/null 2>&1; then
|
||||
echo "already running."
|
||||
exit 0
|
||||
else
|
||||
echo "error, failed to start ($PIDFILE exists)."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
start|debug)
|
||||
check_kamailio_config
|
||||
check_homedir
|
||||
create_radius_seqfile
|
||||
|
||||
if [ "$1" != "debug" ]; then
|
||||
check_fork
|
||||
fi
|
||||
|
||||
echo "Starting $DESC using $CFGFILE: "
|
||||
set +e
|
||||
start_kamailio_daemon
|
||||
;;
|
||||
|
||||
stop)
|
||||
check_kamailio_config
|
||||
echo "Stopping $DESC:"
|
||||
start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
|
||||
--exec $DAEMON
|
||||
echo -n "$NAME "
|
||||
if [ $? -eq 0 ] ; then
|
||||
echo "stopped."
|
||||
exit 0
|
||||
else
|
||||
echo "failed to stop."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
restart|force-reload)
|
||||
check_kamailio_config
|
||||
check_homedir
|
||||
create_radius_seqfile
|
||||
|
||||
echo "Restarting $DESC:"
|
||||
set +e
|
||||
start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE --retry=5 \
|
||||
--exec $DAEMON
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "$NAME failed to stop."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
start_kamailio_daemon
|
||||
;;
|
||||
|
||||
status)
|
||||
echo -n "Status of $DESC: $NAME "
|
||||
if [ ! -r "$PIDFILE" ]; then
|
||||
echo "is not running."
|
||||
exit 3
|
||||
fi
|
||||
if read pid < "$PIDFILE" && ps -p "$pid" > /dev/null 2>&1; then
|
||||
echo "is running."
|
||||
exit 0
|
||||
else
|
||||
echo "is not running but $PIDFILE exists."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
N=/etc/init.d/$NAME
|
||||
echo "Usage: $N {start|stop|restart|force-reload|debug|status}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@ -0,0 +1,4 @@
|
||||
# do not use upstream script, we have our own
|
||||
# /etc/default/kamailio.* configuration, generated
|
||||
# via /etc/ngcp-config/templates/etc/default/kamailio.*
|
||||
RUN_KAMAILIO=no
|
||||
@ -0,0 +1,235 @@
|
||||
#!/bin/sh
|
||||
### BEGIN INIT INFO
|
||||
# Provides: kamailio-proxy
|
||||
# Required-Start: $syslog $network $local_fs $time $remote_fs
|
||||
# Required-Stop: $syslog $network $local_fs $remote_fs
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start the Kamailio SIP proxy server
|
||||
# Description: Start the Kamailio SIP proxy server
|
||||
### END INIT INFO
|
||||
|
||||
TYPE=proxy
|
||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
DAEMON=/usr/sbin/kamailio
|
||||
NAME=kamailio
|
||||
DESC=kamailio-$TYPE
|
||||
HOMEDIR=/var/run/kamailio
|
||||
PIDFILE=$HOMEDIR/$NAME.$TYPE.pid
|
||||
DEFAULTS=/etc/default/kamailio.$TYPE
|
||||
CFGFILE=/etc/kamailio/$TYPE/kamailio.cfg
|
||||
RUN_KAMAILIO=no
|
||||
|
||||
# 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.*" $CFGFILE; then
|
||||
echo "Not starting $DESC: fork=no specified in config file; run /etc/init.d/kamailio debug instead"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_kamailio_config ()
|
||||
{
|
||||
# Check if kamailio configuration is valid before starting the server
|
||||
set +e
|
||||
out=$($DAEMON $OPTIONS -c 2>&1 > /dev/null)
|
||||
retcode=$?
|
||||
set -e
|
||||
if [ "$retcode" != '0' ]; then
|
||||
echo "Not executing command for $DESC: invalid configuration file!"
|
||||
echo -e "\n$out\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_homedir ()
|
||||
{
|
||||
# Create HOMEDIR directory in case it doesn't exist
|
||||
if [ ! -d $HOMEDIR ]; then
|
||||
mkdir $HOMEDIR
|
||||
fi
|
||||
|
||||
# Set the appropiate owner and group
|
||||
chown ${USER}:${GROUP} $HOMEDIR
|
||||
}
|
||||
|
||||
|
||||
create_radius_seqfile ()
|
||||
{
|
||||
# Create a radius sequence file to be used by the radius client if
|
||||
# radius accounting is enabled. This is needed to avoid any issue
|
||||
# with the file not being writable if kamailio first starts as user
|
||||
# root because DUMP_CORE is enabled and creates this file as user
|
||||
# root and then later it switches back to user kamailio and cannot
|
||||
# write to the file. If the file exists before kamailio starts, it
|
||||
# won't change it's ownership and will be writable for both root
|
||||
# and kamailio, no matter what options are chosen at install time
|
||||
RADIUS_SEQ_FILE=$HOMEDIR/kamailio_radius.seq
|
||||
|
||||
if [ ! -f $RADIUS_SEQ_FILE ]; then
|
||||
touch $RADIUS_SEQ_FILE
|
||||
fi
|
||||
|
||||
chown ${USER}:${GROUP} $RADIUS_SEQ_FILE
|
||||
chmod 660 $RADIUS_SEQ_FILE
|
||||
}
|
||||
|
||||
|
||||
if [ ! -f $DAEMON ]; then
|
||||
echo "No $DESC daemon at $DAEMON."
|
||||
case "$1" in
|
||||
status)
|
||||
# LSB - 4: program or service status is unknown.
|
||||
exit 4
|
||||
;;
|
||||
*)
|
||||
# LSB - 5: program is not installed.
|
||||
exit 5
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
# Load startup options if available
|
||||
if [ -f $DEFAULTS ]; then
|
||||
. $DEFAULTS || true
|
||||
fi
|
||||
|
||||
|
||||
if [ "$RUN_KAMAILIO" != "yes" ]; then
|
||||
echo "$DESC not yet configured. Edit /etc/default/kamailio.$TYPE first."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
test -z "$SHM_MEMORY" && SHM_MEMORY=64
|
||||
test -z "$PKG_MEMORY" && PKG_MEMORY=4
|
||||
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=4
|
||||
[ -z "$USER" ] && USER=kamailio
|
||||
[ -z "$GROUP" ] && GROUP=kamailio
|
||||
|
||||
|
||||
if test "$DUMP_CORE" = "yes" ; then
|
||||
# set proper ulimit
|
||||
ulimit -c unlimited
|
||||
|
||||
# directory for the core dump files
|
||||
# COREDIR=/home/corefiles
|
||||
# [ -d $COREDIR ] || mkdir $COREDIR
|
||||
# chmod 777 $COREDIR
|
||||
# echo "$COREDIR/core.$TYPE.%e.sig%s.%p" > /proc/sys/kernel/core_pattern
|
||||
fi
|
||||
|
||||
|
||||
if [ "$SSD_SUID" != "yes" ]; then
|
||||
OPTIONS="-f $CFGFILE -P $PIDFILE -m $SHM_MEMORY -M $PKG_MEMORY -u $USER -g $GROUP"
|
||||
SSDOPTS=""
|
||||
else
|
||||
OPTIONS="-f $CFGFILE -P $PIDFILE -m $SHM_MEMORY -M $PKG_MEMORY"
|
||||
SSDOPTS="--chuid $USER:$GROUP"
|
||||
fi
|
||||
|
||||
|
||||
start_kamailio_daemon ()
|
||||
{
|
||||
start-stop-daemon --start --quiet --pidfile $PIDFILE $SSDOPTS \
|
||||
--exec $DAEMON -- $OPTIONS
|
||||
res=$?
|
||||
|
||||
echo -n "$NAME "
|
||||
if [ $res -eq 0 ] ; then
|
||||
echo "started."
|
||||
exit 0
|
||||
else
|
||||
if [ ! -r "$PIDFILE" ]; then
|
||||
echo "error, failed to start."
|
||||
exit 1
|
||||
elif read pid < "$PIDFILE" && ps -p "$pid" > /dev/null 2>&1; then
|
||||
echo "already running."
|
||||
exit 0
|
||||
else
|
||||
echo "error, failed to start ($PIDFILE exists)."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
start|debug)
|
||||
check_kamailio_config
|
||||
check_homedir
|
||||
create_radius_seqfile
|
||||
|
||||
if [ "$1" != "debug" ]; then
|
||||
check_fork
|
||||
fi
|
||||
|
||||
echo "Starting $DESC using $CFGFILE: "
|
||||
set +e
|
||||
start_kamailio_daemon
|
||||
;;
|
||||
|
||||
stop)
|
||||
check_kamailio_config
|
||||
echo "Stopping $DESC:"
|
||||
start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
|
||||
--exec $DAEMON
|
||||
echo -n "$NAME "
|
||||
if [ $? -eq 0 ] ; then
|
||||
echo "stopped."
|
||||
exit 0
|
||||
else
|
||||
echo "failed to stop."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
restart|force-reload)
|
||||
check_kamailio_config
|
||||
check_homedir
|
||||
create_radius_seqfile
|
||||
|
||||
echo "Restarting $DESC:"
|
||||
set +e
|
||||
start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE --retry=5 \
|
||||
--exec $DAEMON
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "$NAME failed to stop."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
start_kamailio_daemon
|
||||
;;
|
||||
|
||||
status)
|
||||
echo -n "Status of $DESC: $NAME "
|
||||
if [ ! -r "$PIDFILE" ]; then
|
||||
echo "is not running."
|
||||
exit 3
|
||||
fi
|
||||
if read pid < "$PIDFILE" && ps -p "$pid" > /dev/null 2>&1; then
|
||||
echo "is running."
|
||||
exit 0
|
||||
else
|
||||
echo "is not running but $PIDFILE exists."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
N=/etc/init.d/$NAME
|
||||
echo "Usage: $N {start|stop|restart|force-reload|debug|status}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
Loading…
Reference in new issue