luci: some fix & improvement with sing-box

* luci: fix sing-box REALITY tag on client side

* luci: add sing-box mux padding option

* luci: fix sing-box dns
This commit is contained in:
Gzxhwq 2023-09-11 22:11:30 +08:00 committed by sbwml
parent c3622f8206
commit 4e720fa28d
3 changed files with 30 additions and 19 deletions

View File

@ -355,19 +355,6 @@ o:depends({ [option_name("protocol")] = "trojan" })
o:depends({ [option_name("protocol")] = "shadowsocks" }) o:depends({ [option_name("protocol")] = "shadowsocks" })
o:depends({ [option_name("protocol")] = "shadowtls" }) o:depends({ [option_name("protocol")] = "shadowtls" })
if singbox_tags:find("with_reality") then
o = s:option(Flag, option_name("reality"), translate("REALITY"))
o.default = 0
o:depends({ [option_name("protocol")] = "vless", [option_name("tls")] = true })
-- [[ REALITY部分 ]] --
o = s:option(Value, option_name("reality_publicKey"), translate("Public Key"))
o:depends({ [option_name("tls")] = true, [option_name("reality")] = true })
o = s:option(Value, option_name("reality_shortId"), translate("Short Id"))
o:depends({ [option_name("tls")] = true, [option_name("reality")] = true })
end
o = s:option(ListValue, option_name("alpn"), translate("alpn")) o = s:option(ListValue, option_name("alpn"), translate("alpn"))
o.default = "default" o.default = "default"
o:value("default", translate("Default")) o:value("default", translate("Default"))
@ -392,22 +379,36 @@ o:depends({ [option_name("protocol")] = "hysteria2" })
if singbox_tags:find("with_utls") then if singbox_tags:find("with_utls") then
o = s:option(Flag, option_name("utls"), translate("uTLS")) o = s:option(Flag, option_name("utls"), translate("uTLS"))
o.default = "0" o.default = "0"
o:depends({ [option_name("tls")] = true, [option_name("reality")] = false }) o:depends({ [option_name("tls")] = true })
o = s:option(ListValue, option_name("fingerprint"), translate("Finger Print")) o = s:option(ListValue, option_name("fingerprint"), translate("Finger Print"))
o:value("chrome") o:value("chrome")
o:value("firefox") o:value("firefox")
o:value("edge") o:value("edge")
o:value("safari") o:value("safari")
o:value("360") -- o:value("360")
o:value("qq") o:value("qq")
o:value("ios") o:value("ios")
o:value("android") -- o:value("android")
o:value("random") o:value("random")
o:value("randomized") -- o:value("randomized")
o.default = "chrome" o.default = "chrome"
o:depends({ [option_name("tls")] = true, [option_name("utls")] = true }) o:depends({ [option_name("tls")] = true, [option_name("utls")] = true })
o:depends({ [option_name("tls")] = true, [option_name("reality")] = true })
-- [[ REALITY部分 ]] --
o = s:option(Flag, option_name("reality"), translate("REALITY"))
o.default = 0
o:depends({ [option_name("protocol")] = "vless", [option_name("utls")] = true })
o:depends({ [option_name("protocol")] = "vmess", [option_name("utls")] = true })
o:depends({ [option_name("protocol")] = "shadowsocks", [option_name("utls")] = true })
o:depends({ [option_name("protocol")] = "socks", [option_name("utls")] = true })
o:depends({ [option_name("protocol")] = "trojan", [option_name("utls")] = true })
o = s:option(Value, option_name("reality_publicKey"), translate("Public Key"))
o:depends({ [option_name("utls")] = true, [option_name("reality")] = true })
o = s:option(Value, option_name("reality_shortId"), translate("Short Id"))
o:depends({ [option_name("utls")] = true, [option_name("reality")] = true })
end end
o = s:option(ListValue, option_name("transport"), translate("Transport")) o = s:option(ListValue, option_name("transport"), translate("Transport"))
@ -512,7 +513,7 @@ o:depends({ [option_name("protocol")] = "vmess" })
o:depends({ [option_name("protocol")] = "vless", [option_name("flow")] = "" }) o:depends({ [option_name("protocol")] = "vless", [option_name("flow")] = "" })
o:depends({ [option_name("protocol")] = "http" }) o:depends({ [option_name("protocol")] = "http" })
o:depends({ [option_name("protocol")] = "socks" }) o:depends({ [option_name("protocol")] = "socks" })
o:depends({ [option_name("protocol")] = "shadowsocks" }) o:depends({ [option_name("protocol")] = "shadowsocks", [option_name("uot")] = "" })
o:depends({ [option_name("protocol")] = "trojan" }) o:depends({ [option_name("protocol")] = "trojan" })
o = s:option(ListValue, option_name("mux_type"), translate("Mux")) o = s:option(ListValue, option_name("mux_type"), translate("Mux"))
@ -525,4 +526,8 @@ o = s:option(Value, option_name("mux_concurrency"), translate("Mux concurrency")
o.default = 8 o.default = 8
o:depends({ [option_name("mux")] = true }) o:depends({ [option_name("mux")] = true })
o = s:option(Flag, option_name("mux_padding"), translate("Padding"))
o.default = 0
o:depends({ [option_name("mux")] = true })
api.luci_types(arg[1], m, s, type_name, option_prefix) api.luci_types(arg[1], m, s, type_name, option_prefix)

View File

@ -111,6 +111,7 @@ function gen_outbound(flag, node, tag, proxy_table)
enabled = true, enabled = true,
protocol = node.mux_type or "h2mux", protocol = node.mux_type or "h2mux",
max_connections = tonumber(node.mux_concurrency) or 4, max_connections = tonumber(node.mux_concurrency) or 4,
padding = (node.mux_padding == "1") and true or false,
--min_streams = 4, --min_streams = 4,
--max_streams = 0, --max_streams = 0,
} }
@ -231,6 +232,7 @@ function gen_outbound(flag, node, tag, proxy_table)
flow = (node.tls == '1' and node.flow) and node.flow or nil, flow = (node.tls == '1' and node.flow) and node.flow or nil,
tls = tls, tls = tls,
packet_encoding = "xudp", --UDP 包编码。(空):禁用 packetaddr由 v2ray 5+ 支持 xudp由 xray 支持 packet_encoding = "xudp", --UDP 包编码。(空):禁用 packetaddr由 v2ray 5+ 支持 xudp由 xray 支持
multiplex = mux,
transport = v2ray_transport, transport = v2ray_transport,
} }
end end
@ -1290,6 +1292,7 @@ function gen_config(var)
default_dns_flag = "direct" default_dns_flag = "direct"
end end
end end
else default_dns_flag = "direct"
end end
dns.final = default_dns_flag dns.final = default_dns_flag
end end

View File

@ -1417,6 +1417,9 @@ msgstr "XUDP 最大并发连接数"
msgid "Mux idle timeout" msgid "Mux idle timeout"
msgstr "最大闲置时间" msgstr "最大闲置时间"
msgid "Padding"
msgstr "填充"
msgid "Enable early data" msgid "Enable early data"
msgstr "启用前置数据" msgstr "启用前置数据"