update 2026-07-04 21:12:26

This commit is contained in:
action committed 2026-07-04 21:12:27 +08:00
1 parent a3f39b7f6d
commit 6a291e60f8
5 files changed
+30 -17

No files matched your search

@@ -680,7 +680,7 @@ local current_node = map:get(section)
params += "&security=" + v_security; params += "&security=" + v_security;
params += opt.query("alpn", dom_prefix + "alpn"); params += opt.query("alpn", dom_prefix + "alpn");
params += opt.query("sni", dom_prefix + "tls_serverName"); params += opt.query("sni", dom_prefix + "tls_serverName");
params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure"); params += opt.query("insecure", dom_prefix + "tls_allowInsecure");
} }
params += "#" + encodeURI(v_alias.value); params += "#" + encodeURI(v_alias.value);
@@ -1445,11 +1445,9 @@ local current_node = map:get(section)
} }
if (ssu[0] === "vless") { if (ssu[0] === "vless") {
if (vless_type == "sing-box" && has_singbox) { if (vless_type == "sing-box" && has_singbox) {
dom_prefix = "singbox_" dom_prefix = "singbox_";
opt.set('type', "sing-box");
} else if (has_xray) { } else if (has_xray) {
dom_prefix = "xray_" dom_prefix = "xray_";
opt.set('type', "Xray");
} }
var m = parseNodeUrl(ssrurl); var m = parseNodeUrl(ssrurl);
@@ -1472,20 +1470,22 @@ local current_node = map:get(section)
queryParam.type = queryParam.type.toLowerCase(); queryParam.type = queryParam.type.toLowerCase();
if (["xhttp", "kcp", "mkcp"].includes(queryParam.type) && vless_type !== "xray" && has_xray) { if (["xhttp", "kcp", "mkcp"].includes(queryParam.type) && vless_type !== "xray" && has_xray) {
dom_prefix = "xray_" dom_prefix = "xray_";
opt.set('type', "Xray");
} }
opt.set("type", dom_prefix === "singbox_" ? "sing-box" : "Xray");
opt.set(dom_prefix + 'protocol', "vless"); opt.set(dom_prefix + 'protocol', "vless");
opt.set(dom_prefix + 'uuid', password); opt.set(dom_prefix + 'uuid', password);
opt.set(dom_prefix + 'address', unbracketIP(m.hostname)); opt.set(dom_prefix + 'address', unbracketIP(m.hostname));
opt.set(dom_prefix + 'port', m.port || "443"); opt.set(dom_prefix + 'port', m.port || "443");
opt.set(dom_prefix + 'encryption', queryParam.encryption || "none"); opt.set(dom_prefix + 'encryption', queryParam.encryption || "none");
opt.set(dom_prefix + 'flow', queryParam.flow || ''); queryParam.security = (!queryParam.security && queryParam.flow) ? "tls" : queryParam.security;
if (queryParam.security) { if (queryParam.security) {
if (queryParam.security == "tls") { if (queryParam.security == "tls") {
opt.set(dom_prefix + 'tls', true); opt.set(dom_prefix + 'tls', true);
opt.set(dom_prefix + 'reality', false); opt.set(dom_prefix + 'reality', false);
opt.set(dom_prefix + 'flow', queryParam.flow || '');
opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default'); opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default');
opt.set(dom_prefix + 'tls_serverName', queryParam.sni || ''); opt.set(dom_prefix + 'tls_serverName', queryParam.sni || '');
opt.set( opt.set(
@@ -1505,6 +1505,7 @@ local current_node = map:get(section)
if (queryParam.security == "reality") { if (queryParam.security == "reality") {
opt.set(dom_prefix + 'tls', true); opt.set(dom_prefix + 'tls', true);
opt.set(dom_prefix + 'reality', true); opt.set(dom_prefix + 'reality', true);
opt.set(dom_prefix + 'flow', queryParam.flow || '');
opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default'); opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default');
opt.set(dom_prefix + 'tls_serverName', queryParam.sni || ''); opt.set(dom_prefix + 'tls_serverName', queryParam.sni || '');
if (queryParam.fp && queryParam.fp.trim() != "") { if (queryParam.fp && queryParam.fp.trim() != "") {
@@ -1740,9 +1741,7 @@ local current_node = map:get(section)
queryParam[decodeURIComponent(params[0]).toLowerCase()] = decodeURIComponent(params[1] || ''); queryParam[decodeURIComponent(params[0]).toLowerCase()] = decodeURIComponent(params[1] || '');
} }
} }
if (!queryParam.security || queryParam.security == "") { queryParam.security = queryParam.security || "tls";
queryParam.security = "tls";
}
if (queryParam.security) { if (queryParam.security) {
if (queryParam.security == "tls") { if (queryParam.security == "tls") {
opt.set(dom_prefix + 'tls', true); opt.set(dom_prefix + 'tls', true);
@@ -446,14 +446,17 @@ local function encode_anytls(node)
local link = "anytls://" .. (node.password or "") .. "@" .. host_format(node.server) .. ":" .. node.port local link = "anytls://" .. (node.password or "") .. "@" .. host_format(node.server) .. ":" .. node.port
local p = {} local p = {}
if o.tls.security then table.insert(p, "security=" .. o.tls.security) end
if o.tls.pbk then table.insert(p, "pbk=" .. urlencode(o.tls.pbk)) end
if o.tls.sid then table.insert(p, "sid=" .. urlencode(o.tls.sid)) end
if o.tls.sni then table.insert(p, "sni=" .. urlencode(o.tls.sni)) end if o.tls.sni then table.insert(p, "sni=" .. urlencode(o.tls.sni)) end
if o.tls.alpn then table.insert(p, "alpn=" .. urlencode(o.tls.alpn)) end if o.tls.alpn then table.insert(p, "alpn=" .. urlencode(o.tls.alpn)) end
if o.tls.fp then table.insert(p, "fp=" .. urlencode(o.tls.fp)) end if o.tls.fp then table.insert(p, "fp=" .. urlencode(o.tls.fp)) end
if o.tls.ech then table.insert(p, "ech=" .. urlencode(o.tls.ech)) end if o.tls.ech then table.insert(p, "ech=" .. urlencode(o.tls.ech)) end
if o.tls.pcs then if o.tls.pcs then
table.insert(p, "allowInsecure=1") table.insert(p, "insecure=1")
else else
table.insert(p, "allowInsecure=" .. (o.tls.insecure and "1" or "0")) table.insert(p, "insecure=" .. (o.tls.insecure and "1" or "0"))
end end
if #p > 0 then if #p > 0 then
@@ -1299,6 +1299,10 @@ local function processData(szType, content, add_mode, group, sub_cfg)
result.encryption = params.encryption or "none" result.encryption = params.encryption or "none"
result.flow = params.flow result.flow = params.flow
if (not params.security or params.security == "") and params.flow then
params.security = "tls"
end
result.tls = "0" result.tls = "0"
if params.security == "tls" or params.security == "reality" then if params.security == "tls" or params.security == "reality" then
result.tls = "1" result.tls = "1"
@@ -759,6 +759,15 @@ local function parseClashNode(node, add_mode, group, sub_cfg)
if sub_allowinsecure then if sub_allowinsecure then
result.tls_allowInsecure = "1" result.tls_allowInsecure = "1"
end end
if node["client-fingerprint"] then
result.utls = "1"
result.fingerprint = node["client-fingerprint"]
end
if node.tls and node["reality-opts"] and node["reality-opts"]["public-key"] then
result.reality = "1"
result.reality_publicKey = node["reality-opts"]["public-key"]
result.reality_shortId = node["reality-opts"]["short-id"]
end
end end
if not result.remarks or result.remarks == "" then if not result.remarks or result.remarks == "" then
if result.address and result.port then if result.address and result.port then
@@ -111,10 +111,8 @@ local function generate_apple(type)
end end
end end
end end
if new_appledns and new_appledns ~= "" then for _, domain in ipairs(domains) do
for _, domain in ipairs(domains) do out:write(string.format("server=/%s/%s\n", domain, new_appledns))
out:write(string.format("server=/%s/%s\n", domain, new_appledns))
end
end end
out:close() out:close()
os.remove("/tmp/ssr-update.tmp") os.remove("/tmp/ssr-update.tmp")