mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-24 08:12:19 +07:00
feat(tls,reality): port xray TLS/REALITY fields, cert-hash helpers, fallback UX
TLS: add verifyPeerCertByName (vcn) to inbound settings + emit in both share-link generators (frontend + Go sub) and outbound parser; the allowInsecure replacement xray removed after 2026-06-01. Add server-side curvePreferences, masterKeyLog, echSockopt (passthrough + form) at tlsSettings top-level so they survive the panel-only settings strip. REALITY: add limitFallbackUpload/Download (afterBytes/bytesPerSec/burstBytesPerSec) with per-field tooltips, plus masterKeyLog. Verified field names/semantics against pinned xray v1.260327.1 (bytesPerSec=0 disables). Hosts: fix verify_peer_cert_by_name column bool->string (xray expects comma-separated names) with an idempotent, history-gate-free migration (SQLite typeof blank; Postgres ALTER once); emit vcn for hosts/external proxies. Server: add getCertHash (local cert DER SHA-256) and getRemoteCertHash (xray tls ping) endpoints + api-docs; wire pinned-cert field buttons. Drop the meaningless random-hash button. Xray UI: metrics endpoint (listen/tag) config in Basics; import/export for routing rules and outbounds. Fallbacks card: compact empty state, header-aligned actions, responsive labeled grid rows. i18n: add all new keys to every locale; drop unused generateRandomPin.
This commit is contained in:
@@ -591,7 +591,6 @@
|
||||
"pinnedPeerCertSha256": "Закріплений SHA-256 сертифіката пира",
|
||||
"pinnedPeerCertSha256Tip": "SHA-256-хеші сертифіката пира у вигляді шістнадцяткового рядка (напр. e8e2d3…), через кому. Лише панель — не записується в конфіг xray сервера, але додається до посилань спільного доступу, щоб клієнти могли закріпити сертифікат.",
|
||||
"pinnedPeerCertSha256Placeholder": "шістнадцятковий хеш(і), через кому",
|
||||
"generateRandomPin": "Згенерувати випадковий хеш",
|
||||
"getNewEchCert": "Отримати новий ECH-сертифікат",
|
||||
"show": "Показати",
|
||||
"xver": "Xver",
|
||||
@@ -616,6 +615,27 @@
|
||||
"shareAddrHelp": "Використовується лише коли стратегія адреси поширення — користувацька. Введіть хост або IP без схеми та порту.",
|
||||
"subSortIndex": "Порядок у підписці",
|
||||
"subSortIndexHelp": "Позиція посилань цього вхідного у виводі підписки (сторінка підписки та клієнтські застосунки). Менші значення йдуть першими; за однакових значень зберігається порядок створення. Не впливає на список вхідних у панелі.",
|
||||
"echSockopt": "ECH Sockopt",
|
||||
"echSockoptTip": "Параметри сокета для з'єднання, яке Xray використовує для отримання списку конфігурацій ECH (наприклад, спрямувати запит через вихідний dialerProxy). Залиште вимкненим, щоб використовувати типові значення.",
|
||||
"curvePreferences": "Налаштування кривих",
|
||||
"curvePreferencesTip": "Обмежує криві обміну ключами TLS, які пропонує сервер, у порядку переваги (наприклад, X25519MLKEM768, X25519). Залиште порожнім, щоб використовувати типові значення Xray-core.",
|
||||
"masterKeyLog": "Журнал майстер-ключів",
|
||||
"masterKeyLogTip": "Шлях для запису майстер-ключів TLS (формат SSLKEYLOGFILE) для налагодження за допомогою Wireshark. Залиште порожнім у продакшені — це дозволяє будь-кому з доступом до файлу розшифрувати трафік.",
|
||||
"verifyPeerCertByName": "Перевіряти сертифікат пира за іменем",
|
||||
"verifyPeerCertByNameTip": "Вказує клієнтам перевіряти сертифікат сервера за цим іменем замість SNI. Імена через кому. Лише для панелі — включається до посилань спільного доступу (vcn). Сучасна заміна allowInsecure, який Xray видалив після 2026-06-01.",
|
||||
"pinFromCert": "Заповнити з сертифіката цього вхідного",
|
||||
"pinFromRemote": "Отримати хеш пінгуванням SNI (xray tls ping)",
|
||||
"pinFromRemoteNoSni": "Спочатку вкажіть SNI (serverName), щоб пінгувати віддалений сертифікат.",
|
||||
"pinFromRemoteFailed": "Не вдалося отримати хеш віддаленого сертифіката.",
|
||||
"limitFallback": "Обмеження fallback",
|
||||
"limitFallbackUpload": "Обмеження вивантаження fallback",
|
||||
"limitFallbackDownload": "Обмеження завантаження fallback",
|
||||
"afterBytes": "Після байтів",
|
||||
"afterBytesTip": "Дозволяє fallback працювати на повній швидкості протягом цієї кількості байтів, а потім починає обмежувати. 0 = обмежувати з першого байта.",
|
||||
"bytesPerSec": "Байтів за секунду",
|
||||
"bytesPerSecTip": "Обмеження швидкості (байтів/сек) для трафіку fallback після перевищення порогу, щоб зонди не могли використовувати ваш сервер як безкоштовний канал до цілі. 0 = без обмеження (вимикає цей напрямок).",
|
||||
"burstBytesPerSec": "Пікових байтів за секунду",
|
||||
"burstBytesPerSecTip": "Допуск для коротких сплесків понад сталу швидкість (розмір token-bucket). Якщо менше за «Байтів за секунду», піднімається до цього значення.",
|
||||
"shareAddrStrategyOptions": {
|
||||
"node": "Адреса вузла",
|
||||
"listen": "Адреса прослуховування inbound",
|
||||
@@ -1361,6 +1381,14 @@
|
||||
"OutboundsDesc": "Встановити шлях вихідного трафіку.",
|
||||
"Routings": "Правила маршрутизації",
|
||||
"RoutingsDesc": "Пріоритет кожного правила важливий!",
|
||||
"importRules": "Імпортувати правила",
|
||||
"exportRules": "Експортувати правила",
|
||||
"importOutbounds": "Імпортувати вихідні",
|
||||
"exportOutbounds": "Експортувати вихідні",
|
||||
"importInvalidJson": "Недійсний JSON — очікувався масив або об'єкт із відповідним ключем.",
|
||||
"metricsListen": "Точка доступу метрик",
|
||||
"metricsListenDesc": "Надає метрики Xray у стилі Prometheus за цією адресою:порт (наприклад, 127.0.0.1:11111). Залиште порожнім, щоб вимкнути. Прив'яжіть до localhost і використовуйте зворотний проксі — доступ без автентифікації.",
|
||||
"metricsTag": "Тег метрик",
|
||||
"completeTemplate": "Усі",
|
||||
"logLevel": "Рівень журналу",
|
||||
"logLevelDesc": "Рівень журналу для журналів помилок із зазначенням інформації, яку потрібно записати.",
|
||||
|
||||
Reference in New Issue
Block a user