mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Add multiple redir listener in shadowsocks-rust
This commit is contained in:
parent
56de8fc06d
commit
7c40ecf717
1 changed files with 38 additions and 6 deletions
|
@ -118,6 +118,20 @@ ss_rules_cb() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ss_redir_ports() {
|
||||||
|
port=$(uci -q get shadowsocks-rust.$1.local_port)
|
||||||
|
server=$(uci -q get shadowsocks-rust.$1.server)
|
||||||
|
disabled=$(uci -q get shadowsocks-rust.$1.disabled)
|
||||||
|
if [ "$disabled" != "1" ] && ([ "$server" = "$2" ] || [ "$2" = "" ]); then
|
||||||
|
if [ "$port" -lt "$min_ss_redir_ports" ]; then
|
||||||
|
min_ss_redir_ports=$port
|
||||||
|
fi
|
||||||
|
if [ "$port" -gt "$max_ss_redir_ports" ]; then
|
||||||
|
max_ss_redir_ports=$port
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
ss_rules_nft_gen() {
|
ss_rules_nft_gen() {
|
||||||
local cfg="ss_rules"
|
local cfg="ss_rules"
|
||||||
local cfgtype
|
local cfgtype
|
||||||
|
@ -129,8 +143,26 @@ ss_rules_nft_gen() {
|
||||||
eval "$(validate_ss_rules_section "$cfg" ss_validate_mklocal)"
|
eval "$(validate_ss_rules_section "$cfg" ss_validate_mklocal)"
|
||||||
validate_ss_rules_section "$cfg" || return 1
|
validate_ss_rules_section "$cfg" || return 1
|
||||||
[ "$disabled" = 0 ] || return 2
|
[ "$disabled" = 0 ] || return 2
|
||||||
|
|
||||||
|
if [ "$ss_rules_redir_tcp_$redir_tcp" = "all" ]; then
|
||||||
|
min_ss_redir_ports="65535"
|
||||||
|
max_ss_redir_ports="0"
|
||||||
|
config_load shadowsocks-rust
|
||||||
|
config_foreach ss_redir_ports ss_redir $cfgrulesserver
|
||||||
|
if [ "$min_ss_redir_ports" != "$max_ss_redir_ports" ]; then
|
||||||
|
all_ss_redir_ports=$min_ss_redir_ports-$max_ss_redir_ports
|
||||||
|
else
|
||||||
|
all_ss_redir_ports=$min_ss_redir_ports
|
||||||
|
fi
|
||||||
|
local_port_tcp="$all_ss_redir_ports"
|
||||||
|
if [ "$ss_rules_redir_udp_$redir_udp" = "all" ] || [ "$ss_rules_redir_udp_$redir_udp" = "hi1" ]; then
|
||||||
|
local_port_udp="$min_ss_redir_ports"
|
||||||
|
fi
|
||||||
|
else
|
||||||
eval local_port_tcp="\$ss_rules_redir_tcp_$redir_tcp"
|
eval local_port_tcp="\$ss_rules_redir_tcp_$redir_tcp"
|
||||||
eval local_port_udp="\$ss_rules_redir_udp_$redir_udp"
|
eval local_port_udp="\$ss_rules_redir_udp_$redir_udp"
|
||||||
|
fi
|
||||||
|
|
||||||
[ -n "$local_port_tcp" -o -n "$local_port_udp" ] || return 1
|
[ -n "$local_port_tcp" -o -n "$local_port_udp" ] || return 1
|
||||||
remote_servers="$(echo $ss_redir_servers \
|
remote_servers="$(echo $ss_redir_servers \
|
||||||
| tr ' ' '\n' \
|
| tr ' ' '\n' \
|
||||||
|
@ -141,8 +173,8 @@ ss_rules_nft_gen() {
|
||||||
local tmp="/tmp/ssrrules"
|
local tmp="/tmp/ssrrules"
|
||||||
json_init
|
json_init
|
||||||
json_add_string o_remote_servers "$remote_servers"
|
json_add_string o_remote_servers "$remote_servers"
|
||||||
json_add_int o_redir_tcp_port "$local_port_tcp"
|
json_add_string o_redir_tcp_port "$local_port_tcp"
|
||||||
json_add_int o_redir_udp_port "$local_port_udp"
|
json_add_string o_redir_udp_port "$local_port_udp"
|
||||||
json_add_string o_ifnames "$ifnames"
|
json_add_string o_ifnames "$ifnames"
|
||||||
json_add_string o_local_default "$local_default"
|
json_add_string o_local_default "$local_default"
|
||||||
json_add_string o_src_bypass "$src_ips_bypass"
|
json_add_string o_src_bypass "$src_ips_bypass"
|
||||||
|
@ -326,8 +358,8 @@ validate_ss_redir_section() {
|
||||||
validate_ss_rules_section() {
|
validate_ss_rules_section() {
|
||||||
"${2:-ss_validate}" ss_rules "$1" \
|
"${2:-ss_validate}" ss_rules "$1" \
|
||||||
'disabled:bool:0' \
|
'disabled:bool:0' \
|
||||||
'redir_tcp:uci("shadowsocks-rust", "@ss_redir")' \
|
'redir_tcp:or(uci("shadowsocks-rust", "@ss_redir"),"all")' \
|
||||||
'redir_udp:uci("shadowsocks-rust", "@ss_redir")' \
|
'redir_udp:or(uci("shadowsocks-rust", "@ss_redir"),"all")' \
|
||||||
'src_ips_bypass:or(ipaddr,cidr)' \
|
'src_ips_bypass:or(ipaddr,cidr)' \
|
||||||
'src_ips_forward:or(ipaddr,cidr)' \
|
'src_ips_forward:or(ipaddr,cidr)' \
|
||||||
'src_ips_checkdst:or(ipaddr,cidr)' \
|
'src_ips_checkdst:or(ipaddr,cidr)' \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue