mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-09-14 04:15:06 +08:00
⛄ Sync 2026-06-30 01:11:33
This commit is contained in:
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-passwall
|
||||
PKG_VERSION:=26.6.2
|
||||
PKG_RELEASE:=169
|
||||
PKG_RELEASE:=170
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
|
||||
@@ -179,19 +179,17 @@ if has_xray then
|
||||
o:value("1-5", "1-5")
|
||||
o:depends("fragment", true)
|
||||
|
||||
o = s_xray:option(Value, "fragment_length", translate("Fragment Length"), translate("Fragmented packet length (byte)"))
|
||||
o.datatype = "or(uinteger,portrange)"
|
||||
o.default = "100-200"
|
||||
o = s_xray:option(Value, "fragment_lengths", translate("Fragment Length"), translate("Fragmented packet length (byte)"))
|
||||
o.default = "3-5,6-8,10-20"
|
||||
o:depends("fragment", true)
|
||||
|
||||
o = s_xray:option(Value, "fragment_delay", translate("Fragment Delay"), translate("Fragmentation interval (ms)"))
|
||||
o.datatype = "or(uinteger,portrange)"
|
||||
o = s_xray:option(Value, "fragment_delays", translate("Fragment Delay"), translate("Fragmentation interval (ms)"))
|
||||
o.default = "10-20"
|
||||
o:depends("fragment", true)
|
||||
|
||||
o = s_xray:option(Value, "fragment_maxSplit", translate("Max Split"), translate("Limit the maximum number of splits."))
|
||||
o.datatype = "or(uinteger,portrange)"
|
||||
o.default = "100-200"
|
||||
o.default = "3-6"
|
||||
o:depends("fragment", true)
|
||||
|
||||
o = s_xray:option(Flag, "noise", translate("Noise"), translate("UDP noise, Under some circumstances it can bypass some UDP based protocol restrictions."))
|
||||
|
||||
@@ -883,13 +883,21 @@ function gen_config(var)
|
||||
local xray_settings = uci:get_all(appname, "@global_xray[0]") or {}
|
||||
|
||||
if xray_settings.fragment == "1" then
|
||||
local delay = xray_settings.fragment_delay
|
||||
local lengths, delays = {}, {}
|
||||
api.trim(xray_settings.fragment_lengths):gsub("[^,]+", function(w)
|
||||
w = w:gsub("%s+", "")
|
||||
if w ~= "" then lengths[#lengths+1] = w end
|
||||
end)
|
||||
api.trim(xray_settings.fragment_delays):gsub("[^,]+", function(w)
|
||||
w = w:gsub("%s+", "")
|
||||
if w ~= "" then delays[#delays+1] = w end
|
||||
end)
|
||||
fragment_table = {
|
||||
type = "fragment",
|
||||
settings = {
|
||||
packets = xray_settings.fragment_packets,
|
||||
length = xray_settings.fragment_length,
|
||||
delay = delay and (delay:find("-", 1, true) and delay or tonumber(delay)) or nil,
|
||||
lengths = #lengths > 0 and lengths or nil,
|
||||
delays = #delays > 0 and delays or nil,
|
||||
maxSplit = xray_settings.fragment_maxSplit
|
||||
}
|
||||
}
|
||||
|
||||
@@ -552,8 +552,9 @@ local current_node = map:get(section)
|
||||
}
|
||||
params += "&type=" + v_transport;
|
||||
|
||||
var v_security = "none";
|
||||
if (opt.get(dom_prefix + "tls").checked) {
|
||||
var v_security = "tls";
|
||||
v_security = "tls";
|
||||
if (opt.get(dom_prefix + "fingerprint") && opt.get(dom_prefix + "fingerprint").value != "") {
|
||||
let v_fp = opt.get(dom_prefix + "fingerprint").value;
|
||||
params += "&fp=" + v_fp;
|
||||
@@ -565,7 +566,6 @@ local current_node = map:get(section)
|
||||
params += opt.query("spx", dom_prefix + "reality_spiderX");
|
||||
params += opt.query("pqv", dom_prefix + "reality_mldsa65Verify");
|
||||
}
|
||||
params += "&security=" + v_security;
|
||||
params += opt.query("alpn", dom_prefix + "alpn");
|
||||
params += opt.query("sni", dom_prefix + "tls_serverName");
|
||||
params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure");
|
||||
@@ -573,6 +573,7 @@ local current_node = map:get(section)
|
||||
params += opt.query("vcn", dom_prefix + "tls_CertByName");
|
||||
params += opt.query("ech", dom_prefix + "ech_config");
|
||||
}
|
||||
params += "&security=" + v_security;
|
||||
|
||||
opt.get(dom_prefix + "tcp_fast_open")?.checked && (params += "&tfo=1");
|
||||
if (opt.get(dom_prefix + "use_finalmask")?.checked) {
|
||||
@@ -1302,17 +1303,37 @@ local current_node = map:get(section)
|
||||
}
|
||||
|
||||
queryParam.security = queryParam.security || "tls";
|
||||
opt.set(dom_prefix + 'tls', queryParam.security === "tls");
|
||||
if (queryParam.security === "tls") {
|
||||
opt.set(dom_prefix + 'tls_serverName', queryParam.peer || queryParam.sni || "");
|
||||
opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default');
|
||||
opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || '');
|
||||
opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || '');
|
||||
if (queryParam.security == "tls" || queryParam.security == "reality") {
|
||||
if (queryParam.security == "tls") {
|
||||
opt.set(dom_prefix + 'tls', true);
|
||||
opt.set(dom_prefix + 'reality', false);
|
||||
opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default');
|
||||
opt.set(dom_prefix + 'tls_serverName', queryParam.peer || queryParam.sni || "");
|
||||
if (queryParam.fp && queryParam.fp.trim() != "") {
|
||||
opt.set(dom_prefix + 'utls', true);
|
||||
opt.set(dom_prefix + 'fingerprint', queryParam.fp);
|
||||
}
|
||||
opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || '');
|
||||
opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || '');
|
||||
opt.set(
|
||||
dom_prefix + 'tls_allowInsecure',
|
||||
!((queryParam.allowinsecure ?? '0') === '0' && (queryParam.allowInsecure ?? '0') === '0' && (queryParam.insecure ?? '0') === '0')
|
||||
);
|
||||
}
|
||||
if (queryParam.security == "reality") {
|
||||
opt.set(dom_prefix + 'tls', true);
|
||||
opt.set(dom_prefix + 'reality', true);
|
||||
opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default');
|
||||
opt.set(dom_prefix + 'tls_serverName', queryParam.peer || queryParam.sni || "");
|
||||
if (queryParam.fp && queryParam.fp.trim() != "") {
|
||||
opt.set(dom_prefix + 'utls', true);
|
||||
opt.set(dom_prefix + 'fingerprint', queryParam.fp);
|
||||
}
|
||||
opt.set(dom_prefix + 'reality_publicKey', queryParam.pbk || '');
|
||||
opt.set(dom_prefix + 'reality_shortId', queryParam.sid || '');
|
||||
}
|
||||
}
|
||||
opt.set(
|
||||
dom_prefix + 'tls_allowInsecure',
|
||||
!((queryParam.allowinsecure ?? '0') === '0' && (queryParam.allowInsecure ?? '0') === '0' && (queryParam.insecure ?? '0') === '0')
|
||||
);
|
||||
|
||||
opt.set(dom_prefix + 'tcp_fast_open', queryParam.tfo);
|
||||
opt.set(dom_prefix + 'use_finalmask', !!queryParam.fm);
|
||||
opt.set(dom_prefix + 'finalmask', queryParam.fm || "");
|
||||
|
||||
@@ -1055,11 +1055,24 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
||||
end
|
||||
result.port = port
|
||||
|
||||
result.tls = '1'
|
||||
result.tls_serverName = params.peer or params.sni or ""
|
||||
result.tls_pinSHA256 = params.pcs
|
||||
result.tls_CertByName = params.vcn
|
||||
result.tls_allowInsecure = params.allowinsecure or params.allowInsecure or params.insecure
|
||||
params.security = params.security or "tls"
|
||||
if params.security == "tls" or params.security == "reality" then
|
||||
result.tls = '1'
|
||||
result.tls_serverName = params.peer or params.sni or ""
|
||||
result.alpn = params.alpn
|
||||
if params.fp and params.fp ~= "" then
|
||||
result.utls = "1"
|
||||
result.fingerprint = params.fp
|
||||
end
|
||||
if params.security == "reality" then
|
||||
result.reality = "1"
|
||||
result.reality_publicKey = params.pbk or nil
|
||||
result.reality_shortId = params.sid or nil
|
||||
end
|
||||
result.tls_pinSHA256 = params.pcs
|
||||
result.tls_CertByName = params.vcn
|
||||
result.tls_allowInsecure = params.allowinsecure or params.allowInsecure or params.insecure
|
||||
end
|
||||
|
||||
if not params.type then params.type = "tcp" end
|
||||
params.type = string.lower(params.type)
|
||||
@@ -1133,7 +1146,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
||||
result.httpupgrade_path = params.path
|
||||
end
|
||||
|
||||
result.alpn = params.alpn
|
||||
result.tcp_fast_open = params.tfo
|
||||
result.use_finalmask = (params.fm and params.fm ~= "") and "1" or nil
|
||||
result.finalmask = (params.fm and params.fm ~= "") and api.base64Encode(params.fm) or nil
|
||||
|
||||
Reference in New Issue
Block a user