fix(xray): keep XDRIVE storage and Vision flow within what xray-core runs

xray-core opens an XDRIVE stream's storage only when the inbound starts
listening, so a Google Drive inbound saved with the form's defaults (no
folder, no secrets), a local one without a folder, or a template one
whose template xray cannot use stopped xray and every other inbound with
it. validateXDriveStorage applies the core's storage rules at save, on
inbound add/update and on the xray template's inbounds and outbounds:
the service must be local, Google Drive or template; local and Google
Drive need a remoteFolder; Google Drive needs its three non-empty
secrets; a template must pass newTemplateStorage's checks (put, get,
list and delete urls, and a list namesRegex with one capture group).

A VLESS client kept its xtls-rprx-vision flow when its inbound moved to
a transport that cannot carry it, and GetXrayConfig only honoured
DisableFlow, so the server demanded Vision there and refused every
client. GetXrayConfig and the outbound form now apply the Vision gate,
and that gate now follows the core in the backend, the subscription
service and the frontend: TLS/REALITY on raw TCP, or VLESS encryption on
any transport (xray runs Vision inside encryption.CommonConn whatever
the transport, not only on XHTTP). The outbound modal passes the VLESS
encryption into the gate and gates Mux on the effective flow.
This commit is contained in:
MHSanaei
2026-10-12 00:49:11 +02:00
parent 8fe7be943f
commit c5e1e54c75
22 changed files with 439 additions and 72 deletions
+2 -2
View File
@@ -204,7 +204,7 @@ The `xtls-rprx-vision` flow is fast and DPI-resistant. It's available for
- the transport is raw **TCP** with **TLS** or **REALITY** security (classic
XTLS-Vision), or
- the transport is **XHTTP** with VLESS encryption enabled (see below).
- VLESS encryption is enabled, on any transport (see below).
Set the flow on the VLESS **client**, not the inbound. With classic Vision on
TCP, the panel can also offer a **Vision seed** once a client uses the flow.
@@ -213,7 +213,7 @@ TCP, the panel can also offer a **Vision seed** once a client uses the flow.
VLESS supports post-quantum **encryption** (ML-KEM / `mlkem768x25519`), stored in
the inbound's `decryption` (server) and clients' `encryption` (for link
generation). When enabled, it unlocks the Vision flow over XHTTP. Generate the
generation). When enabled, it unlocks the Vision flow on any transport. Generate the
keys from the panel's VLESS settings.
## Shadowsocks ciphers
+2 -2
View File
@@ -205,7 +205,7 @@ mKCP و Hysteria لایه TLS/REALITY جداگانه‌ای نمی‌گیرند
- انتقال، **TCP** خام با امنیت **TLS** یا **REALITY** باشد (XTLS-Vision
کلاسیک)، یا
- انتقال، **XHTTP** با رمزنگاری VLESS فعال باشد (به ادامه مراجعه کنید).
- رمزنگاری VLESS فعال باشد، روی هر انتقالی (به ادامه مراجعه کنید).
جریان را روی **کلاینت** VLESS تنظیم کنید، نه روی inbound. با Vision کلاسیک روی
TCP، پنل می‌تواند پس از آنکه یک کلاینت از جریان استفاده کرد، یک **Vision seed** نیز
@@ -215,7 +215,7 @@ TCP، پنل می‌تواند پس از آنکه یک کلاینت از جری
‏VLESS از **رمزنگاری** پساکوانتومی (ML-KEM / `mlkem768x25519`) پشتیبانی می‌کند که در
‏`decryption` مربوط به inbound (سمت سرور) و `encryption` کلاینت‌ها (برای تولید
لینک) ذخیره می‌شود. وقتی فعال باشد، جریان Vision را روی XHTTP باز می‌کند. کلیدها
لینک) ذخیره می‌شود. وقتی فعال باشد، جریان Vision را روی هر انتقالی باز می‌کند. کلیدها
را از تنظیمات VLESS در پنل تولید کنید.
## رمزهای Shadowsocks
+2 -2
View File
@@ -207,7 +207,7 @@ mKCP и Hysteria не используют отдельный уровень TLS
- транспорт — это «сырой» **TCP** с безопасностью **TLS** или **REALITY**
(классический XTLS-Vision), либо
- транспорт — это **XHTTP** с включённым шифрованием VLESS (см. ниже).
- включено шифрование VLESS, на любом транспорте (см. ниже).
Поток задаётся на **клиенте** VLESS, а не на inbound. При классическом Vision
поверх TCP панель также может предложить **Vision seed** после того, как клиент
@@ -218,7 +218,7 @@ mKCP и Hysteria не используют отдельный уровень TLS
VLESS поддерживает постквантовое **шифрование** (ML-KEM / `mlkem768x25519`),
которое хранится в поле `decryption` у inbound (сервер) и в поле `encryption` у
клиентов (для генерации ссылок). Когда оно включено, становится доступен поток
Vision поверх XHTTP. Сгенерируйте ключи в настройках VLESS на панели.
Vision на любом транспорте. Сгенерируйте ключи в настройках VLESS на панели.
## Шифры Shadowsocks
+2 -2
View File
@@ -185,7 +185,7 @@ mKCP 和 Hysteria 不使用单独的 TLS/REALITY 层——mKCP 以明文运行
`xtls-rprx-vision` 流控既快速又能抵抗 DPI。在以下任一情况下,它都可用于 **VLESS**:
- 传输方式为裸 **TCP**,安全层为 **TLS** 或 **REALITY**(经典的 XTLS-Vision),或者
- 传输方式为 **XHTTP** 且启用了 VLESS 加密(见下文)。
- 启用了 VLESS 加密,任意传输方式均可(见下文)。
请在 VLESS **客户端**上设置流控,而不是在入站上。在 TCP 上使用经典 Vision 时,一旦某个
客户端使用该流控,面板还可以提供一个 **Vision seed**。
@@ -193,7 +193,7 @@ mKCP 和 Hysteria 不使用单独的 TLS/REALITY 层——mKCP 以明文运行
## VLESS 加密(ML-KEM)
VLESS 支持后量子**加密**(ML-KEM / `mlkem768x25519`),它存储在入站的 `decryption`
(服务器)以及客户端的 `encryption`(用于生成链接)中。启用后,它会解锁在 XHTTP
(服务器)以及客户端的 `encryption`(用于生成链接)中。启用后,它会解锁任意传输方式
之上的 Vision 流控。请从面板的 VLESS 设置中生成密钥。
## Shadowsocks 加密方式