mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-02-04 18:27:36 +00:00
b0050f519e
Depending on which packages are installed, the README.Debian file might not be there, so we'll spell out the instructions more directly.
135 lines
3.2 KiB
Bash
135 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
|
|
GROUP=freeswitch
|
|
DAEMON_ARGS="-u $USER -g $GROUP -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:$GROUP $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
|