From 22940c0f9be522d405d6b9a5d4225ffd7624e0a0 Mon Sep 17 00:00:00 2001 From: Gzxhwq Date: Tue, 18 Apr 2023 07:39:14 +0800 Subject: [PATCH] luci: add Xray Vision XUDP Mux support (#2503) --- .../luasrc/model/cbi/passwall/client/node_config.lua | 10 ++++++++++ luci-app-passwall/luasrc/passwall/util_xray.lua | 5 +++-- luci-app-passwall/po/zh-cn/passwall.po | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua index 804547b43..19fbec19f 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua @@ -933,11 +933,21 @@ mux:depends({ type = "Xray", protocol = "socks" }) mux:depends({ type = "Xray", protocol = "shadowsocks" }) mux:depends({ type = "Xray", protocol = "trojan" }) +-- [[ XUDP Mux ]]-- +xmux = s:option(Flag, "xmux", translate("Mux")) +xmux.default = 1 +xmux:depends({ type = "Xray", protocol = "vless", tlsflow = "xtls-rprx-vision" }) +xmux:depends({ type = "Xray", protocol = "vless", tlsflow = "xtls-rprx-vision-udp443" }) + mux_concurrency = s:option(Value, "mux_concurrency", translate("Mux concurrency")) mux_concurrency.default = 8 mux_concurrency:depends("mux", true) mux_concurrency:depends("smux", true) +xudp_concurrency = s:option(Value, "xudp_concurrency", translate("XUDP Mux concurrency")) +xudp_concurrency.default = 8 +xudp_concurrency:depends("xmux", true) + smux_idle_timeout = s:option(Value, "smux_idle_timeout", translate("Mux idle timeout")) smux_idle_timeout.default = 60 smux_idle_timeout:depends("smux", true) diff --git a/luci-app-passwall/luasrc/passwall/util_xray.lua b/luci-app-passwall/luasrc/passwall/util_xray.lua index 2fc03c657..3b0825124 100644 --- a/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -116,8 +116,9 @@ function gen_outbound(flag, node, tag, proxy_table) proxySettings = node.proxySettings or nil, protocol = node.protocol, mux = { - enabled = (node.mux == "1") and true or false, - concurrency = (node.mux_concurrency) and tonumber(node.mux_concurrency) or 8 + enabled = (node.mux == "1" or node.xmux == "1") and true or false, + concurrency = (node.mux == "1" and ((node.mux_concurrency) and tonumber(node.mux_concurrency) or 8)) or ((node.xmux == "1") and -1) or nil, + xudpConcurrency = (node.xmux == "1" and ((node.xudp_concurrency) and tonumber(node.xudp_concurrency) or 8)) or nil } or nil, -- 底层传输配置 streamSettings = (node.streamSettings or node.protocol == "vmess" or node.protocol == "vless" or node.protocol == "socks" or node.protocol == "shadowsocks" or node.protocol == "trojan") and { diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po index c41a71d0e..4408869a2 100644 --- a/luci-app-passwall/po/zh-cn/passwall.po +++ b/luci-app-passwall/po/zh-cn/passwall.po @@ -1360,6 +1360,9 @@ msgstr "无法移动新文件到:%s" msgid "Mux concurrency" msgstr "最大并发连接数" +msgid "XUDP Mux concurrency" +msgstr "XUDP 最大并发连接数" + msgid "Mux idle timeout" msgstr "最大闲置时间"