fix(link): honor the vmess ws path and hysteria2 vcn params on import

Two Go/TS parser parity gaps in the outbound share-link import path: parseVmess
only applied a ws link's path when the inner JSON also carried a host key, so a
generator that omits host dropped the path back to the default; and parseHysteria2
hardcoded verifyPeerCertByName to empty, ignoring the vcn param the panel emits,
so a hysteria2 outbound with a decoy SNI and a distinct cert name failed TLS
verification after import. The TS parser handles both; make the Go parser match.
This commit is contained in:
MHSanaei
2026-07-15 02:52:09 +02:00
parent babcf44891
commit 83de6e75e0
2 changed files with 29 additions and 4 deletions
+3 -4
View File
@@ -157,9 +157,8 @@ func parseVmess(link string) (*ParseResult, error) {
// Map known fields (best effort, matching frontend parser coverage)
switch network {
case "ws":
if host, ok := j["host"].(string); ok {
setWS(stream, host, getString(j, "path", "/"))
}
host, _ := j["host"].(string)
setWS(stream, host, getString(j, "path", "/"))
case "grpc":
svc := getString(j, "path", "")
if auth, ok := j["authority"].(string); ok && auth != "" {
@@ -452,7 +451,7 @@ func parseHysteria2(link string) (*ParseResult, error) {
"alpn": splitCommaOrDefault(params.Get("alpn"), []string{"h3"}),
"fingerprint": params.Get("fp"),
"echConfigList": params.Get("ech"),
"verifyPeerCertByName": "",
"verifyPeerCertByName": params.Get("vcn"),
"pinnedPeerCertSha256": params.Get("pinSHA256"),
},
}