mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-05 20:54:14 +00:00
Fix REALITY share links missing SNI
This commit is contained in:
parent
c5dc84d314
commit
de2eb9236e
1 changed files with 16 additions and 7 deletions
|
|
@ -358,13 +358,14 @@ export function genVlessLink(input: GenVlessLinkInput): string {
|
||||||
const reality = stream.realitySettings;
|
const reality = stream.realitySettings;
|
||||||
params.set('pbk', reality.settings.publicKey);
|
params.set('pbk', reality.settings.publicKey);
|
||||||
params.set('fp', reality.settings.fingerprint);
|
params.set('fp', reality.settings.fingerprint);
|
||||||
// Legacy parity quirk: the old class stored realitySettings.serverNames
|
|
||||||
// as a comma-joined string and gated SNI on `!ObjectUtil.isArrEmpty(s)`
|
const sni =
|
||||||
// — which returns true for any string, so SNI was never written into
|
reality.settings.serverName ||
|
||||||
// Reality share links. Existing deployed clients rely on receiving
|
reality.serverNames?.[0] ||
|
||||||
// the SNI from realitySettings.target instead; we keep the omission
|
reality.target?.split(':')[0];
|
||||||
// here so this extraction stays byte-stable with the legacy URL.
|
|
||||||
// Fixing the bug is a separate intentional commit.
|
if (sni && sni.length > 0) params.set('sni', sni);
|
||||||
|
|
||||||
if (reality.shortIds.length > 0) params.set('sid', reality.shortIds[0]);
|
if (reality.shortIds.length > 0) params.set('sid', reality.shortIds[0]);
|
||||||
if (reality.settings.spiderX.length > 0) params.set('spx', reality.settings.spiderX);
|
if (reality.settings.spiderX.length > 0) params.set('spx', reality.settings.spiderX);
|
||||||
if (reality.settings.mldsa65Verify.length > 0) params.set('pqv', reality.settings.mldsa65Verify);
|
if (reality.settings.mldsa65Verify.length > 0) params.set('pqv', reality.settings.mldsa65Verify);
|
||||||
|
|
@ -436,6 +437,14 @@ function writeRealityParams(stream: NonNullable<Inbound['streamSettings']>, para
|
||||||
const reality = stream.realitySettings;
|
const reality = stream.realitySettings;
|
||||||
params.set('pbk', reality.settings.publicKey);
|
params.set('pbk', reality.settings.publicKey);
|
||||||
params.set('fp', reality.settings.fingerprint);
|
params.set('fp', reality.settings.fingerprint);
|
||||||
|
|
||||||
|
const sni =
|
||||||
|
reality.settings.serverName ||
|
||||||
|
reality.serverNames?.[0] ||
|
||||||
|
reality.target?.split(':')[0];
|
||||||
|
|
||||||
|
if (sni && sni.length > 0) params.set('sni', sni);
|
||||||
|
|
||||||
if (reality.shortIds.length > 0) params.set('sid', reality.shortIds[0]);
|
if (reality.shortIds.length > 0) params.set('sid', reality.shortIds[0]);
|
||||||
if (reality.settings.spiderX.length > 0) params.set('spx', reality.settings.spiderX);
|
if (reality.settings.spiderX.length > 0) params.set('spx', reality.settings.spiderX);
|
||||||
if (reality.settings.mldsa65Verify.length > 0) params.set('pqv', reality.settings.mldsa65Verify);
|
if (reality.settings.mldsa65Verify.length > 0) params.set('pqv', reality.settings.mldsa65Verify);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue