forked from Mirrors/freeswitch
e3a647810c
When '-g' is passed, freeswitch drops all other groups except for the given group. This impacts people who depend on FS having access to resources that would be allowed by membership to those other groups. It was possible to override this by setting DAEMON_ARGS in /etc/default/freeswitch, but we'll go ahead and make this the default. Since freeswitch uses the primary group of a user when `-g` is omitted, we'll just omit it, and do similarly when setting the ownership of our directory in /var/run. Edited-by: Travis Cross <tc@traviscross.com>
134 lines
3.2 KiB
Bash
134 lines
3.2 KiB
Bash
#!/bin/sh
|
|
### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*-
|
|
### BEGIN INIT INFO
|
|
# Provides: freeswitch
|
|
# Required-Start: $network $remote_fs $local_fs
|
|
# Required-Stop: $network $remote_fs $local_fs
|
|
# Should-Start: postgresql mysql memcached mongodb
|
|
# Should-Stop: postgresql mysql memcached mongodb
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: FreeSWITCH Softswitch
|
|
# Description: FreeSWITCH Softswitch
|
|
### END INIT INFO
|
|
|
|
# Author: Travis Cross <tc@traviscross.com>
|
|
|
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
|
DESC=freeswitch
|
|
NAME=freeswitch
|
|
DAEMON=/usr/bin/freeswitch
|
|
USER=freeswitch
|
|
DAEMON_ARGS="-u $USER -ncwait"
|
|
CONFDIR=/etc/$NAME
|
|
RUNDIR=/var/run/$NAME
|
|
PIDFILE=$RUNDIR/$NAME.pid
|
|
SCRIPTNAME=/etc/init.d/$NAME
|
|
WORKDIR=/var/lib/$NAME
|
|
|
|
[ -x $DAEMON ] || exit 0
|
|
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
|
. /lib/init/vars.sh
|
|
. /lib/lsb/init-functions
|
|
|
|
do_start() {
|
|
if ! [ -f $CONFDIR/freeswitch.xml ]; then
|
|
echo "$NAME is not configured so not starting.">&2
|
|
echo "Please add configuration under /etc/freeswitch">&2
|
|
echo "e.g. Install freeswitch-conf-vanilla, then:">&2
|
|
echo "cp -a /usr/share/freeswitch/conf/vanilla /etc/freeswitch">&2
|
|
return 3
|
|
fi
|
|
|
|
# Directory in /var/run may disappear on reboot (e.g. when tmpfs used for /var/run).
|
|
mkdir -p $RUNDIR
|
|
chown -R $USER: $RUNDIR
|
|
chmod -R ug=rwX,o= $RUNDIR
|
|
|
|
start-stop-daemon --start --quiet \
|
|
--pidfile $PIDFILE --exec $DAEMON --name $NAME --user $USER \
|
|
--test > /dev/null \
|
|
|| return 1
|
|
ulimit -s 240
|
|
start-stop-daemon --start --quiet \
|
|
--pidfile $PIDFILE --exec $DAEMON --name $NAME --user $USER \
|
|
--chdir $WORKDIR -- $DAEMON_ARGS $DAEMON_OPTS \
|
|
|| return 2
|
|
return 0
|
|
}
|
|
|
|
stop_fs() {
|
|
start-stop-daemon --stop --quiet \
|
|
--pidfile $PIDFILE --name $NAME --user $USER \
|
|
--retry=TERM/30/KILL/5
|
|
}
|
|
|
|
stop_fs_children() {
|
|
start-stop-daemon --stop --quiet \
|
|
--exec $DAEMON \
|
|
--oknodo --retry=0/30/KILL/5
|
|
}
|
|
|
|
do_stop() {
|
|
stop_fs
|
|
RETVAL="$?"
|
|
[ "$RETVAL" -eq 2 ] && return 2
|
|
stop_fs_children
|
|
[ "$?" -eq 2 ] && return 2
|
|
rm -f $PIDFILE
|
|
return "$RETVAL"
|
|
}
|
|
|
|
do_reload() {
|
|
start-stop-daemon --stop --quiet \
|
|
--pidfile $PIDFILE --name $NAME --user $USER \
|
|
--signal HUP
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
|
|
do_start
|
|
case "$?" in
|
|
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
|
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
|
esac
|
|
;;
|
|
stop)
|
|
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
|
|
do_stop
|
|
case "$?" in
|
|
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
|
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
|
esac
|
|
;;
|
|
status)
|
|
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
|
|
;;
|
|
reload|force-reload)
|
|
log_daemon_msg "Reloading $DESC" "$NAME"
|
|
do_reload
|
|
log_end_msg $?
|
|
;;
|
|
restart)
|
|
log_daemon_msg "Restarting $DESC" "$NAME"
|
|
do_stop
|
|
case "$?" in
|
|
0|1)
|
|
do_start
|
|
case "$?" in
|
|
0) log_end_msg 0 ;;
|
|
1|*) log_end_msg 1 ;;
|
|
esac
|
|
;;
|
|
*) log_end_msg 1 ;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
|
|
exit 3
|
|
;;
|
|
esac
|
|
|
|
exit 0
|