-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkamailio.init
125 lines (110 loc) · 2.67 KB
/
kamailio.init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/bash
#
# Startup script for Kamailio
#
# chkconfig: 345 85 15
# description: Kamailio is a fast, reliable and flexible SIP Server.
# processname: kamailio
# pidfile: /var/run/kamailio.pid
# config: /etc/kamailio/kamailio.cfg
#
# Source function library.
. /etc/rc.d/init.d/functions
KAM=/usr/sbin/kamailio
PROG=kamailio
PID_FILE=/var/run/kamailio.pid
LOCK_FILE=/var/lock/subsys/kamailio
RETVAL=0
DEFAULTS=/etc/default/kamailio
RUN_KAMAILIO=no
CFG_FILE=/etc/kamailio/kamailio.cfg
# 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 "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
out=$($KAM -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_kamailio_config
if [ "$1" != "debug" ]; then
check_fork
fi
echo -n $"Starting $PROG: "
daemon $KAM $OPTIONS >/dev/null 2>/dev/null
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch $LOCK_FILE && success
return $RETVAL
}
stop() {
echo -n $"Stopping $PROG: "
killproc $KAM
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f $LOCK_FILE $PID_FILE
}
# Load startup options if available
if [ -f $DEFAULTS ]; then
. $DEFAULTS || true
fi
if [ "$RUN_KAMAILIO" != "yes" ]; then
echo "Kamailio not yet configured. Edit /etc/default/kamailio first."
exit 0
fi
SHM_MEMORY=$((`echo $SHM_MEMORY | sed -e 's/[^0-9]//g'`))
PKG_MEMORY=$((`echo $PKG_MEMORY | sed -e 's/[^0-9]//g'`))
[ -z "$USER" ] && USER=kamailio
[ -z "$GROUP" ] && GROUP=kamailio
[ $SHM_MEMORY -le 0 ] && SHM_MEMORY=64
[ $PKG_MEMORY -le 0 ] && PKG_MEMORY=8
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 $SHM_MEMORY -M $PKG_MEMORY -u $USER -g $GROUP $EXTRA_OPTIONS"
# See how we were called.
case "$1" in
start|debug)
start
;;
stop)
stop
;;
status)
status $KAM
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f $PID_FILE ] ; then
stop
start
fi
;;
*)
echo $"Usage: $PROG {start|stop|restart|condrestart|status|debug|help}"
exit 1
esac
exit $RETVAL