ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/management/net/rtpproxy/files/rtpproxy.init b/external/management/net/rtpproxy/files/rtpproxy.init
new file mode 100644
index 0000000..f71ec6a
--- /dev/null
+++ b/external/management/net/rtpproxy/files/rtpproxy.init
@@ -0,0 +1,133 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2014 CESNET, z.s.p.o
+# Copyright (C) 2018 OpenWrt.org
+
+START=90
+
+NAME=rtpproxy
+COMMAND="/usr/bin/$NAME"
+
+USE_PROCD=1
+
+#PROCD_DEBUG=1
+
+LOGGER="/usr/bin/logger -t $NAME"
+LOG_ERR="$LOGGER -p user.err -s"
+
+run_instance() {
+ procd_open_instance
+ procd_set_param command $COMMAND
+ procd_append_param command \
+ $1 \
+ -p "/var/run/$NAME-$2.pid" \
+ -f
+ # forward stderr to logd
+ procd_set_param stderr 1
+ procd_close_instance
+
+ $LOGGER instance $2 has started
+}
+
+check_ip() {
+ local tmp_addr
+
+ if [ "$1" = "ipaddr" ]; then
+ network_get_ipaddr tmp_addr "$2" || tmp_addr="$2"
+ else
+ network_get_ipaddr6 tmp_addr "$2" || tmp_addr="$2"
+ fi
+
+ echo "$tmp_addr"
+}
+
+check_ipaddr() {
+ local value="$1"
+ local type="$2"
+ local param="$3"
+ local one two
+
+ [ -z "$value" ] && {
+ $LOG_ERR empty $type entry
+ exit 1
+ }
+
+ # Bail if more than 1 slash.
+ [ $(echo "$value" | awk -F "/" '{print NF-1}') -gt 1 ] && {
+ $LOG_ERR init script does not understand $type entry \""$value"\"
+ exit 1
+ }
+
+ IFS="/" read one two << EOF
+$value
+EOF
+
+ one="$(check_ip "$type" "$one")"
+ if [ -n "$two" ]; then
+ two="$(check_ip "$type" "$two")"
+ rtpproxy_options=$rtpproxy_options" $param $one/$two"
+ else
+ rtpproxy_options=$rtpproxy_options" $param $one"
+ fi
+}
+
+check_param() {
+ local param="$1"
+ local value="$2"
+ local default_value="$3"
+
+ if [ "$value" != "" ]; then
+ rtpproxy_options=$rtpproxy_options" $param $value"
+ else
+ if [ "$default_value" != "" ]; then
+ rtpproxy_options=$rtpproxy_options" $param $default_value"
+ fi
+ fi
+}
+
+check_special_param() {
+ local param="$1"
+
+ if [ "$param" != "" ]; then
+ rtpproxy_options=$rtpproxy_options" $param"
+ fi
+}
+
+handle_instance() {
+ local site="$1"
+ local socket opts ipaddr ip6addr rtpproxy_options log_level
+
+ config_get socket "$site" socket
+ config_get opts "$site" opts
+ config_get ipaddr "$site" ipaddr
+ config_get ip6addr "$site" ip6addr
+ config_get user "$site" user
+ config_get log_level "$site" log_level
+
+ check_param "-s" "$socket"
+ check_param "-u" "$user" "nobody"
+ check_param "-d" "$log_level" "DBUG"
+
+ check_special_param "$opts"
+
+ [ -n "$ipaddr" ] && check_ipaddr "$ipaddr" ipaddr '-l'
+ [ -n "$ip6addr" ] && check_ipaddr "$ip6addr" ip6addr '-6'
+
+ run_instance "$rtpproxy_options" "$site"
+}
+
+start_service() {
+ local enabled
+
+ config_load $NAME
+
+ config_get_bool enabled global enabled 0
+
+ if [ "$enabled" -eq 1 ]; then
+ . /lib/functions/network.sh
+ config_foreach handle_instance instance
+ else
+ $LOG_ERR service not enabled
+ $LOG_ERR edit /etc/config/$NAME
+ fi
+}
+