|
|
|
@ -0,0 +1,138 @@ |
|
|
|
#! /bin/sh |
|
|
|
### BEGIN INIT INFO |
|
|
|
# Provides: mediaproxy-ng |
|
|
|
# Required-Start: $remote_fs $syslog |
|
|
|
# Required-Stop: $remote_fs $syslog |
|
|
|
# Default-Start: 2 3 4 5 |
|
|
|
# Default-Stop: 0 1 6 |
|
|
|
# Short-Description: Ngcp Mediaproxy-ng |
|
|
|
# Description: Proxy for RTP and other media streams |
|
|
|
### END INIT INFO |
|
|
|
|
|
|
|
|
|
|
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin |
|
|
|
NAME=ngcp-mediaproxy-ng-daemon |
|
|
|
DESC="RTP/media proxy" |
|
|
|
RUN_MEDIAPROXY=no |
|
|
|
TABLE=0 |
|
|
|
|
|
|
|
case $(dirname $0) in |
|
|
|
/*) FULLPATH=$(dirname $0);; |
|
|
|
*) FULLPATH=$(pwd)/$(dirname $0);; |
|
|
|
esac |
|
|
|
|
|
|
|
DAEMON=`which mediaproxy-ng` |
|
|
|
DEFAULTS=/etc/default/${NAME} |
|
|
|
|
|
|
|
test -f $DAEMON || exit 0 |
|
|
|
|
|
|
|
# Load startup options if available |
|
|
|
if [ -f $DEFAULTS ]; then |
|
|
|
. $DEFAULTS || true |
|
|
|
fi |
|
|
|
|
|
|
|
if [ "$RUN_MEDIAPROXY" != "yes" ]; then |
|
|
|
echo "mediaproxy-ng not yet configured. Edit $DEFAULTS first." |
|
|
|
exit 0 |
|
|
|
fi |
|
|
|
[ -z "$PIDFILE" ] && PIDFILE="/var/run/mediaproxy-ng.pid" |
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
|
|
. /lib/lsb/init-functions |
|
|
|
|
|
|
|
OPTIONS="" |
|
|
|
|
|
|
|
[ -z "$ADDRESS" ] || OPTIONS="$OPTIONS --ip=$ADDRESS" |
|
|
|
[ -z "$LISTEN" ] || OPTIONS="$OPTIONS --listen=$LISTEN" |
|
|
|
[ -z "$LISTEN_UDP" ] || OPTIONS="$OPTIONS --listen-udp=$LISTEN_UDP" |
|
|
|
[ -z "$TIMEOUT" ] || OPTIONS="$OPTIONS --timeout=$TIMEOUT" |
|
|
|
[ -z "$SILENT_TIMEOUT" ] || OPTIONS="$OPTIONS --silent-timeout=$SILENT_TIMEOUT" |
|
|
|
[ -z "$PIDFILE" ] || OPTIONS="$OPTIONS --pidfile=$PIDFILE" |
|
|
|
[ -z "$TOS" ] || OPTIONS="$OPTIONS --tos=$TOS" |
|
|
|
[ -z "$PORT_MIN" ] || OPTIONS="$OPTIONS --port-min=$PORT_MIN" |
|
|
|
[ -z "$PORT_MAX" ] || OPTIONS="$OPTIONS --port-max=$PORT_MAX" |
|
|
|
[ -z "$ADV_ADDRESS" ] || OPTIONS="$OPTIONS --advertised-ip=$ADV_ADDRESS" |
|
|
|
[ -z "$ADDRESS_IPV6" ] || OPTIONS="$OPTIONS --ip6=$ADDRESS_IPV6" |
|
|
|
[ -z "$ADV_ADDRESS_IPV6" ] || OPTIONS="$OPTIONS --advertised-ip6=$ADV_ADDRESS_IPV6" |
|
|
|
[ -z "$REDIS" ] || OPTIONS="$OPTIONS --redis=$REDIS" |
|
|
|
[ -z "$REDIS_DB" ] || OPTIONS="$OPTIONS --redis-db=$REDIS_DB" |
|
|
|
[ -z "$B2B_URL" ] || OPTIONS="$OPTIONS --b2b-url=$B2B_URL" |
|
|
|
[ -z "$NO_FALLBACK" -o \( "$NO_FALLBACK" != "1" -a "$NO_FALLBACK" != "yes" \) ] || OPTIONS="$OPTIONS --no-fallback" |
|
|
|
OPTIONS="$OPTIONS --table=$TABLE" |
|
|
|
if test "$FORK" = "no" ; then |
|
|
|
OPTIONS="$OPTIONS --foreground" |
|
|
|
fi |
|
|
|
|
|
|
|
case "$1" in |
|
|
|
start) |
|
|
|
|
|
|
|
echo -n "Starting $DESC: $NAME" |
|
|
|
set +e |
|
|
|
modprobe xt_MEDIAPROXY |
|
|
|
echo "del $TABLE" > /proc/mediaproxy/control 2>/dev/null |
|
|
|
iptables -D INPUT -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
iptables -D INPUT -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
ip6tables -D INPUT -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
iptables -I INPUT -p udp -j MEDIAPROXY --id $TABLE |
|
|
|
ip6tables -I INPUT -p udp -j MEDIAPROXY --id $TABLE |
|
|
|
set -e |
|
|
|
start-stop-daemon --start --quiet --pidfile $PIDFILE \ |
|
|
|
--exec $DAEMON -- $OPTIONS || echo -n " already running" |
|
|
|
log_end_msg $? |
|
|
|
;; |
|
|
|
stop) |
|
|
|
echo -n "Stopping $DESC: $NAME" |
|
|
|
start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ |
|
|
|
--exec $DAEMON |
|
|
|
if [ "$?" -ne 0 ]; then |
|
|
|
return $? |
|
|
|
fi |
|
|
|
set +e |
|
|
|
echo "del $TABLE" > /proc/mediaproxy/control 2>/dev/null |
|
|
|
iptables -D INPUT -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
iptables -D INPUT -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
ip6tables -D INPUT -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
rmmod ipt_MEDIAPROXY 2>/dev/null |
|
|
|
rmmod xt_MEDIAPROXY 2>/dev/null |
|
|
|
set -e |
|
|
|
rm -f $PIDFILE |
|
|
|
log_end_msg $? |
|
|
|
;; |
|
|
|
restart|force-reload) |
|
|
|
|
|
|
|
echo -n "Restarting $DESC: $NAME" |
|
|
|
start-stop-daemon --oknodo --stop --quiet --pidfile \ |
|
|
|
$PIDFILE --exec $DAEMON |
|
|
|
if [ "$?" -ne 0 ]; then |
|
|
|
return $? |
|
|
|
fi |
|
|
|
rm -f $PIDFILE |
|
|
|
sleep 1 |
|
|
|
set +e |
|
|
|
if [ -e /proc/mediaproxy/control ]; then |
|
|
|
echo "del $TABLE" > /proc/mediaproxy/control 2>/dev/null |
|
|
|
fi |
|
|
|
iptables -D INPUT -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
iptables -D INPUT -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
ip6tables -D INPUT -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null |
|
|
|
rmmod ipt_MEDIAPROXY 2>/dev/null |
|
|
|
rmmod xt_MEDIAPROXY 2>/dev/null |
|
|
|
modprobe xt_MEDIAPROXY |
|
|
|
iptables -I INPUT -p udp -j MEDIAPROXY --id $TABLE |
|
|
|
ip6tables -I INPUT -p udp -j MEDIAPROXY --id $TABLE |
|
|
|
set -e |
|
|
|
start-stop-daemon --start --quiet --pidfile \ |
|
|
|
$PIDFILE --exec $DAEMON -- $OPTIONS |
|
|
|
log_end_msg $? |
|
|
|
;; |
|
|
|
status) |
|
|
|
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? |
|
|
|
;; |
|
|
|
*) |
|
|
|
echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2 |
|
|
|
exit 1 |
|
|
|
;; |
|
|
|
esac |
|
|
|
|
|
|
|
exit 0 |