update 2026-07-04 21:12:26

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

View File

@ -680,7 +680,7 @@ local current_node = map:get(section)
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");
params += opt.query("insecure", dom_prefix + "tls_allowInsecure");
}
params += "#" + encodeURI(v_alias.value);
@ -1445,11 +1445,9 @@ local current_node = map:get(section)
}
if (ssu[0] === "vless") {
if (vless_type == "sing-box" && has_singbox) {
dom_prefix = "singbox_"
opt.set('type', "sing-box");
dom_prefix = "singbox_";
} else if (has_xray) {
dom_prefix = "xray_"
opt.set('type', "Xray");
dom_prefix = "xray_";
}
var m = parseNodeUrl(ssrurl);
@ -1472,20 +1470,22 @@ local current_node = map:get(section)
queryParam.type = queryParam.type.toLowerCase();
if (["xhttp", "kcp", "mkcp"].includes(queryParam.type) && vless_type !== "xray" && has_xray) {
dom_prefix = "xray_"
opt.set('type', "Xray");
dom_prefix = "xray_";
}
opt.set("type", dom_prefix === "singbox_" ? "sing-box" : "Xray");
opt.set(dom_prefix + 'protocol', "vless");
opt.set(dom_prefix + 'uuid', password);
opt.set(dom_prefix + 'address', unbracketIP(m.hostname));
opt.set(dom_prefix + 'port', m.port || "443");
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 == "tls") {
opt.set(dom_prefix + 'tls', true);
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 + 'tls_serverName', queryParam.sni || '');
opt.set(
@ -1505,6 +1505,7 @@ local current_node = map:get(section)
if (queryParam.security == "reality") {
opt.set(dom_prefix + 'tls', 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 + 'tls_serverName', queryParam.sni || '');
if (queryParam.fp && queryParam.fp.trim() != "") {
@ -1740,9 +1741,7 @@ local current_node = map:get(section)
queryParam[decodeURIComponent(params[0]).toLowerCase()] = decodeURIComponent(params[1] || '');
}
}
if (!queryParam.security || queryParam.security == "") {
queryParam.security = "tls";
}
queryParam.security = queryParam.security || "tls";
if (queryParam.security) {
if (queryParam.security == "tls") {
opt.set(dom_prefix + 'tls', true);

View File

@ -446,14 +446,17 @@ local function encode_anytls(node)
local link = "anytls://" .. (node.password or "") .. "@" .. host_format(node.server) .. ":" .. node.port
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.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.ech then table.insert(p, "ech=" .. urlencode(o.tls.ech)) end
if o.tls.pcs then
table.insert(p, "allowInsecure=1")
table.insert(p, "insecure=1")
else
table.insert(p, "allowInsecure=" .. (o.tls.insecure and "1" or "0"))
table.insert(p, "insecure=" .. (o.tls.insecure and "1" or "0"))
end
if #p > 0 then

View File

@ -1299,6 +1299,10 @@ local function processData(szType, content, add_mode, group, sub_cfg)
result.encryption = params.encryption or "none"
result.flow = params.flow
if (not params.security or params.security == "") and params.flow then
params.security = "tls"
end
result.tls = "0"
if params.security == "tls" or params.security == "reality" then
result.tls = "1"

View File

@ -759,6 +759,15 @@ local function parseClashNode(node, add_mode, group, sub_cfg)
if sub_allowinsecure then
result.tls_allowInsecure = "1"
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
if not result.remarks or result.remarks == "" then
if result.address and result.port then

View File

@ -111,10 +111,8 @@ local function generate_apple(type)
end
end
end
if new_appledns and new_appledns ~= "" then
for _, domain in ipairs(domains) do
out:write(string.format("server=/%s/%s\n", domain, new_appledns))
end
for _, domain in ipairs(domains) do
out:write(string.format("server=/%s/%s\n", domain, new_appledns))
end
out:close()
os.remove("/tmp/ssr-update.tmp")