telephony/net/rtpproxy/files/rtpproxy.init
Sebastian Kemper e024681271 rtpproxy: use return in init script
"check_ipaddr()" & "start_service()" are functions, hence "return"
should be used instead of "exit".

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
2022-11-08 22:19:29 +01:00

134 lines
2.5 KiB
Bash

#!/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
return 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"\"
return 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
}