diff --git a/pkg/kamailio/deb/squeeze/kamailio-lb.default b/pkg/kamailio/deb/squeeze/kamailio-lb.default new file mode 100644 index 000000000..89508675f --- /dev/null +++ b/pkg/kamailio/deb/squeeze/kamailio-lb.default @@ -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 diff --git a/pkg/kamailio/deb/squeeze/kamailio-lb.init b/pkg/kamailio/deb/squeeze/kamailio-lb.init new file mode 100755 index 000000000..901b58a1c --- /dev/null +++ b/pkg/kamailio/deb/squeeze/kamailio-lb.init @@ -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 diff --git a/pkg/kamailio/deb/squeeze/kamailio-proxy.default b/pkg/kamailio/deb/squeeze/kamailio-proxy.default new file mode 100644 index 000000000..89508675f --- /dev/null +++ b/pkg/kamailio/deb/squeeze/kamailio-proxy.default @@ -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 diff --git a/pkg/kamailio/deb/squeeze/kamailio-proxy.init b/pkg/kamailio/deb/squeeze/kamailio-proxy.init new file mode 100755 index 000000000..8637dcf62 --- /dev/null +++ b/pkg/kamailio/deb/squeeze/kamailio-proxy.init @@ -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 diff --git a/pkg/kamailio/deb/squeeze/rules b/pkg/kamailio/deb/squeeze/rules index 1678846a4..1a3f0d4ce 100755 --- a/pkg/kamailio/deb/squeeze/rules +++ b/pkg/kamailio/deb/squeeze/rules @@ -186,7 +186,8 @@ binary-common: # dh_installemacsen # dh_installpam # dh_installmime - dh_installinit -- defaults 23 + dh_installinit --name=kamailio-lb + dh_installinit --name=kamailio-proxy dh_installcron dh_installman dh_installinfo