mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-01 03:15:13 +08:00
🐶 Sync 2026-09-17 00:01:35
This commit is contained in:
1 parent
d0c748add2
commit
6c6ea07309
106 files changed
+7551
-5770
No files matched your search
@@ -7,8 +7,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-passwall
|
||||
PKG_VERSION:=26.9.9
|
||||
PKG_RELEASE:=275
|
||||
PKG_VERSION:=26.9.16
|
||||
PKG_RELEASE:=276
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
|
||||
@@ -707,16 +707,6 @@ o = s:option(Value, "ws_path", translate("WebSocket Path"))
|
||||
o.placeholder = "/"
|
||||
o:depends({ transport = "ws" })
|
||||
|
||||
o = s:option(Flag, "ws_enableEarlyData", translate("Enable early data"))
|
||||
o:depends({ transport = "ws" })
|
||||
|
||||
o = s:option(Value, "ws_maxEarlyData", translate("Early data length"))
|
||||
o.default = "1024"
|
||||
o:depends({ ws_enableEarlyData = true })
|
||||
|
||||
o = s:option(Value, "ws_earlyDataHeaderName", translate("Early data header name"), translate("Recommended value: Sec-WebSocket-Protocol"))
|
||||
o:depends({ ws_enableEarlyData = true })
|
||||
|
||||
-- [[ HTTPUpgrade部分 ]]--
|
||||
o = s:option(Value, "httpupgrade_host", translate("HTTPUpgrade Host"))
|
||||
o:depends({ transport = "httpupgrade" })
|
||||
|
||||
@@ -399,6 +399,10 @@ o:depends({ transport = "ws" })
|
||||
o = s:option(Value, "ws_path", translate("WebSocket Path"))
|
||||
o:depends({ transport = "ws" })
|
||||
|
||||
o = s:option(Value, "ws_earlyDataHeaderName", translate("Early data header name"), translate("Recommended value: Sec-WebSocket-Protocol"))
|
||||
o.placeholder = "Sec-WebSocket-Protocol"
|
||||
o:depends({ transport = "ws" })
|
||||
|
||||
-- [[ HTTPUpgrade部分 ]]--
|
||||
|
||||
o = s:option(Value, "httpupgrade_host", translate("HTTPUpgrade Host"))
|
||||
|
||||
@@ -347,9 +347,20 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
Host = node.ws_host,
|
||||
["User-Agent"] = node.user_agent
|
||||
} or nil,
|
||||
max_early_data = tonumber(node.ws_maxEarlyData) or nil,
|
||||
early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil --要与 Xray-core 兼容,请将其设置为 Sec-WebSocket-Protocol。它需要与服务器保持一致。
|
||||
}
|
||||
local path = api.UrlDecode(node.ws_path)
|
||||
local path_dat = api.split(path, "?")
|
||||
local params = {}
|
||||
for _, v in pairs(api.split(path_dat[2], '&')) do
|
||||
local t = api.split(v, '=')
|
||||
params[t[1]] = t[2]
|
||||
end
|
||||
local ed = tonumber(params.ed)
|
||||
if ed then
|
||||
v2ray_transport.path = path_dat[1]
|
||||
v2ray_transport.max_early_data = ed
|
||||
end
|
||||
v2ray_transport.early_data_header_name = params.eh or "Sec-WebSocket-Protocol"
|
||||
end
|
||||
|
||||
if node.transport == "httpupgrade" then
|
||||
@@ -762,7 +773,7 @@ function gen_config_server(node)
|
||||
type = "ws",
|
||||
path = node.ws_path or "/",
|
||||
headers = (node.ws_host ~= nil) and { Host = node.ws_host } or nil,
|
||||
early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil --要与 Xray-core 兼容,请将其设置为 Sec-WebSocket-Protocol。它需要与服务器保持一致。
|
||||
early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or "Sec-WebSocket-Protocol"
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -249,10 +249,6 @@ local current_node = map:get(section)
|
||||
if (v_transport === "ws") {
|
||||
params += opt.query("host", dom_prefix + "ws_host");
|
||||
params += opt.query("path", dom_prefix + "ws_path");
|
||||
if (v_type == "sing-box" && opt.get(dom_prefix + "ws_enableEarlyData").checked) {
|
||||
var ws_maxEarlyData = opt.get(dom_prefix + "ws_maxEarlyData").value;
|
||||
params += "?ed=" + ws_maxEarlyData;
|
||||
}
|
||||
} else if (v_transport === "http") {
|
||||
params += opt.query("host", dom_prefix + "http_host");
|
||||
params += opt.query("path", dom_prefix + "http_path");
|
||||
@@ -371,10 +367,6 @@ local current_node = map:get(section)
|
||||
if (v_transport === "ws") {
|
||||
info.host = opt.get(dom_prefix + "ws_host").value;
|
||||
info.path = opt.get(dom_prefix + "ws_path").value;
|
||||
if (v_type == "sing-box" && opt.get(dom_prefix + "ws_enableEarlyData").checked) {
|
||||
var ws_maxEarlyData = opt.get(dom_prefix + "ws_maxEarlyData").value;
|
||||
info.path = info.path + "?ed=" + ws_maxEarlyData;
|
||||
}
|
||||
} else if (v_transport === "http") {
|
||||
info.host = opt.get(dom_prefix + "http_host").value;
|
||||
info.path = opt.get(dom_prefix + "http_path").value;
|
||||
@@ -431,10 +423,6 @@ local current_node = map:get(section)
|
||||
if (v_transport === "ws") {
|
||||
params += opt.query("host", dom_prefix + "ws_host");
|
||||
params += opt.query("path", dom_prefix + "ws_path");
|
||||
if (v_type == "sing-box" && opt.get(dom_prefix + "ws_enableEarlyData").checked) {
|
||||
var ws_maxEarlyData = opt.get(dom_prefix + "ws_maxEarlyData").value;
|
||||
params += encodeURIComponent("?ed=" + ws_maxEarlyData);
|
||||
}
|
||||
} else if (v_transport === "http") {
|
||||
params += opt.query("host", dom_prefix + "http_host");
|
||||
params += opt.query("path", dom_prefix + "http_path");
|
||||
@@ -523,10 +511,6 @@ local current_node = map:get(section)
|
||||
if (v_transport === "ws") {
|
||||
params += opt.query("host", dom_prefix + "ws_host");
|
||||
params += opt.query("path", dom_prefix + "ws_path");
|
||||
if (v_type == "sing-box" && opt.get(dom_prefix + "ws_enableEarlyData").checked) {
|
||||
var ws_maxEarlyData = opt.get(dom_prefix + "ws_maxEarlyData").value;
|
||||
params += "?ed=" + ws_maxEarlyData;
|
||||
}
|
||||
} else if (v_transport === "http") {
|
||||
params += opt.query("host", dom_prefix + "http_host");
|
||||
params += opt.query("path", dom_prefix + "http_path");
|
||||
@@ -1085,24 +1069,6 @@ local current_node = map:get(section)
|
||||
} else if (queryParam.type === "ws") {
|
||||
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
||||
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
||||
if (dom_prefix == "singbox_" && queryParam.path && queryParam.path.length > 1) {
|
||||
var ws_path_params = {};
|
||||
var ws_path_dat = queryParam.path.split('?');
|
||||
var ws_path = ws_path_dat[0];
|
||||
var ws_path_params = {};
|
||||
var ws_path_params_array = (ws_path_dat[1] || '').split('&');
|
||||
for (i = 0; i < ws_path_params_array.length; i++) {
|
||||
var kv = ws_path_params_array[i].split('=');
|
||||
ws_path_params[decodeURIComponent(kv[0]).toLowerCase()] = decodeURIComponent(kv[1] || '');
|
||||
}
|
||||
|
||||
if (ws_path_params.ed) {
|
||||
opt.set(dom_prefix + 'ws_path', ws_path);
|
||||
opt.set(dom_prefix + 'ws_enableEarlyData', true);
|
||||
opt.set(dom_prefix + 'ws_maxEarlyData', ws_path_params.ed);
|
||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
||||
}
|
||||
}
|
||||
} else if (queryParam.type === "http") {
|
||||
if (dom_prefix == "xray_") {
|
||||
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||
@@ -1232,24 +1198,6 @@ local current_node = map:get(section)
|
||||
} else if (queryParam.type === "ws") {
|
||||
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
||||
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
||||
if (dom_prefix == "singbox_" && queryParam.path && queryParam.path.length > 1) {
|
||||
var ws_path_params = {};
|
||||
var ws_path_dat = queryParam.path.split('?');
|
||||
var ws_path = ws_path_dat[0];
|
||||
var ws_path_params = {};
|
||||
var ws_path_params_array = (ws_path_dat[1] || '').split('&');
|
||||
for (i = 0; i < ws_path_params_array.length; i++) {
|
||||
var kv = ws_path_params_array[i].split('=');
|
||||
ws_path_params[decodeURIComponent(kv[0]).toLowerCase()] = decodeURIComponent(kv[1] || '');
|
||||
}
|
||||
|
||||
if (ws_path_params.ed) {
|
||||
opt.set(dom_prefix + 'ws_path', ws_path);
|
||||
opt.set(dom_prefix + 'ws_enableEarlyData', true);
|
||||
opt.set(dom_prefix + 'ws_maxEarlyData', ws_path_params.ed);
|
||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
||||
}
|
||||
}
|
||||
} else if (queryParam.type === "http") {
|
||||
if (dom_prefix == "xray_") {
|
||||
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||
@@ -1374,24 +1322,6 @@ local current_node = map:get(section)
|
||||
} else if (ssm.net === "ws") {
|
||||
opt.set(dom_prefix + 'ws_host', ssm.host);
|
||||
opt.set(dom_prefix + 'ws_path', ssm.path);
|
||||
if (dom_prefix == "singbox_" && ssm.path && ssm.path.length > 1) {
|
||||
var ws_path_params = {};
|
||||
var ws_path_dat = ssm.path.split('?');
|
||||
var ws_path = ws_path_dat[0];
|
||||
var ws_path_params = {};
|
||||
var ws_path_params_array = (ws_path_dat[1] || '').split('&');
|
||||
for (i = 0; i < ws_path_params_array.length; i++) {
|
||||
var kv = ws_path_params_array[i].split('=');
|
||||
ws_path_params[decodeURIComponent(kv[0]).toLowerCase()] = decodeURIComponent(kv[1] || '');
|
||||
}
|
||||
|
||||
if (ws_path_params.ed) {
|
||||
opt.set(dom_prefix + 'ws_path', ws_path);
|
||||
opt.set(dom_prefix + 'ws_enableEarlyData', true);
|
||||
opt.set(dom_prefix + 'ws_maxEarlyData', ws_path_params.ed);
|
||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
||||
}
|
||||
}
|
||||
} else if (ssm.net === "http") {
|
||||
if (dom_prefix == "xray_") {
|
||||
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||
@@ -1517,24 +1447,6 @@ local current_node = map:get(section)
|
||||
} else if (queryParam.type === "ws") {
|
||||
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
||||
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
||||
if (dom_prefix == "singbox_" && queryParam.path && queryParam.path.length > 1) {
|
||||
var ws_path_params = {};
|
||||
var ws_path_dat = queryParam.path.split('?');
|
||||
var ws_path = ws_path_dat[0];
|
||||
var ws_path_params = {};
|
||||
var ws_path_params_array = (ws_path_dat[1] || '').split('&');
|
||||
for (i = 0; i < ws_path_params_array.length; i++) {
|
||||
var kv = ws_path_params_array[i].split('=');
|
||||
ws_path_params[decodeURIComponent(kv[0]).toLowerCase()] = decodeURIComponent(kv[1] || '');
|
||||
}
|
||||
|
||||
if (ws_path_params.ed) {
|
||||
opt.set(dom_prefix + 'ws_path', ws_path);
|
||||
opt.set(dom_prefix + 'ws_enableEarlyData', true);
|
||||
opt.set(dom_prefix + 'ws_maxEarlyData', ws_path_params.ed);
|
||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
||||
}
|
||||
}
|
||||
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
||||
if (dom_prefix == "xray_") {
|
||||
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||
|
||||
@@ -1757,12 +1757,6 @@ msgstr "XUDP 最大并发连接数"
|
||||
msgid "Padding"
|
||||
msgstr "填充"
|
||||
|
||||
msgid "Enable early data"
|
||||
msgstr "启用前置数据"
|
||||
|
||||
msgid "Early data length"
|
||||
msgstr "前置数据最大长度"
|
||||
|
||||
msgid "Early data header name"
|
||||
msgstr "前置数据 HTTP 头名"
|
||||
|
||||
|
||||
@@ -88,7 +88,16 @@ local function build_common(node)
|
||||
if net == "ws" then
|
||||
local opts = node["ws-opts"]
|
||||
if opts then
|
||||
o.transport.path = opts.path
|
||||
local path = opts.path or "/"
|
||||
local ed = opts["max-early-data"]
|
||||
local eh = opts["early-data-header-name"]
|
||||
if ed then
|
||||
path = path .. "?ed=" .. ed
|
||||
end
|
||||
if eh then
|
||||
path = path .. (path:find("?", 1, true) and "&eh=" or "?eh=") .. eh
|
||||
end
|
||||
o.transport.path = path
|
||||
o.transport.host = opts.headers and opts.headers.Host
|
||||
end
|
||||
|
||||
|
||||
@@ -641,21 +641,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
||||
if info.net == 'ws' then
|
||||
result.ws_host = info.host
|
||||
result.ws_path = info.path
|
||||
if result.type == "sing-box" and info.path then
|
||||
local ws_path_dat = split(info.path, "?")
|
||||
local ws_path = ws_path_dat[1]
|
||||
local ws_path_params = {}
|
||||
for _, v in pairs(split(ws_path_dat[2], '&')) do
|
||||
local t = split(v, '=')
|
||||
ws_path_params[t[1]] = t[2]
|
||||
end
|
||||
if ws_path_params.ed and tonumber(ws_path_params.ed) then
|
||||
result.ws_path = ws_path
|
||||
result.ws_enableEarlyData = "1"
|
||||
result.ws_maxEarlyData = tonumber(ws_path_params.ed)
|
||||
result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol"
|
||||
end
|
||||
end
|
||||
end
|
||||
if info.net == "http" then
|
||||
if result.type == "Xray" then
|
||||
@@ -897,21 +882,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
||||
if params.type == 'ws' then
|
||||
result.ws_host = params.host
|
||||
result.ws_path = params.path
|
||||
if result.type == "sing-box" and params.path then
|
||||
local ws_path_dat = split(params.path, "%?")
|
||||
local ws_path = ws_path_dat[1]
|
||||
local ws_path_params = {}
|
||||
for _, v in pairs(split(ws_path_dat[2], '&')) do
|
||||
local t = split(v, '=')
|
||||
ws_path_params[t[1]] = t[2]
|
||||
end
|
||||
if ws_path_params.ed and tonumber(ws_path_params.ed) then
|
||||
result.ws_path = ws_path
|
||||
result.ws_enableEarlyData = "1"
|
||||
result.ws_maxEarlyData = tonumber(ws_path_params.ed)
|
||||
result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol"
|
||||
end
|
||||
end
|
||||
end
|
||||
if params.type == "http" then
|
||||
if result.type == "sing-box" then
|
||||
@@ -1124,21 +1094,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
||||
if params.type == 'ws' then
|
||||
result.ws_host = params.host
|
||||
result.ws_path = params.path
|
||||
if result.type == "sing-box" and params.path then
|
||||
local ws_path_dat = split(params.path, "%?")
|
||||
local ws_path = ws_path_dat[1]
|
||||
local ws_path_params = {}
|
||||
for _, v in pairs(split(ws_path_dat[2], '&')) do
|
||||
local t = split(v, '=')
|
||||
ws_path_params[t[1]] = t[2]
|
||||
end
|
||||
if ws_path_params.ed and tonumber(ws_path_params.ed) then
|
||||
result.ws_path = ws_path
|
||||
result.ws_enableEarlyData = "1"
|
||||
result.ws_maxEarlyData = tonumber(ws_path_params.ed)
|
||||
result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol"
|
||||
end
|
||||
end
|
||||
end
|
||||
if params.type == "http" then
|
||||
if result.type == "sing-box" then
|
||||
@@ -1266,21 +1221,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
||||
if params.type == 'ws' then
|
||||
result.ws_host = params.host
|
||||
result.ws_path = params.path
|
||||
if result.type == "sing-box" and params.path then
|
||||
local ws_path_dat = split(params.path, "%?")
|
||||
local ws_path = ws_path_dat[1]
|
||||
local ws_path_params = {}
|
||||
for _, v in pairs(split(ws_path_dat[2], '&')) do
|
||||
local t = split(v, '=')
|
||||
ws_path_params[t[1]] = t[2]
|
||||
end
|
||||
if ws_path_params.ed and tonumber(ws_path_params.ed) then
|
||||
result.ws_path = ws_path
|
||||
result.ws_enableEarlyData = "1"
|
||||
result.ws_maxEarlyData = tonumber(ws_path_params.ed)
|
||||
result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol"
|
||||
end
|
||||
end
|
||||
end
|
||||
if params.type == "http" then
|
||||
if result.type == "sing-box" then
|
||||
|
||||
Reference in new issue
Block a user