mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-17 07:37:15 +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-хост",
|
||||
@@ -1496,63 +1498,63 @@
|
||||
"subExpiredTemplateDesc": "Шаблон для фіктивного вузла, коли термін дії підписки закінчився.",
|
||||
"subTrafficDepletedTemplate": "Шаблон вичерпання трафіку",
|
||||
"subTrafficDepletedTemplateDesc": "Шаблон для фіктивного вузла, коли ліміт трафіку вичерпано.",
|
||||
"subHappAutoDetect": "Happ Header Auto-Detection",
|
||||
"subHappAutoDetectDesc": "Automatically inject Happ routing and headers when client User-Agent indicates Happ.",
|
||||
"subHappProviderId": "Provider ID",
|
||||
"subHappProviderIdDesc": "Unique provider identifier for Happ client management, remote configuration binding, and migration.",
|
||||
"subHappNewUrl": "New Subscription URL",
|
||||
"subHappNewUrlDesc": "Target URL for automatic client migration. When set, Happ clients will migrate to this subscription link.",
|
||||
"subHappFallbackUrl": "Fallback Subscription URL",
|
||||
"subHappFallbackUrlDesc": "Backup subscription address used by Happ if the primary subscription URL becomes unreachable.",
|
||||
"subHappSubInfoText": "Banner Announcement Text",
|
||||
"subHappSubInfoTextDesc": "Custom announcement banner displayed at the top of the Happ client (max 200 characters).",
|
||||
"subHappSubInfoColor": "Banner Accent Color",
|
||||
"subHappSubInfoColorDesc": "Color theme style for the announcement banner.",
|
||||
"subHappSubInfoButtonText": "Banner Button Text",
|
||||
"subHappSubInfoButtonTextDesc": "Button label displayed inside the announcement banner (max 25 characters).",
|
||||
"subHappSubInfoButtonLink": "Banner Button Link",
|
||||
"subHappSubInfoButtonLinkDesc": "Target URL opened when the user clicks the banner action button.",
|
||||
"subHappSubExpire": "Expired Subscription Banner",
|
||||
"subHappSubExpireDesc": "Show an expired subscription banner in Happ when the user's traffic or validity has ended.",
|
||||
"subHappSubExpireButtonLink": "Renewal Link",
|
||||
"subHappSubExpireButtonLinkDesc": "Target URL opened when the user clicks the renewal button on an expired subscription.",
|
||||
"subHappNotificationExpire": "Expiration Notifications",
|
||||
"subHappNotificationExpireDesc": "Instruct Happ to alert the user in advance before their subscription expires.",
|
||||
"subHappNoLimit": "Bypass Rule Limit",
|
||||
"subHappNoLimitDesc": "Allow routing rule count to exceed default mobile platform limits without truncation.",
|
||||
"subHappAlwaysHwid": "Enforce Hardware ID (HWID)",
|
||||
"subHappAlwaysHwidDesc": "Bind subscription sessions to client device hardware identifier for enhanced security.",
|
||||
"subHappTunMode": "TUN Mode",
|
||||
"subHappTunModeDesc": "TUN virtual network interface routing mode: default, system, or strict.",
|
||||
"subHappTunType": "TUN Engine",
|
||||
"subHappTunTypeDesc": "Underlying network stack implementation for TUN: system, gVisor, or mixed.",
|
||||
"subHappExcludeRoutes": "Exclude CIDR Routes",
|
||||
"subHappExcludeRoutesDesc": "Comma-separated IP CIDRs (e.g. 192.168.0.0/16, 10.0.0.0/8) to bypass the VPN tunnel.",
|
||||
"subHappExcludeApns": "Exclude Apple APNs",
|
||||
"subHappExcludeApnsDesc": "Bypass Apple Push Notification services to maintain reliable background notifications on iOS.",
|
||||
"subHappColorProfile": "Client Color Theme",
|
||||
"subHappColorProfileDesc": "Client color theme profile: default, violet, turquoise, cyberpunk, or custom JSON theme.",
|
||||
"subHappPingType": "Latency Ping Method",
|
||||
"subHappPingTypeDesc": "Measurement protocol used by Happ for node latency testing: icmp, tcp, or http.",
|
||||
"subHappAutoConnect": "Auto-Connect on Launch",
|
||||
"subHappAutoConnectDesc": "Instruct Happ to automatically connect to VPN when the application starts.",
|
||||
"subHappAutoConnectType": "Auto-Connect Target",
|
||||
"subHappAutoConnectTypeDesc": "Connection target strategy for auto-connect: fastest node or last used node.",
|
||||
"subHappPerAppMode": "Android Per-App Proxy Mode",
|
||||
"subHappPerAppModeDesc": "Control Android application routing: off, include (proxy only listed apps), or exclude (bypass listed apps).",
|
||||
"subHappPerAppList": "Android Package Names",
|
||||
"subHappPerAppListDesc": "Comma-separated package names of Android applications to include or exclude (e.g. com.telegram.messenger).",
|
||||
"subHappPresetIran": "Iran Bypass",
|
||||
"subHappPresetChina": "China Direct",
|
||||
"subHappAutoDetect": "Автовизначення заголовків Happ",
|
||||
"subHappAutoDetectDesc": "Автоматично додавати маршрутизацію та заголовки Happ, коли User-Agent клієнта вказує на Happ.",
|
||||
"subHappProviderId": "Ідентифікатор провайдера (Provider ID)",
|
||||
"subHappProviderIdDesc": "Унікальний ідентифікатор провайдера для керування клієнтами Happ, прив'язки віддаленої конфігурації та міграції.",
|
||||
"subHappNewUrl": "Новий URL підписки",
|
||||
"subHappNewUrlDesc": "Цільовий URL для автоматичної міграції клієнтів. Якщо задано, клієнти Happ перейдуть на це посилання підписки.",
|
||||
"subHappFallbackUrl": "Резервний URL підписки",
|
||||
"subHappFallbackUrlDesc": "Резервна адреса підписки, яку Happ використовує, якщо основний URL підписки стане недоступним.",
|
||||
"subHappSubInfoText": "Текст оголошення в банері",
|
||||
"subHappSubInfoTextDesc": "Власний банер з оголошенням угорі клієнта Happ (макс. 200 символів).",
|
||||
"subHappSubInfoColor": "Акцентний колір банера",
|
||||
"subHappSubInfoColorDesc": "Колірне оформлення банера з оголошенням.",
|
||||
"subHappSubInfoButtonText": "Текст кнопки банера",
|
||||
"subHappSubInfoButtonTextDesc": "Напис на кнопці всередині банера з оголошенням (макс. 25 символів).",
|
||||
"subHappSubInfoButtonLink": "Посилання кнопки банера",
|
||||
"subHappSubInfoButtonLinkDesc": "Цільовий URL, який відкривається, коли користувач натискає кнопку дії банера.",
|
||||
"subHappSubExpire": "Банер про закінчення підписки",
|
||||
"subHappSubExpireDesc": "Показувати в Happ банер про закінчення підписки, коли в користувача закінчився трафік або термін дії.",
|
||||
"subHappSubExpireButtonLink": "Посилання для продовження",
|
||||
"subHappSubExpireButtonLinkDesc": "Цільовий URL, який відкривається, коли користувач натискає кнопку продовження простроченої підписки.",
|
||||
"subHappNotificationExpire": "Сповіщення про закінчення терміну",
|
||||
"subHappNotificationExpireDesc": "Доручити Happ нагадати користувачеві за 3 дні до закінчення підписки.",
|
||||
"subHappNoLimit": "Режим без обмежень",
|
||||
"subHappNoLimitDesc": "Підвищити ліміт оперативної пам'яті xray-core у Happ для кращої стабільності та продуктивності (бета).",
|
||||
"subHappAlwaysHwid": "Примусовий апаратний ідентифікатор (HWID)",
|
||||
"subHappAlwaysHwidDesc": "Не дозволяти користувачам вимикати надсилання HWID у налаштуваннях Happ.",
|
||||
"subHappTunMode": "Режим TUN",
|
||||
"subHappTunModeDesc": "Мережевий стек TUN на комп'ютерах: системний (стек ОС) або gVisor (стек у просторі користувача).",
|
||||
"subHappTunType": "Рушій TUN",
|
||||
"subHappTunTypeDesc": "Ядро для TUN-з'єднання на комп'ютерах: sing-box, tun2proxy, за замовчуванням (Happ TUN) або Xray.",
|
||||
"subHappExcludeRoutes": "Виключити маршрути CIDR",
|
||||
"subHappExcludeRoutesDesc": "IP CIDR через кому (напр. 192.168.0.0/16, 10.0.0.0/8), трафік до яких обходить VPN-тунель.",
|
||||
"subHappExcludeApns": "Виключити Apple APNs",
|
||||
"subHappExcludeApnsDesc": "Пропускати служби Apple Push Notification в обхід VPN для надійних фонових сповіщень на iOS.",
|
||||
"subHappColorProfile": "Колірна тема клієнта",
|
||||
"subHappColorProfileDesc": "Власна колірна тема iOS у вигляді рядка JSON або resetcolors для відновлення стандартних кольорів.",
|
||||
"subHappPingType": "Метод вимірювання затримки",
|
||||
"subHappPingTypeDesc": "Як Happ вимірює затримку вузлів: через проксі (GET або HEAD), TCP або ICMP.",
|
||||
"subHappAutoConnect": "Автопідключення під час запуску",
|
||||
"subHappAutoConnectDesc": "Доручити Happ автоматично підключатися до VPN під час запуску програми.",
|
||||
"subHappAutoConnectType": "Ціль автопідключення",
|
||||
"subHappAutoConnectTypeDesc": "Сервер для автопідключення: з найменшою затримкою, останній використаний або випадковий вузол.",
|
||||
"subHappPerAppMode": "Режим проксі для окремих програм Android",
|
||||
"subHappPerAppModeDesc": "Керування маршрутизацією програм Android: вимкнено, увімкнено (проксі лише для вказаних програм) або обхід (виключити вказані програми).",
|
||||
"subHappPerAppList": "Назви пакетів Android",
|
||||
"subHappPerAppListDesc": "Назви пакетів програм Android через кому для включення або виключення (напр. org.telegram.messenger).",
|
||||
"subHappPresetIran": "Обхід для Ірану",
|
||||
"subHappPresetChina": "Китай напряму",
|
||||
"subHappPresetAdblock": "AdBlock",
|
||||
"subHappPresetGlobal": "Full Proxy",
|
||||
"subHappPresetGlobal": "Усе через проксі",
|
||||
"subHappPresetOff": "Вимкнути маршрутизацію (happ://routing/off)",
|
||||
"subHappColorBlue": "Синій (стандартний / за замовчуванням)",
|
||||
"subHappColorGreen": "Зелений (успіх)",
|
||||
"subHappColorRed": "Червоний (попередження / небезпека)",
|
||||
"subHappTunModeDefault": "За замовчуванням",
|
||||
"subHappTunModeSystem": "Системний (стандартний стек ОС)",
|
||||
"subHappTunModeGvisor": "gVisor (користувацький стек)",
|
||||
"subHappTunModeGvisor": "gVisor (стек у просторі користувача)",
|
||||
"subHappTunTypeSingbox": "sing-box",
|
||||
"subHappTunTypeTun2proxy": "tun2proxy",
|
||||
"subHappTunTypeDefault": "За замовчуванням (Happ TUN)",
|
||||
@@ -1565,29 +1567,29 @@
|
||||
"subHappAutoConnectLastUsed": "Останній використаний вузол",
|
||||
"subHappAutoConnectRandom": "Випадковий вузол",
|
||||
"subHappPerAppOff": "Вимк",
|
||||
"subHappPerAppOn": "Увімк (тільки обрані програми)",
|
||||
"subHappPerAppBypass": "Обхід (виключити обрані програми)",
|
||||
"subHappPresetApplied": "Happ preset applied to routing rules",
|
||||
"subHappPresets": "Routing Presets",
|
||||
"subHappPresetsDesc": "Pre-configured routing rule presets tailored for Happ clients.",
|
||||
"subHappVisualBuilder": "Visual Rule Generator",
|
||||
"subHappVisualBuilderDesc": "Create custom routing deeplink from domain and IP lists.",
|
||||
"subHappBuildDeeplink": "Generate Deeplink",
|
||||
"subHappModalTitle": "Happ Visual Routing Rule Generator",
|
||||
"subHappDirectDomains": "Direct Domains (Bypass)",
|
||||
"subHappProxyDomains": "Proxy Domains (Tunnel)",
|
||||
"subHappBlockDomains": "Blocked Domains (Ad/Malware)",
|
||||
"subHappDirectIPs": "Direct IPs / CIDRs",
|
||||
"subHappProxyIPs": "Proxy IPs / CIDRs",
|
||||
"subHappBlockIPs": "Blocked IPs / CIDRs",
|
||||
"subHappDeeplinkGenerated": "Deeplink generated and applied to routing rules",
|
||||
"subHappPerAppOn": "Увімк (проксі лише для вказаних програм)",
|
||||
"subHappPerAppBypass": "Обхід (виключити вказані програми)",
|
||||
"subHappPresetApplied": "Шаблон Happ застосовано до правил маршрутизації",
|
||||
"subHappPresets": "Шаблони маршрутизації",
|
||||
"subHappPresetsDesc": "Готові шаблони правил маршрутизації, адаптовані для клієнтів Happ.",
|
||||
"subHappVisualBuilder": "Візуальний генератор правил",
|
||||
"subHappVisualBuilderDesc": "Створіть власний діплінк маршрутизації зі списків доменів та IP.",
|
||||
"subHappBuildDeeplink": "Згенерувати діплінк",
|
||||
"subHappModalTitle": "Візуальний генератор правил маршрутизації Happ",
|
||||
"subHappDirectDomains": "Домени напряму (обхід)",
|
||||
"subHappProxyDomains": "Домени через проксі (тунель)",
|
||||
"subHappBlockDomains": "Заблоковані домени (реклама/шкідливе ПЗ)",
|
||||
"subHappDirectIPs": "IP / CIDR напряму",
|
||||
"subHappProxyIPs": "IP / CIDR через проксі",
|
||||
"subHappBlockIPs": "Заблоковані IP / CIDR",
|
||||
"subHappDeeplinkGenerated": "Діплінк згенеровано та застосовано до правил маршрутизації",
|
||||
"subHappGroupLinks": "Посилання на підписку",
|
||||
"subHappGroupRouting": "Routing & Rules",
|
||||
"subHappGroupBanners": "Banners & Announcements",
|
||||
"subHappGroupNetwork": "Network & TUN Engine",
|
||||
"subHappGroupThemes": "Appearance & Theme",
|
||||
"subHappGroupFailover": "Migration & App Management",
|
||||
"subHappGroupAndroid": "Android Per-App Proxy",
|
||||
"subHappGroupRouting": "Маршрутизація та правила",
|
||||
"subHappGroupBanners": "Банери та оголошення",
|
||||
"subHappGroupNetwork": "Мережа та рушій TUN",
|
||||
"subHappGroupThemes": "Зовнішній вигляд і тема",
|
||||
"subHappGroupFailover": "Міграція та керування програмою",
|
||||
"subHappGroupAndroid": "Проксі для окремих програм Android",
|
||||
"discordSettings": "Discord бот",
|
||||
"discordBotEnable": "Увімкнути сповіщення Discord",
|
||||
"discordBotEnableDesc": "Надсилати системні сповіщення та події в канал Discord через бота",
|
||||
|
||||
Reference in New Issue
Block a user