mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-06 13:14:11 +00:00
fix(hysteria): use pinSHA256 for pinned cert and emit ech in share links
Hysteria links now carry the pinned peer cert under the hysteria2-standard pinSHA256 key instead of pcs (frontend genHysteriaLink + outbound importer round-trip), and the Go subscription generator emits ech from echConfigList. Also drops the dead allowInsecure guard in genHysteriaLink, which read a field that does not exist on TlsClientSettings.
This commit is contained in:
parent
7f8c79675f
commit
588ea86298
3 changed files with 7 additions and 4 deletions
|
|
@ -610,6 +610,9 @@ export function genHysteriaLink(input: GenHysteriaLinkInput): string {
|
||||||
if (tls.alpn.length > 0) params.set('alpn', tls.alpn.join(','));
|
if (tls.alpn.length > 0) params.set('alpn', tls.alpn.join(','));
|
||||||
if (tls.settings.echConfigList.length > 0) params.set('ech', tls.settings.echConfigList);
|
if (tls.settings.echConfigList.length > 0) params.set('ech', tls.settings.echConfigList);
|
||||||
if (tls.serverName.length > 0) params.set('sni', tls.serverName);
|
if (tls.serverName.length > 0) params.set('sni', tls.serverName);
|
||||||
|
if (tls.settings.pinnedPeerCertSha256.length > 0) {
|
||||||
|
params.set('pinSHA256', tls.settings.pinnedPeerCertSha256.join(','));
|
||||||
|
}
|
||||||
|
|
||||||
const udpMasks = stream.finalmask?.udp;
|
const udpMasks = stream.finalmask?.udp;
|
||||||
if (Array.isArray(udpMasks)) {
|
if (Array.isArray(udpMasks)) {
|
||||||
|
|
|
||||||
|
|
@ -417,7 +417,7 @@ export function parseHysteria2Link(link: string): Raw | null {
|
||||||
fingerprint: params.get('fp') ?? '',
|
fingerprint: params.get('fp') ?? '',
|
||||||
echConfigList: params.get('ech') ?? '',
|
echConfigList: params.get('ech') ?? '',
|
||||||
verifyPeerCertByName: '',
|
verifyPeerCertByName: '',
|
||||||
pinnedPeerCertSha256: params.get('pcs') ?? '',
|
pinnedPeerCertSha256: params.get('pinSHA256') ?? '',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
applyFinalMaskParam(stream, params);
|
applyFinalMaskParam(stream, params);
|
||||||
|
|
|
||||||
|
|
@ -603,9 +603,9 @@ func (s *SubService) genHysteriaLink(inbound *model.Inbound, email string) strin
|
||||||
if fpValue, ok := searchKey(tlsSettings, "fingerprint"); ok {
|
if fpValue, ok := searchKey(tlsSettings, "fingerprint"); ok {
|
||||||
params["fp"], _ = fpValue.(string)
|
params["fp"], _ = fpValue.(string)
|
||||||
}
|
}
|
||||||
if insecure, ok := searchKey(tlsSettings, "allowInsecure"); ok {
|
if echValue, ok := searchKey(tlsSettings, "echConfigList"); ok {
|
||||||
if insecure.(bool) {
|
if ech, _ := echValue.(string); ech != "" {
|
||||||
params["insecure"] = "1"
|
params["ech"] = ech
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if pins, ok := pinnedSha256List(tlsSettings); ok {
|
if pins, ok := pinnedSha256List(tlsSettings); ok {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue