fix(sub): bake Host VLESS Route into subscription UUIDs

The Host VLESS Route field was stored and shown in the panel but never applied to any generated subscription (raw, JSON, Clash), so the UUID was emitted unmodified (#5655).

Xray reads the route from the UUID's 3rd group (bytes 6-7, net.PortFromBytes) and masks those bytes to zero before authenticating, so a value can be baked into the share/JSON/Clash UUIDs without breaking the user match. A shared applyVlessRoute helper encodes a single 0-65535 value as the 3rd group; empty/invalid/non-UUID input is left unchanged, so legacy data never yields a broken link and no DB migration is needed.

The field was wrongly validated as a multi-segment port spec (that form belongs to the separate server-side routing rule). It is now a single value 0-65535, with frontend validation, link-preview parity (genVlessLink/hostToExternalProxyEntry), hint + error translations across all 13 locales, and tests on every path.

Closes #5655
This commit is contained in:
MHSanaei
2026-06-29 14:32:23 +02:00
parent 789e92cddc
commit d8221a8153
34 changed files with 304 additions and 52 deletions
+2 -2
View File
@@ -1901,7 +1901,7 @@
"nodeGuids": "このホストから解決されたノードを選択します。視覚的な割り当てのみです。",
"serverDescription": "備考の下に表示される任意のメモ。",
"allowInsecure": "TLS 証明書の検証をスキップします(allowInsecure / skip-cert-verify)。",
"vlessRoute": "VLESS 経由でルーティングするポート/範囲。例: 53,443,1000-2000。なしの場合は空欄にします。",
"vlessRoute": "UUID に埋め込まれる単一の VLESS ルート値(0〜65535)。例: 443。なしの場合は空欄にします。",
"remark": "このホストのプレーンなラベル。インバウンド自身に備考がない場合にのみ設定名として表示されます。"
},
"remarkVars": {
@@ -1951,7 +1951,7 @@
"update": "ホストを更新",
"delete": "ホストを削除",
"badTag": "無効なタグ",
"badVlessRoute": "53,443,1000-2000 のようにポート/範囲を指定してください"
"badVlessRoute": "0〜65535 の単一の数値を入力してください"
}
}
},