mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-27 17:52:10 +03:00
fix(link): read the vmess certificate checks on import (#6507)
* fix(link): read the vmess certificate checks on import applyVmessTLSParams writes ech, vcn and pcs into the vmess share object, but parseVmess only read sni, fp and alpn back. Importing a link the panel had just exported therefore dropped all three: no pinned certificate, no verify-by-name, no ECH. On a server whose certificate is only trusted through a pin, the imported outbound falls back to public-CA verification against the system roots and cannot connect to the inbound the link came from. The url-param protocols already read the same three in applySecurity, and the core takes pinnedPeerCertSha256 as one joined string there, so the vmess path now fills them the same way. * fix(frontend): read the vmess certificate checks on import The panel parses share links twice: link.ParseLink in Go and parseVmessLink in outbound-link-parser.ts, which is what the Add Outbound button calls. Reading ech, vcn and pcs in Go alone would have made the two sides disagree on one link, leaving the UI path — the one an operator uses by hand — still dropping the pin the panel had just exported.
This commit is contained in:
@@ -458,6 +458,11 @@ export function parseVmessLink(link: string): Raw | null {
|
||||
tls.serverName = json.sni ?? '';
|
||||
tls.fingerprint = json.fp ?? '';
|
||||
if (json.alpn) tls.alpn = (json.alpn as string).split(',');
|
||||
// The vmess object names the certificate checks the url-param protocols
|
||||
// pass through applySecurityParams, under the same short names.
|
||||
if (typeof json.ech === 'string') tls.echConfigList = json.ech;
|
||||
if (typeof json.vcn === 'string') tls.verifyPeerCertByName = json.vcn;
|
||||
if (typeof json.pcs === 'string') tls.pinnedPeerCertSha256 = json.pcs;
|
||||
}
|
||||
|
||||
const port = Number(json.port) || 443;
|
||||
|
||||
Reference in New Issue
Block a user