diff --git a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/api/api.lua b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/api/api.lua
index c3b673367c..99d50d1d1a 100644
--- a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/api/api.lua
+++ b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/api/api.lua
@@ -57,6 +57,7 @@ end
function get_valid_nodes()
local nodes = {}
uci:foreach(appname, "nodes", function(e)
+ e.id = e[".name"]
if e.type and e.remarks then
if e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt") then
e.remarks_name = "%s:[%s] " % {i18n.translatef(e.type .. e.protocol), e.remarks}
diff --git a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
index 714d9b0999..d64bec4861 100644
--- a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
+++ b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
@@ -7,31 +7,20 @@ m = Map(appname)
local nodes_table = {}
for k, e in ipairs(api.get_valid_nodes()) do
- nodes_table[#nodes_table + 1] = {
- id = e[".name"],
- remarks = e.remarks_name,
- type = e["type"]
- }
+ nodes_table[#nodes_table + 1] = e
end
local socks_table = {}
-if tonumber(m:get("@global[0]", "tcp_node_socks") or 0) == 1 then
- local id = "127.0.0.1" .. ":" .. m:get("@global[0]", "tcp_node_socks_port")
- socks_table[#socks_table + 1] = {
- id = id,
- remarks = id .. " - " .. translate("TCP Node")
- }
-end
uci:foreach(appname, "socks", function(s)
if s.enabled == "1" and s.node then
local id, remarks
- local same, i = s.node:match("^(tcp)([1-9])$")
+ local same, i = s.node:match("^(tcp)")
if same then
- remarks = translatef("Same as the tcp %s node", i)
+ remarks = translatef("Same as the tcp node")
else
for k, n in pairs(nodes_table) do
if (s.node == n.id) then
- remarks = n.remarks; break
+ remarks = n.remarks_name; break
end
end
end
@@ -65,6 +54,18 @@ local doh_validate = function(self, value, t)
return nil, translate("DoH request address") .. " " .. translate("Format must be:") .. " URL,IP"
end
+local redir_mode_validate = function(self, value, t)
+ local tcp_proxy_mode_v = tcp_proxy_mode:formvalue(t) or ""
+ local udp_proxy_mode_v = udp_proxy_mode:formvalue(t) or ""
+ local localhost_tcp_proxy_mode_v = localhost_tcp_proxy_mode:formvalue(t) or ""
+ local localhost_udp_proxy_mode_v = localhost_udp_proxy_mode:formvalue(t) or ""
+ local s = tcp_proxy_mode_v .. udp_proxy_mode_v .. localhost_tcp_proxy_mode_v .. localhost_udp_proxy_mode_v
+ if s:find("chnroute") and s:find("returnhome") then
+ return nil, translate("China list cannot be used together with outside China list!")
+ end
+ return value
+end
+
local status = m:get("@global_other[0]", "status") or ""
if status:find("big_icon") then
m:append(Template(appname .. "/global/status"))
@@ -83,8 +84,7 @@ o = s:taboption("Main", Flag, "enabled", translate("Main switch"))
o.rmempty = false
---- TCP Node
-tcp_node = s:taboption("Main", ListValue, "tcp_node", translate("TCP Node"))
-tcp_node.title = translate("TCP Node")
+tcp_node = s:taboption("Main", ListValue, "tcp_node", "" .. translate("TCP Node") .. "")
tcp_node.description = ""
--tcp_node.description = translate("For proxy specific list.")
--tcp_node.description = o.description .. "
"
@@ -97,55 +97,82 @@ if current_node and current_node ~= "" and current_node ~= "nil" then
local url = api.url("node_config", current_node)
tcp_node.description = tcp_node.description .. translatef("Current node: %s", string.format('%s', url, remarks)) .. "
"
end
- if n.protocol and n.protocol == "_shunt" then
- uci:foreach(appname, "shunt_rules", function(e)
- local id = e[".name"]
- local remarks = translate(e.remarks)
- if n[id] and n[id] ~= "nil" then
- local url = api.url("node_config", n[id])
- local r = api.get_full_node_remarks(uci:get_all(appname, n[id]))
- tcp_node.description = tcp_node.description .. remarks .. ":" .. string.format('%s', url, r) .. "
"
- end
- end)
- local id = "default_node"
- local remarks = translate("Default")
- if n[id] and n[id] ~= "nil" then
- local url = api.url("node_config", n[id])
- local r = api.get_full_node_remarks(uci:get_all(appname, n[id]))
- tcp_node.description = tcp_node.description .. remarks .. ":" .. string.format('%s', url, r) .. "
"
- end
- local id = "main_node"
- local remarks = translate("Default") .. translate("Preproxy")
- if n[id] and n[id] ~= "nil" then
- local url = api.url("node_config", n[id])
- local r = api.get_full_node_remarks(uci:get_all(appname, n[id]))
- tcp_node.description = tcp_node.description .. remarks .. ":" .. string.format('%s', url, r) .. "
"
- end
- end
end
end
tcp_node:value("nil", translate("Close"))
-udp_node = s:taboption("Main", ListValue, "udp_node", translate("UDP Node"))
+-- 分流
+if has_xray and #nodes_table > 0 then
+ local normal_list = {}
+ local shunt_list = {}
+ for k, v in pairs(nodes_table) do
+ if v.node_type == "normal" then
+ normal_list[#normal_list + 1] = v
+ end
+ if v.type == "Xray" and v.protocol == "_shunt" then
+ shunt_list[#shunt_list + 1] = v
+ end
+ end
+ if #normal_list > 0 and #shunt_list > 0 then
+ uci:foreach(appname, "shunt_rules", function(e)
+ local id = e[".name"]
+ o = s:taboption("Main", ListValue, id .. "_node", string.format('* %s', api.url("shunt_rules", id), translate(e.remarks)))
+ for k, v in pairs(shunt_list) do
+ o:depends("tcp_node", v.id)
+ o.cfgvalue = function(self, section)
+ return m:get(v.id, id) or "nil"
+ end
+ o.write = function(self, section, value)
+ m:set(v.id, id, value)
+ end
+ end
+ o:value("nil", translate("Close"))
+ for k, v in pairs(normal_list) do
+ o:value(v.id, v.remarks_name)
+ end
+ end)
+
+ local id = "default_node"
+ o = s:taboption("Main", ListValue, id, "* " .. translate("Default"))
+ for k, v in pairs(shunt_list) do
+ o:depends("tcp_node", v.id)
+ o.cfgvalue = function(self, section)
+ return m:get(v.id, id) or "nil"
+ end
+ o.write = function(self, section, value)
+ m:set(v.id, id, value)
+ end
+ end
+ o:value("nil", translate("Close"))
+ for k, v in pairs(normal_list) do
+ o:value(v.id, v.remarks_name)
+ end
+
+ local id = "main_node"
+ o = s:taboption("Main", ListValue, id, "* " .. translate("Default") .. translate("Preproxy"))
+ for k, v in pairs(shunt_list) do
+ o:depends("tcp_node", v.id)
+ o.cfgvalue = function(self, section)
+ return m:get(v.id, id) or "nil"
+ end
+ o.write = function(self, section, value)
+ m:set(v.id, id, value)
+ end
+ end
+ o:value("nil", translate("Close"))
+ for k, v in pairs(normal_list) do
+ o:value(v.id, v.remarks_name)
+ end
+ end
+end
+
+udp_node = s:taboption("Main", ListValue, "udp_node", "" .. translate("UDP Node") .. "")
udp_node:value("nil", translate("Close"))
-udp_node.title = translate("UDP Node")
--udp_node.description = translate("For proxy game network, DNS hijack etc.") .. "
" .. translate("The selected server will not use Kcptun.")
udp_node:value("tcp_", translate("Same as the tcp node"))
--udp_node:value("tcp", translate("Same as the tcp node"))
--udp_node:value("tcp_", translate("Same as the tcp node") .. "(" .. translate("New process") .. ")")
-tcp_node_socks = s:taboption("Main", Flag, "tcp_node_socks", translate("Enable") .. translate("TCP Node") .. "Socks")
-o = s:taboption("Main", Value, "tcp_node_socks_port", "Socks" .. translate("Listen Port"))
-o.default = 1080
-o.datatype = "port"
-o:depends("tcp_node_socks", true)
-
-tcp_node_http = s:taboption("Main", Flag, "tcp_node_http", translate("Enable") .. translate("TCP Node") .. "Http")
-o = s:taboption("Main", Value, "tcp_node_http_port", "HTTP" .. translate("Listen Port"))
-o.default = 1180
-o.datatype = "port"
-o:depends("tcp_node_http", true)
-
s:tab("DNS", translate("DNS"))
if api.is_finded("chinadns-ng") then
@@ -273,47 +300,47 @@ end
s:tab("Proxy", translate("Mode"))
---- TCP Default Proxy Mode
-o = s:taboption("Proxy", ListValue, "tcp_proxy_mode", "TCP" .. translate("Default") .. translate("Proxy Mode"))
+tcp_proxy_mode = s:taboption("Proxy", ListValue, "tcp_proxy_mode", "TCP" .. translate("Default") .. translate("Proxy Mode"))
-- o.description = translate("If not available, try clearing the cache.")
-o.default = "chnroute"
-o.rmempty = false
-o:value("disable", translate("No Proxy"))
-o:value("global", translate("Global Proxy"))
-o:value("gfwlist", translate("GFW List"))
-o:value("chnroute", translate("Not China List"))
-o:value("returnhome", translate("China List"))
+tcp_proxy_mode:value("disable", translate("No Proxy"))
+tcp_proxy_mode:value("global", translate("Global Proxy"))
+tcp_proxy_mode:value("gfwlist", translate("GFW List"))
+tcp_proxy_mode:value("chnroute", translate("Not China List"))
+tcp_proxy_mode:value("returnhome", translate("China List"))
+tcp_proxy_mode.default = "chnroute"
+--tcp_proxy_mode.validate = redir_mode_validate
---- UDP Default Proxy Mode
-o = s:taboption("Proxy", ListValue, "udp_proxy_mode", "UDP" .. translate("Default") .. translate("Proxy Mode"))
-o.default = "chnroute"
-o.rmempty = false
-o:value("disable", translate("No Proxy"))
-o:value("global", translate("Global Proxy"))
-o:value("gfwlist", translate("GFW List"))
-o:value("chnroute", translate("Game Mode"))
-o:value("returnhome", translate("China List"))
+udp_proxy_mode = s:taboption("Proxy", ListValue, "udp_proxy_mode", "UDP" .. translate("Default") .. translate("Proxy Mode"))
+udp_proxy_mode:value("disable", translate("No Proxy"))
+udp_proxy_mode:value("global", translate("Global Proxy"))
+udp_proxy_mode:value("gfwlist", translate("GFW List"))
+udp_proxy_mode:value("chnroute", translate("Game Mode"))
+udp_proxy_mode:value("returnhome", translate("China List"))
+udp_proxy_mode.default = "chnroute"
+--udp_proxy_mode.validate = redir_mode_validate
---- Localhost TCP Proxy Mode
-o = s:taboption("Proxy", ListValue, "localhost_tcp_proxy_mode", translate("Router Localhost") .. "TCP" .. translate("Proxy Mode"))
+localhost_tcp_proxy_mode = s:taboption("Proxy", ListValue, "localhost_tcp_proxy_mode", translate("Router Localhost") .. "TCP" .. translate("Proxy Mode"))
-- o.description = translate("The server client can also use this rule to scientifically surf the Internet.")
-o:value("default", translate("Default"))
-o:value("global", translate("Global Proxy"))
-o:value("gfwlist", translate("GFW List"))
-o:value("chnroute", translate("Not China List"))
-o:value("returnhome", translate("China List"))
-o.default = "default"
-o.rmempty = false
+localhost_tcp_proxy_mode:value("default", translate("Default"))
+localhost_tcp_proxy_mode:value("global", translate("Global Proxy"))
+localhost_tcp_proxy_mode:value("gfwlist", translate("GFW List"))
+localhost_tcp_proxy_mode:value("chnroute", translate("Not China List"))
+localhost_tcp_proxy_mode:value("returnhome", translate("China List"))
+localhost_tcp_proxy_mode.default = "default"
+--localhost_tcp_proxy_mode.validate = redir_mode_validate
---- Localhost UDP Proxy Mode
-o = s:taboption("Proxy", ListValue, "localhost_udp_proxy_mode", translate("Router Localhost") .. "UDP" .. translate("Proxy Mode"))
-o:value("default", translate("Default"))
-o:value("global", translate("Global Proxy"))
-o:value("gfwlist", translate("GFW List"))
-o:value("chnroute", translate("Game Mode"))
-o:value("returnhome", translate("China List"))
-o:value("disable", translate("No Proxy"))
-o.default = "default"
-o.rmempty = false
+localhost_udp_proxy_mode = s:taboption("Proxy", ListValue, "localhost_udp_proxy_mode", translate("Router Localhost") .. "UDP" .. translate("Proxy Mode"))
+localhost_udp_proxy_mode:value("default", translate("Default"))
+localhost_udp_proxy_mode:value("global", translate("Global Proxy"))
+localhost_udp_proxy_mode:value("gfwlist", translate("GFW List"))
+localhost_udp_proxy_mode:value("chnroute", translate("Game Mode"))
+localhost_udp_proxy_mode:value("returnhome", translate("China List"))
+localhost_udp_proxy_mode:value("disable", translate("No Proxy"))
+localhost_udp_proxy_mode.default = "default"
+localhost_udp_proxy_mode.validate = redir_mode_validate
s:tab("log", translate("Log"))
o = s:taboption("log", Flag, "close_log_tcp", translate("Close") .. translate("Log") .. " " .. translate("TCP Node"))
@@ -366,6 +393,7 @@ o.default = 1
o.rmempty = false
socks_node = s:option(ListValue, "node", translate("Socks Node"))
+socks_node:value("tcp", translate("Same as the tcp node"))
o = s:option(Value, "port", "Socks" .. translate("Listen Port"))
o.default = 9050
@@ -379,32 +407,17 @@ if has_xray then
end
for k, v in pairs(nodes_table) do
- tcp_node:value(v.id, v.remarks)
- tcp_node_socks:depends("tcp_node", v.id)
- if v.type == "Xray" then
- if has_xray then
- tcp_node_http:depends("tcp_node", v.id)
- end
- else
- tcp_node_http:depends("tcp_node_socks", true)
- end
- udp_node:value(v.id, v.remarks)
+ tcp_node:value(v.id, v.remarks_name)
+ udp_node:value(v.id, v.remarks_name)
if v.type == "Socks" then
if has_xray then
- socks_node:value(v.id, v.remarks)
+ socks_node:value(v.id, v.remarks_name)
end
else
- socks_node:value(v.id, v.remarks)
+ socks_node:value(v.id, v.remarks_name)
end
end
m:append(Template(appname .. "/global/footer"))
---[[
-local apply = luci.http.formvalue("cbi.apply")
-if apply then
-os.execute("/etc/init.d/" .. appname .." restart")
-end
---]]
-
return m
diff --git a/package/lienol/luci-app-passwall/po/zh-cn/passwall.po b/package/lienol/luci-app-passwall/po/zh-cn/passwall.po
index e769cf903e..cfd598bab8 100644
--- a/package/lienol/luci-app-passwall/po/zh-cn/passwall.po
+++ b/package/lienol/luci-app-passwall/po/zh-cn/passwall.po
@@ -232,6 +232,9 @@ msgstr "DoH Bootstrap DNS"
msgid "The Bootstrap DNS server is used to resolve the IP address of the DoH resolver you specify as the upstream."
msgstr "Bootstrap DNS 服务器用于解析您指定为上游的 DoH 解析器的 IP 地址。"
+msgid "China list cannot be used together with outside China list!"
+msgstr "中国列表不能和中国列表外一起使用!"
+
msgid "Cache Resolved"
msgstr "缓存解析结果"
diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh
index 145f1d177c..512ef94177 100755
--- a/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh
+++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh
@@ -286,6 +286,8 @@ LOCALHOST_TCP_PROXY_MODE=$(config_t_get global localhost_tcp_proxy_mode default)
LOCALHOST_UDP_PROXY_MODE=$(config_t_get global localhost_udp_proxy_mode default)
[ "$LOCALHOST_TCP_PROXY_MODE" == "default" ] && LOCALHOST_TCP_PROXY_MODE=$TCP_PROXY_MODE
[ "$LOCALHOST_UDP_PROXY_MODE" == "default" ] && LOCALHOST_UDP_PROXY_MODE=$UDP_PROXY_MODE
+RESOLVFILE=/tmp/resolv.conf.d/resolv.conf.auto
+[ -f "${RESOLVFILE}" ] && [ -s "${RESOLVFILE}" ] || RESOLVFILE=/tmp/resolv.conf.auto
load_config() {
[ "$ENABLED" != 1 ] && NO_PROXY=1
@@ -304,8 +306,6 @@ load_config() {
if [ -n "${DEFAULT_DNS}" ]; then
IS_DEFAULT_DNS=1
else
- RESOLVFILE=/tmp/resolv.conf.d/resolv.conf.auto
- [ -f "${RESOLVFILE}" ] && [ -s "${RESOLVFILE}" ] || RESOLVFILE=/tmp/resolv.conf.auto
DEFAULT_DNS=$(echo -n $(sed -n 's/^nameserver[ \t]*\([^ ]*\)$/\1/p' "${RESOLVFILE}" | grep -v "0.0.0.0" | grep -v "127.0.0.1" | grep -v "^::$" | head -2) | tr ' ' ',')
fi
LOCAL_DNS="${DEFAULT_DNS:-119.29.29.29}"
@@ -501,13 +501,15 @@ run_redir() {
local proto="-proto tcp"
[ "$UDP_NODE" == "tcp" ] && proto="-proto tcp,udp"
local extra_param="${proto}"
- [ "$(config_t_get global tcp_node_socks 0)" = "1" ] && {
- local socks_param="-socks_proxy_port $(config_t_get global tcp_node_socks_port 1080)"
+ [ "$tcp_node_socks" = "1" ] && {
+ local socks_param="-socks_proxy_port $tcp_node_socks_port"
extra_param="${extra_param} ${socks_param}"
+ config_file=$(echo $config_file | sed "s/TCP/TCP_SOCKS_$tcp_node_socks_id/g")
}
- [ "$(config_t_get global tcp_node_http 0)" = "1" ] && {
- local http_param="-http_proxy_port $(config_t_get global tcp_node_http_port 1180)"
+ [ "$tcp_node_http" = "1" ] && {
+ local http_param="-http_proxy_port $tcp_node_http_port"
extra_param="${extra_param} ${http_param}"
+ config_file=$(echo $config_file | sed "s/TCP/TCP_HTTP_$tcp_node_http_id/g")
}
lua $API_GEN_XRAY -node $node -redir_port $local_port -loglevel $loglevel $extra_param > $config_file
ln_start_bin "$(first_type $(config_t_get global_app xray_file) xray)" xray $log_file -config="$config_file"
@@ -566,14 +568,14 @@ run_redir() {
unset _socks_flag _socks_address _socks_port _socks_username _socks_password
[ "$type" != "xray" ] && {
- [ "$(config_t_get global tcp_node_socks 0)" = "1" ] && {
- local port=$(config_t_get global tcp_node_socks_port 1080)
- local config_file=$TMP_PATH/SOCKS_TCP.json
- local log_file=$TMP_PATH/SOCKS_TCP.log
+ [ "$tcp_node_socks" = "1" ] && {
+ local port=$tcp_node_socks_port
+ local config_file=$TMP_PATH/SOCKS_$tcp_node_socks_id.json
+ local log_file=$TMP_PATH/SOCKS_$tcp_node_socks_id.log
local http_port=0
- local http_config_file=$TMP_PATH/HTTP2SOCKS_TCP.json
- [ "$(config_t_get global tcp_node_http 0)" = "1" ] && {
- http_port=$(config_t_get global tcp_node_http_port 1180)
+ local http_config_file=$TMP_PATH/HTTP2SOCKS_$tcp_node_http_id.json
+ [ "$tcp_node_http" = "1" ] && {
+ http_port=$tcp_node_http_port
}
run_socks TCP $TCP_NODE "0.0.0.0" $port $config_file $http_port $http_config_file
}
@@ -629,6 +631,17 @@ start_socks() {
local log_file=$TMP_PATH/SOCKS_${id}.log
local http_port=$(config_n_get $id http_port 0)
local http_config_file=$TMP_PATH/HTTP2SOCKS_${id}.json
+ [ "$node" == "tcp" ] && {
+ tcp_node_socks=1
+ tcp_node_socks_port=$port
+ tcp_node_socks_id=$id
+ [ "$http_port" != "0" ] && {
+ tcp_node_http=1
+ tcp_node_http_port=$http_port
+ tcp_node_http_id=$id
+ }
+ continue
+ }
run_socks $id $node "0.0.0.0" $port $config_file $http_port $http_config_file
done
}
diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/iptables.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/iptables.sh
index 3f87c8b868..0e1109f770 100755
--- a/package/lienol/luci-app-passwall/root/usr/share/passwall/iptables.sh
+++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/iptables.sh
@@ -177,9 +177,9 @@ load_acl() {
msg2="${msg2}[$?]除${udp_no_redir_ports}外的"
}
msg2="${msg2}所有端口"
- $ipt_m -A PSW $(comment "$remarks") -p udp $(factor $ip "-s") $(factor $mac "-m mac --mac-source") $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) $(REDIRECT $udp_port TPROXY)
- $ipt_m -A PSW $(comment "$remarks") -p udp $(factor $ip "-s") $(factor $mac "-m mac --mac-source") $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) $(REDIRECT $udp_port TPROXY)
- $ipt_m -A PSW $(comment "$remarks") -p udp $(factor $ip "-s") $(factor $mac "-m mac --mac-source") $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(get_redirect_ipt $udp_proxy_mode $udp_port TPROXY)
+ $ipt_m -A PSW $(comment "$remarks") -p udp $(factor $ip "-s") $(factor $mac "-m mac --mac-source") $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST) $(REDIRECT $udp_port TPROXY)
+ $ipt_m -A PSW $(comment "$remarks") -p udp $(factor $ip "-s") $(factor $mac "-m mac --mac-source") $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST) $(REDIRECT $udp_port TPROXY)
+ $ipt_m -A PSW $(comment "$remarks") -p udp $(factor $ip "-s") $(factor $mac "-m mac --mac-source") $(factor $udp_redir_ports "-m multiport --dport") $(get_redirect_ipt $udp_proxy_mode $udp_port TPROXY)
}
echolog " - ${msg2}"
}
@@ -300,12 +300,12 @@ filter_node() {
msg2="直连代理"
}
$_ipt -I PSW_OUTPUT $ADD_INDEX $(comment "${address}:${port}") -p $stream -d $address --dport $port $dst_rule 2>/dev/null
- #else
- # msg2="已配置过的节点,"
+ else
+ msg2="已配置过的节点,"
fi
done
msg="[$?]$(echo ${2} | tr 'a-z' 'A-Z')${msg2}使用链${ADD_INDEX},节点(${type}):${address}:${port}"
- echolog " - ${msg}"
+ #echolog " - ${msg}"
}
local proxy_protocol=$(config_n_get $proxy_node protocol)
@@ -517,7 +517,7 @@ add_firewall_rule() {
# 过滤Socks节点
[ "$SOCKS_ENABLED" = "1" ] && {
local ids=$(uci show $CONFIG | grep "=socks" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}')
- echolog "分析 Socks 服务所使用节点..."
+ #echolog "分析 Socks 服务所使用节点..."
local id enabled node port msg num
for id in $ids; do
enabled=$(config_n_get $id enabled 0)
@@ -534,7 +534,7 @@ add_firewall_rule() {
filter_node $node TCP > /dev/null 2>&1 &
filter_node $node UDP > /dev/null 2>&1 &
fi
- echolog " - ${msg}"
+ #echolog " - ${msg}"
done
}
@@ -543,16 +543,13 @@ add_firewall_rule() {
for stream in TCP UDP; do
eval "node=\${${stream}_NODE}"
eval "port=\${${stream}_REDIR_PORT}"
- echolog "分析 $stream 代理自动切换..."
+ #echolog "分析 $stream 代理自动切换..."
[ "$node" == "tcp" ] && [ "$stream" == "UDP" ] && {
eval "node=\${TCP_NODE}"
eval "port=\${TCP_REDIR_PORT}"
- echolog " - 采用 TCP 代理的配置"
}
if [ "$node" != "nil" ]; then
filter_node $node $stream $port > /dev/null 2>&1 &
- else
- echolog " - 忽略无效的 $stream 代理自动切换"
fi
done