diff --git a/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm b/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm index 92b2a1ee..895219bb 100644 --- a/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm +++ b/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm @@ -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); diff --git a/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua b/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua index 57d278e6..009ec2c5 100644 --- a/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua +++ b/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua @@ -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 diff --git a/luci-app-passwall/root/usr/share/passwall/subscribe.lua b/luci-app-passwall/root/usr/share/passwall/subscribe.lua index 7e972c80..fe38e9ee 100755 --- a/luci-app-passwall/root/usr/share/passwall/subscribe.lua +++ b/luci-app-passwall/root/usr/share/passwall/subscribe.lua @@ -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" diff --git a/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua b/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua index 8352028f..92a713cc 100755 --- a/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua +++ b/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua @@ -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 diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua b/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua index dd204d16..9526b688 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/update.lua @@ -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")