diff --git a/luci-app-shadowsocks-libev/htdocs/luci-static/resources/shadowsocks-libev.js b/luci-app-shadowsocks-libev/htdocs/luci-static/resources/shadowsocks-libev.js index fdc0c8d61..dedce819a 100644 --- a/luci-app-shadowsocks-libev/htdocs/luci-static/resources/shadowsocks-libev.js +++ b/luci-app-shadowsocks-libev/htdocs/luci-static/resources/shadowsocks-libev.js @@ -87,6 +87,7 @@ return L.Class.extend({ } }); o.value('', ''); + o.value('', 'all'); o.default = ''; }, values_serverlist: function(o) { diff --git a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks index 5314ad53d..f09fb70ca 100755 --- a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks +++ b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks @@ -9,7 +9,7 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then set shadowsocks-libev.hi$c=ss_redir set shadowsocks-libev.hi$c.server=sss0 set shadowsocks-libev.hi$c.local_address="0.0.0.0" - set shadowsocks-libev.hi$c.local_port=1100 + set shadowsocks-libev.hi$c.local_port=1101 set shadowsocks-libev.hi$c.mode=tcp_and_udp set shadowsocks-libev.hi$c.timeout=1000 set shadowsocks-libev.hi$c.fast_open=1 @@ -18,9 +18,10 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then set shadowsocks-libev.hi$c.mptcp=1 set shadowsocks-libev.hi$c.no_delay=1 set shadowsocks-libev.hi$c.verbose=0 - commit shadowsocks-libev EOF done + uci -q set shadowsocks-libev.ss_rules.redir_tcp=all + uci -q commit shadowsocks-libev fi fi diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index 88815793b..3b276acce 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -143,6 +143,16 @@ ss_rules_cb() { fi } +ss_redir_ports() { + port=$(uci -q get shadowsocks-libev.$1.local_port) + 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 +} + ss_rules() { local cfg="ss_rules" local bin="$ss_bindir/ss-rules" @@ -164,10 +174,22 @@ ss_rules() { validate_ss_rules_section "$cfg" || return 1 [ "$disabled" = 0 ] || return 0 - eval local_port_tcp="\$ss_rules_redir_tcp_$redir_tcp" - eval local_port_udp="\$ss_rules_redir_udp_$redir_udp" - eval local_port_tcp6="\$ss_rules6_redir_tcp_$redir_tcp" - eval local_port_udp6="\$ss_rules6_redir_udp_$redir_udp" + if [ "$ss_rules_redir_tcp_$redir_tcp" = "all" ]; then + min_ss_redir_ports="65535" + max_ss_redir_ports="0" + config_load shadowsocks-libev + config_foreach ss_redir_ports ss_redir + all_ss_redir_ports=$min_ss_redir_ports-$max_ss_redir_ports + local_port_tcp="$all_ss_redir_ports" + eval local_port_udp="\$ss_rules_redir_udp_$redir_udp" + local_port_tcp6="$all_ss_redir_ports" + eval local_port_udp6="\$ss_rules6_redir_udp_$redir_udp" + else + eval local_port_tcp="\$ss_rules_redir_tcp_$redir_tcp" + eval local_port_udp="\$ss_rules_redir_udp_$redir_udp" + eval local_port_tcp6="\$ss_rules6_redir_tcp_$redir_tcp" + eval local_port_udp6="\$ss_rules6_redir_udp_$redir_udp" + fi [ -n "$local_port_tcp" -o -n "$local_port_udp" ] || return 1 ss_redir_servers4="$(echo "$ss_redir_servers" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)" ss_redir_servers6="$(echo "$ss_redir_servers" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)" @@ -378,8 +400,8 @@ validate_ss_redir_section() { validate_ss_rules_section() { "${2:-ss_validate}" ss_rules "$1" \ 'disabled:bool:0' \ - 'redir_tcp:uci("shadowsocks-libev", "@ss_redir")' \ - 'redir_udp:uci("shadowsocks-libev", "@ss_redir")' \ + 'redir_tcp:or(uci("shadowsocks-libev", "@ss_redir"),"all")' \ + 'redir_udp:or(uci("shadowsocks-libev", "@ss_redir"),"all")' \ 'src_ips_bypass:or(ipaddr,cidr)' \ 'src_ips_forward:or(ipaddr,cidr)' \ 'src_ips_checkdst:or(ipaddr,cidr)' \