update 2026-10-21 06:53:29

This commit is contained in:
action committed 2026-10-21 06:53:29 +08:00
1 parent ee55ecd1ef
commit f144cc6010
238 files changed
+301 -19729

No files matched your search

@@ -363,6 +363,14 @@ function outbound:handleIndex(index)
trojan = function()
trojan_shadowsocks()
end,
shadowsocksr = function()
outbound_settings = {
address = server.server, port = tonumber(server.server_port),
password = server.password, method = server.ssr_method or "aes-128-cfb",
protocol = server.ssr_protocol or "origin", protocolParam = server.protocol_param,
obfs = server.ssr_obfs or "plain", obfsParam = server.obfs_param
}
end,
shadowsocks = function()
trojan_shadowsocks()
end,
@@ -375,6 +383,19 @@ function outbound:handleIndex(index)
wireguard = function()
wireguard()
end,
naive = function()
outbound_settings = {
address = server.server, port = tonumber(server.server_port),
username = server.username, password = server.password,
serverName = server.tls_host,
certificateFile = server.naive_certificate_file,
quic = server.naive_quic == "1",
udpOverTcp = server.naive_udp_over_tcp == "1",
insecureConcurrency = tonumber(server.naive_concurrency),
quicCongestionControl = server.naive_quic_congestion,
echConfigList = server.naive_ech_config
}
end,
anytls = function()
outbound_settings = {
address = server.server,
@@ -878,6 +899,14 @@ Xray.outbounds = {
}
}
-- Naive owns TLS/multiplexing; SSR owns obfuscation and uses native UDP.
-- Preserve Xray socket marks and dialer chains for both.
if server.v2ray_protocol == "naive" or server.v2ray_protocol == "shadowsocksr" then
local ob = Xray.outbounds[1]
ob.streamSettings = { network = "raw", sockopt = ob.streamSettings.sockopt }
ob.mux = nil
end
if xray_builtin_dns then
table.insert(Xray.outbounds, {
protocol = "dns",
@@ -0,0 +1,20 @@
#!/usr/bin/lua
local uci = require("luci.model.uci").cursor()
local json = require "luci.jsonc"
local s = assert(uci:get_all("shadowsocksr", arg[1]), "missing server section")
assert(s.username and s.username ~= "" and s.password and s.password ~= "", "Naive credentials required")
assert(s.tls_certificateFile and s.tls_keyFile, "Naive TLS certificate and key required")
local alpn = {}
local selected = s.naive_alpn or "h2"
assert(selected == "h2" or selected == "h3" or selected == "h2,h3", "invalid Naive transport")
for value in selected:gmatch("[^,]+") do alpn[#alpn + 1] = value end
print(json.stringify({
log = {loglevel = "warning"},
inbounds = {{listen = "::", port = assert(tonumber(s.server_port)), protocol = "naive",
settings = {users = {{username = s.username, password = s.password}}},
streamSettings = {network = "naive", security = "tls", tlsSettings = {
alpn = alpn, certificates = {{certificateFile = s.tls_certificateFile, keyFile = s.tls_keyFile}}
}}
}},
outbounds = {{protocol = "freedom", settings = {}}}
}, 1))