From 14d74e0ffc9342777ee199aa6e48eba9b3228f81 Mon Sep 17 00:00:00 2001 From: tianyu Date: Tue, 20 Jan 2015 12:34:30 +0800 Subject: [PATCH] Create rpm.opensips.init --- opensips/rpm.opensips.init | 133 +++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 opensips/rpm.opensips.init diff --git a/opensips/rpm.opensips.init b/opensips/rpm.opensips.init new file mode 100644 index 0000000..17c202b --- /dev/null +++ b/opensips/rpm.opensips.init @@ -0,0 +1,133 @@ +#!/bin/bash +# +# Startup script for OpenSIPS +# +# chkconfig: 345 85 15 +# description: OpenSIPS is a fast SIP Server. +# +# processname: opensips +# pidfile: /var/run/opensips.pid +# config: /etc/opensips/opensips.cfg + +# Source function library. +. /etc/rc.d/init.d/functions + +OSER=/sbin/opensips +PROG=opensips +PID_FILE=/var/run/opensips.pid +LOCK_FILE=/var/lock/subsys/opensips +RETVAL=0 +DEFAULTS=/etc/default/opensips +RUN_OPENSIPS=no + +EMAIL_SCRIPT=/etc/opensips/mail2.sh +EMAIL_CONF=/etc/opensips/mail.cfg +CORE_DUMP=/tmp + +# Do not start opensips 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.*" /etc/opensips/opensips.cfg; then + echo "Not starting $DESC: fork=no specified in config file; run /etc/init.d/opensips debug instead" + exit 1 + fi +} + +check_opensips_config () +{ + # Check if opensips configuration is valid before starting the server + out=$($OSER -c 2>&1 > /dev/null) + retcode=$? + if [ "$retcode" != '0' ]; then + echo "Not starting $DESC: invalid configuration file!" + echo -e "\n$out\n" + exit 1 + fi +} + + +start() { + check_opensips_config + if [ "$1" != "debug" ]; then + check_fork + fi + echo -n $"Starting $PROG: " + daemon $OSER $OPTIONS >/dev/null 2>/dev/null + RETVAL=$? + echo + [ $RETVAL = 0 ] && touch $LOCK_FILE + return $RETVAL +} + +stop() { + echo -n $"Stopping $PROG: " + killproc $OSER + RETVAL=$? + echo + [ $RETVAL = 0 ] && rm -f $LOCK_FILE $PID_FILE +} + +# Load startup options if available +if [ -f $DEFAULTS ]; then + . $DEFAULTS || true +fi + +if [ "$RUN_OPENSIPS" != "yes" ]; then + echo "OpenSIPS not yet configured. Edit /etc/default/opensips first." + exit 0 +fi + + +S_MEMORY=$((`echo $S_MEMORY | sed -e 's/[^0-9]//g'`)) +P_MEMORY=$((`echo $P_MEMORY | sed -e 's/[^0-9]//g'`)) +[ -z "$USER" ] && USER=opensips +[ -z "$GROUP" ] && GROUP=opensips +[ $S_MEMORY -le 0 ] && S_MEMORY=32 +[ $P_MEMORY -le 0 ] && P_MEMORY=4 + +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.%e.sig%s.%p" > /proc/sys/kernel/core_pattern +fi + +OPTIONS="-P $PID_FILE -m $S_MEMORY -M $P_MEMORY -u $USER -g $GROUP -w $CORE_DUMP" + + +# See how we were called. +case "$1" in + start|debug) + start + $EMAIL_SCRIPT "started" "service opensips" $EMAIL_CONF & + ;; + stop) + stop + $EMAIL_SCRIPT "stoped" "service opensips" $EMAIL_CONF & + ;; + status) + status $OSER + RETVAL=$? + ;; + restart) + stop + start + $EMAIL_SCRIPT "restarted" "service opensips" $EMAIL_CONF & + ;; + condrestart) + if [ -f $PID_FILE ] ; then + stop + start + fi + ;; + *) + echo $"Usage: $PROG {start|stop|restart|condrestart|status|debug|help}" + exit 1 +esac + +exit $RETVAL