diff --git a/net/rtpproxy/Makefile b/net/rtpproxy/Makefile index fdebd1d..49b3379 100644 --- a/net/rtpproxy/Makefile +++ b/net/rtpproxy/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=rtpproxy PKG_VERSION:=2.1.0-20170914 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/sippy/rtpproxy.git diff --git a/net/rtpproxy/files/rtpproxy.config b/net/rtpproxy/files/rtpproxy.config index 760a3c3..afcf1b2 100644 --- a/net/rtpproxy/files/rtpproxy.config +++ b/net/rtpproxy/files/rtpproxy.config @@ -1,18 +1,22 @@ config rtpproxy global option enabled 0 # 0 - disabled, 1 - enabled -config instance 'site1' - option socket 'udp:127.0.0.1:7723' # socket +config instance 'site1' + option socket 'udp:127.0.0.1:7723' # socket option ipaddr '127.0.0.1' # IPv4 address option ip6addr '2001:0db8:0000:0000:0000:0000:1428:57ab' # IPv6 address option user 'nobody' # userid to run rtpproxy instance from option log_level 'INFO' # DBUG, INFO, WARN, ERR or CRIT option opts '' # additional options for rtpproxy instance - -config instance 'site2' - option socket 'udp:127.0.0.1:7724' - option ipaddr '192.168.1.1' - option log_level 'DBUG' + +config instance 'site2' + option socket 'udp:127.0.0.1:7724' + option ipaddr 'lan/wan' # Bridge mode. 'lan' and 'wan' will be + option user 'nobody' # translated to IPv4 addresses by init + option log_level 'DBUG' # script. Handy if using dynamic IPs. Can + option opts '' # also be used with single interfaces. + # Translation for both 'ipaddr' and + # 'ip6addr' supported. config rtpproxy 'hotplug' #option interface 'wan' # uncomment to enable hotplug diff --git a/net/rtpproxy/files/rtpproxy.init b/net/rtpproxy/files/rtpproxy.init index ac93721..f71ec6a 100644 --- a/net/rtpproxy/files/rtpproxy.init +++ b/net/rtpproxy/files/rtpproxy.init @@ -28,6 +28,48 @@ run_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" @@ -62,13 +104,14 @@ handle_instance() { config_get log_level "$site" log_level check_param "-s" "$socket" - check_param "-l" "$ipaddr" - check_param "-6" "$ip6addr" 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" } @@ -80,6 +123,7 @@ start_service() { 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