mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-16 15:17:14 +00:00
feat(settings): add setting for Reality scan candidates (#6471)
* feat(settings): allow customizing Reality scan candidate list Persist a realityScanCandidates panel setting (defaulting to the previous hardcoded list), expose it in General Settings with i18n, and have the Find Targets scanner use it when the search box is empty. Fixes #5847 * style(frontend): oxfmt realityScanCandidates in setting.ts * Fix locale JSON syntax This change removes the malformed duplicate key and missing comma in the Android per-app proxy translations across the bundled locale files. The JSON now parses correctly while preserving the translated labels for each language. * docs(i18n): update Happ translations Localize the remaining Happ subscription settings strings across the translation files and refine the English copy. This aligns the labels and descriptions with the current Happ behavior for notifications, TUN options, HWID enforcement, routing presets, and per-app proxy settings. * refactor(reality): drop test-only scaffolding from the candidate setting TestDefaultRealityScanCandidatesCSV compared the CSV against its own initializer and a defaultValueMap lookup, and TestRealityScanCandidateTokensFallsBackWithoutDB drove a no-database state no production caller reaches (the only caller is the scanRealityTargets handler, served after InitDB). The s != nil && GetDB() != nil guard existed only for that second test. None of them could fail except in lockstep with the code they restate. * docs(api): describe the setting-driven scanRealityTargets fallback An empty targets value now probes the realityScanCandidates setting, but the endpoint summary, parameter description and handler comment still promised the built-in seed list, so API consumers were told the wrong target set. Regenerated openapi.json and synced the docs copy, which also lacked the new AllSetting field in the settings reference. --------- Co-authored-by: mrchatam <287639636+mrchatam@users.noreply.github.com> Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
This commit is contained in:
@@ -1253,6 +1253,8 @@
|
||||
"noisesSett": "Настройки Noises",
|
||||
"trustedProxyCidrs": "Доверенные CIDR прокси",
|
||||
"trustedProxyCidrsDesc": "IP/CIDR через запятую, которым разрешено устанавливать заголовки forwarded host, proto и client IP.",
|
||||
"realityScanCandidates": "Кандидаты сканирования Reality",
|
||||
"realityScanCandidatesDesc": "Список host:port (или CIDR) через запятую — используется по умолчанию в «Найти цели», если поиск пуст. Настройте под часто используемые цели.",
|
||||
"ldap": {
|
||||
"enable": "Включить LDAP-синхронизацию",
|
||||
"host": "LDAP-хост",
|
||||
@@ -1513,35 +1515,35 @@
|
||||
"subHappSubInfoButtonLink": "Ссылка кнопки баннера",
|
||||
"subHappSubInfoButtonLinkDesc": "URL-адрес, открывающийся при нажатии на кнопку баннера.",
|
||||
"subHappSubExpire": "Баннер об окончании подписки",
|
||||
"subHappSubExpireDesc": "Отображать баннер о скором окончании или истечении срока действия подписки.",
|
||||
"subHappSubExpireDesc": "Показывать в Happ баннер об истёкшей подписке, когда у пользователя закончился трафик или срок действия.",
|
||||
"subHappSubExpireButtonLink": "Ссылка для продления подписки",
|
||||
"subHappSubExpireButtonLinkDesc": "URL для кнопки «Продлить» при истечении срока подписки.",
|
||||
"subHappNotificationExpire": "Уведомление об окончании подписки",
|
||||
"subHappNotificationExpireDesc": "Отправлять напоминания пользователю за 3 дня до окончания подписки.",
|
||||
"subHappNoLimit": "Режим без ограничений (No Limit)",
|
||||
"subHappNoLimitDesc": "Увеличивает лимит оперативной памяти и снимает ограничения на количество правил.",
|
||||
"subHappNoLimit": "Режим No-Limit",
|
||||
"subHappNoLimitDesc": "Повышает лимит оперативной памяти xray-core в Happ для стабильности и производительности (бета).",
|
||||
"subHappAlwaysHwid": "Обязательный HWID",
|
||||
"subHappAlwaysHwidDesc": "Запрещает пользователю отключать передачу идентификатора устройства (HWID).",
|
||||
"subHappAlwaysHwidDesc": "Запрещает пользователю отключать отправку HWID в настройках Happ.",
|
||||
"subHappTunMode": "Режим TUN",
|
||||
"subHappTunModeDesc": "Сетевой стек для TUN: system (системный) или gvisor (пользовательский стек).",
|
||||
"subHappTunType": "Ядро туنнеля (TUN Type)",
|
||||
"subHappTunTypeDesc": "Выбор ядра туннеля: singbox, tun2proxy, default (Happ TUN) или xray.",
|
||||
"subHappTunModeDesc": "Сетевой стек TUN на десктопе: системный (стек ОС) или gVisor (пользовательский стек).",
|
||||
"subHappTunType": "Движок TUN",
|
||||
"subHappTunTypeDesc": "Ядро для TUN-подключения на десктопе: sing-box, tun2proxy, по умолчанию (Happ TUN) или Xray.",
|
||||
"subHappExcludeRoutes": "Исключения маршрутов (CIDR)",
|
||||
"subHappExcludeRoutesDesc": "Список подсетей и IP-адресов через запятую, трафик которых идет мимо туннеля.",
|
||||
"subHappExcludeRoutesDesc": "IP-подсети (CIDR) через запятую (например, 192.168.0.0/16, 10.0.0.0/8), трафик которых идёт мимо VPN-туннеля.",
|
||||
"subHappExcludeApns": "Исключить push-уведомления Apple (APNS)",
|
||||
"subHappExcludeApnsDesc": "Трафик уведомлений Apple направляется напрямую для надежной доставки на iOS.",
|
||||
"subHappColorProfile": "Цветовая тема клиента",
|
||||
"subHappColorProfileDesc": "Тема оформления интерфейса Happ: violet, turquoise, cyberpunk или свой JSON.",
|
||||
"subHappColorProfileDesc": "Своя цветовая тема для iOS в виде JSON-строки или resetcolors для сброса к стандартным цветам.",
|
||||
"subHappPingType": "Метод проверки пинга",
|
||||
"subHappPingTypeDesc": "Тип проверки задержки: via Proxy (GET), via Proxy (HEAD), TCP или ICMP.",
|
||||
"subHappPingTypeDesc": "Способ измерения задержки узлов в Happ: через прокси (GET или HEAD), TCP или ICMP.",
|
||||
"subHappAutoConnect": "Автоподключение при запуске",
|
||||
"subHappAutoConnectDesc": "Автоматически подключаться к серверу при запуске приложения.",
|
||||
"subHappAutoConnectType": "Критерий автоподключения",
|
||||
"subHappAutoConnectTypeDesc": "Сервер для автоподключения: lowestdelay (наименьший пинг), lastused (последний) или random.",
|
||||
"subHappAutoConnectTypeDesc": "Сервер для автоподключения: минимальная задержка, последний использованный или случайный узел.",
|
||||
"subHappPerAppMode": "Прокси для приложений (Android)",
|
||||
"subHappPerAppModeDesc": "Режим раздельного туннелирования: off (выкл), on (только выбранные) или bypass (все кроме выбранных).",
|
||||
"subHappPerAppModeDesc": "Маршрутизация приложений Android: выкл, вкл (прокси только для выбранных) или обход (исключить выбранные).",
|
||||
"subHappPerAppList": "Пакеты приложений Android",
|
||||
"subHappPerAppListDesc": "Список идентификаторов пакетов через запятую (например, org.telegram.messenger).",
|
||||
"subHappPerAppListDesc": "Имена пакетов Android-приложений для включения или исключения через запятую (например, org.telegram.messenger).",
|
||||
"subHappPresetIran": "Обход сайтов Ирана (Iran Bypass)",
|
||||
"subHappPresetChina": "Обход сайтов Китая (China Direct)",
|
||||
"subHappPresetAdblock": "Блокировка рекламы (AdBlock)",
|
||||
|
||||
Reference in New Issue
Block a user