blob: 4c94ba255be0cdcf0a54b78ccf8cd9b8d39b8849 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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
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
}
|