mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-10-25 07:15:01 +03:00
feat(tls): add a dynamic DoH helper for echConfigList, with CDN guidance (#6869)
echConfigList already accepted Xray's dynamic form, target domain + DoH URL, but nothing in the inbound or host forms explained or built it. A helper now builds that value from presets or a custom domain and resolver, accepts only the schemes Xray dials (https, h2c, udp; scheme case normalised), warns that a key generated locally does not work behind a CDN, and asks before overwriting local ECH keys. The helper's controls carry accessible labels, and the resolver list holds only identified public resolvers.
This commit is contained in:
@@ -477,6 +477,36 @@
|
||||
"autoFill": "Автозаполнение",
|
||||
"echSockopt": "ECH Sockopt",
|
||||
"echSockoptTip": "Параметры сокета для соединения, через которое Xray получает список конфигураций ECH (например, можно направить запрос через исходящее dialerProxy). Оставьте отключённым для значений по умолчанию.",
|
||||
"echCdnWarningTitle": "Локально созданные ключи ECH работают только при прямом подключении",
|
||||
"echCdnWarningBody": "Пара ключей, созданная кнопкой «Get New ECH Cert», действительна только когда клиенты подключаются напрямую к этому VPS. Если inbound проксируется через Cloudflare CDN (VLESS + xhttp/WS за оранжевым облаком), Cloudflare завершает внешний TLS своими ключами ECH и ротирует их, поэтому локальный ключ всегда проваливает рукопожатие. Вместо него используйте помощник динамического ECH.",
|
||||
"echDynamicTitle": "Динамический ECH через Cloudflare (работает за оранжевым облаком)",
|
||||
"echPresetLabel": "Готовая комбинация",
|
||||
"echPresetOtherDomains": "Другие целевые домены ECH",
|
||||
"echPresetAdvanced": "Своя комбинация…",
|
||||
"echDynamicIntro": "Заполняет список конфигураций ECH динамическим запросом на стороне клиента (целевой домен + DoH-резолвер). Клиент при каждом подключении запрашивает у резолвера HTTPS-запись домена, поэтому всегда видит актуальные ключи ECH — включая ротированные ключи Cloudflare.",
|
||||
"echDynamicDomain": "Целевой домен ECH",
|
||||
"echDynamicDoh": "DoH-резолвер",
|
||||
"echDomainAuto": "Автоматически — разрешить запись ECH для SNI узла",
|
||||
"echDynamicApply": "Применить к списку конфигураций ECH",
|
||||
"echDynamicCustom": "Свой URL…",
|
||||
"echDynamicInvalid": "Введите корректный домен и URL резолвера (https, h2c или udp), чтобы собрать значение.",
|
||||
"echDynamicUnsupportedScheme": "Xray разрешает конфигурацию ECH только через https://, h2c:// или udp://. Этот адрес никогда не ответит.",
|
||||
"echDynamicPlaceholder": "cloudflare-ech.com+https://dns.alidns.com/dns-query",
|
||||
"echDynamicOverwriteTitle": "У этого inbound есть локально созданная пара ключей ECH",
|
||||
"echDynamicOverwriteBody": "За CDN эта пара ключей не используется: TLS-рукопожатие завершает CDN. Применение динамического значения заменит список конфигураций ECH и удалит локальный ключ ECH.",
|
||||
"echDynamicOverwriteConfirm": "Заменить и удалить локальный ключ",
|
||||
"echExistingNotDynamic": "Этот список конфигураций ECH не в динамической форме; при заполнении он заменит то, что вы задали вручную.",
|
||||
"echDohGroup": {
|
||||
"china": "Материковый Китай (доступен из-за GFW)",
|
||||
"global": "Весь мир",
|
||||
"europe": "Европа",
|
||||
"udp": "Обычный DNS (udp://)"
|
||||
},
|
||||
"echRecommended": "рекомендуется",
|
||||
"echMainlandAdvisory": "Резолверам материкового Китая нужен целевой домен, в HTTPS-записи которого есть ECH; проверьте пару перед сохранением.",
|
||||
"echConfigList": "Список конфигураций ECH",
|
||||
"echConfigListHint": "Передаётся клиентам в ссылках для обмена и подписках. Принимает локальный ECHConfigList (из кнопки ниже) или динамическую форму домен+URL DoH.",
|
||||
"echKeyHint": "Только для прямых подключений — оставьте пустым, если inbound находится за CDN.",
|
||||
"curvePreferences": "Предпочтения кривых",
|
||||
"curvePreferencesTip": "Ограничьте кривые обмена ключами TLS, которые предлагает сервер, в порядке предпочтения (например, X25519MLKEM768, X25519). Оставьте пустым для значений по умолчанию Xray-core.",
|
||||
"masterKeyLog": "Лог мастер-ключей",
|
||||
@@ -634,7 +664,6 @@
|
||||
"usageOption": "Опция использования",
|
||||
"buildChain": "Build Chain",
|
||||
"echKey": "ECH key",
|
||||
"echConfig": "ECH config",
|
||||
"pinnedPeerCertSha256": "SHA-256 сертификата пира",
|
||||
"pinnedPeerCertSha256Tip": "SHA-256-хеши сертификата пира в виде шестнадцатеричной строки (напр. e8e2d3…), через запятую. Только для панели — не записывается в конфиг xray сервера, но включается в ссылки-приглашения, чтобы клиенты могли закрепить сертификат.",
|
||||
"pinnedPeerCertSha256Placeholder": "шестнадцатеричный хеш(и), через запятую",
|
||||
@@ -2361,7 +2390,6 @@
|
||||
"pins": "Закреплённый SHA-256 сертификата",
|
||||
"verifyPeerCertByName": "Проверять сертификат пира по имени",
|
||||
"allowInsecure": "Разрешить небезопасное",
|
||||
"echConfigList": "Список конфигураций ECH",
|
||||
"muxParams": "Mux",
|
||||
"sockoptParams": "Sockopt",
|
||||
"finalMask": "Final Mask",
|
||||
|
||||
Reference in New Issue
Block a user