diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index 9b6570b1..56d551d0 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=26.5.3 -PKG_RELEASE:=111 +PKG_RELEASE:=112 PKG_PO_VERSION:=$(PKG_VERSION) PKG_CONFIG_DEPENDS:= \ 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 f548f5f2..02dd00c1 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 @@ -406,16 +406,19 @@ local current_node = map:get(section) } else if (v_transport === "grpc") { info.path = opt.get(dom_prefix + "grpc_serviceName").value; } - if (info.path && info.path != "") { - info.path = encodeURI(info.path); - } info.net = v_transport; info.security = opt.get(dom_prefix + "security").value || "auto"; + info.scy = info.security; if (opt.get(dom_prefix + "tls").checked) { var v_security = "tls"; info.tls = "tls"; info.sni = opt.get(dom_prefix + "tls_serverName").value; + info.alpn = opt.get(dom_prefix + "alpn")?.value; + if (info.alpn === "default") info.alpn = undefined; + info.fp = opt.get(dom_prefix + "fingerprint")?.value; + info.pcs = opt.get(dom_prefix + "tls_pinSHA256")?.value; + opt.get(dom_prefix + "tls_allowInsecure")?.checked && (info.insecure = "1"); } opt.get(dom_prefix + "tcp_fast_open")?.checked && (info.tfo = "1"); @@ -1350,9 +1353,16 @@ local current_node = map:get(section) opt.set(dom_prefix + 'address', unbracketIP(ssm.add)); opt.set(dom_prefix + 'port', ssm.port); opt.set(dom_prefix + 'uuid', ssm.id); + opt.set(dom_prefix + 'security', ssm.security || ssm.scy || "auto"); opt.set(dom_prefix + 'tls', ssm.tls === "tls"); if (ssm.tls === "tls") { opt.set(dom_prefix + 'tls_serverName', ssm.sni || ssm.host); + opt.set(dom_prefix + 'alpn', ssm.alpn || "default"); + if (ssm.fp && ssm.fp !== "") { + opt.set(dom_prefix + 'utls', true); + opt.set(dom_prefix + 'fingerprint', ssm.fp); + } + opt.set(dom_prefix + 'tls_pinSHA256', ssm.pcs || ""); opt.set( dom_prefix + 'tls_allowInsecure', !((ssm.allowinsecure ?? '0') === '0' && (ssm.allowInsecure ?? '0') === '0' && (ssm.insecure ?? '0') === '0') @@ -1798,7 +1808,8 @@ local current_node = map:get(section) opt.get(dom_prefix + 'port').blur(); } } else { - s.innerHTML = "<%:Invalid Share URL Format%>: " + ssu[0]; + s.innerHTML = "<%:Invalid Share URL Format%>"; + sessionStorage.removeItem("fromUrl"); return false; } s.innerHTML = "<%:Import Finished %>"; diff --git a/luci-app-passwall/root/usr/share/passwall/subscribe.lua b/luci-app-passwall/root/usr/share/passwall/subscribe.lua index 85ba61e4..c418e21e 100755 --- a/luci-app-passwall/root/usr/share/passwall/subscribe.lua +++ b/luci-app-passwall/root/usr/share/passwall/subscribe.lua @@ -663,9 +663,14 @@ local function processData(szType, content, add_mode, group, sub_cfg) result.httpupgrade_host = info.host result.httpupgrade_path = info.path end - if not info.security then result.security = "auto" end + result.security = info.security or info.scy or "auto" if info.tls == "tls" or info.tls == "1" then result.tls = "1" + result.alpn = info.alpn + if info.fp and info.fp ~= "" then + result.utls = "1" + result.fingerprint = info.fp + end result.tls_serverName = (info.sni and info.sni ~= "") and info.sni or info.host result.tls_pinSHA256 = info.pcs result.tls_CertByName = info.vcn