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:
mrchatam
2026-09-13 16:18:28 +03:30
committed by GitHub
parent bf7ce2daaa
commit 768bbd2a29
29 changed files with 857 additions and 735 deletions
+84 -82
View File
@@ -1253,6 +1253,8 @@
"noisesSett": "Noises 設定",
"trustedProxyCidrs": "信任代理 CIDR",
"trustedProxyCidrsDesc": "允許設定轉發 host、proto 與客戶端 IP 標頭的 IP/CIDR(逗號分隔)。",
"realityScanCandidates": "Reality 掃描候選清單",
"realityScanCandidatesDesc": "以逗號分隔的 host:port 目標(或 CIDR),作為「尋找目標」在搜尋框為空時的預設清單。可依常用目標自訂。",
"ldap": {
"enable": "啟用 LDAP 同步",
"host": "LDAP host",
@@ -1496,98 +1498,98 @@
"subExpiredTemplateDesc": "使用者訂閱過期時提示配置的備註範本。",
"subTrafficDepletedTemplate": "流量耗盡範本",
"subTrafficDepletedTemplateDesc": "使用者訂閱流量用盡時提示配置的備註範本。",
"subHappAutoDetect": "Happ 客户端请求头自动识别",
"subHappAutoDetectDesc": "当客户端 User-Agent 包含 Happ 时自动注入专属路由规则与响应头。",
"subHappProviderId": "服务提供商标识 (Provider ID)",
"subHappProviderIdDesc": "Happ 客户端管理、远程配置绑定与订阅迁移所需的唯一标识符。",
"subHappNewUrl": "新订阅地址 (迁移)",
"subHappNewUrlDesc": "自动迁移的新订阅 URL。客户端收到后会自动将订阅地址切换为此链接。",
"subHappFallbackUrl": "备用订阅地址 (Fallback)",
"subHappFallbackUrlDesc": "主订阅服务器不可用时 Happ 自动切换的备份订阅链接。",
"subHappSubInfoText": "幅公告文",
"subHappSubInfoTextDesc": "示在 Happ 客户端顶部的自定义通知横幅(最多 200 字符)。",
"subHappSubInfoColor": "横幅配色主题",
"subHappSubInfoColorDesc": "横幅主题颜色:blue (默认蓝色)、green (绿色)、red (红色警告)。",
"subHappSubInfoButtonText": "幅按文字",
"subHappSubInfoButtonTextDesc": "通知横幅内的操作按钮标题(最多 25 字符)。",
"subHappSubInfoButtonLink": "幅按钮链接",
"subHappSubInfoButtonLinkDesc": "点击横幅按钮时打开的目标网址或 DeepLink。",
"subHappSubExpire": "订阅到期提醒横幅",
"subHappSubExpireDesc": "当用户订阅即将到期或已过期时在 Happ 中显示续费提示横幅。",
"subHappSubExpireButtonLink": "续费链接",
"subHappSubExpireButtonLinkDesc": "到期横幅中点击「续费」按钮时跳转的支付或购买页面。",
"subHappNotificationExpire": "订阅到期推送提醒",
"subHappNotificationExpireDesc": "在订阅到期前 3 天向用户发送每日一次的客户端到期提醒。",
"subHappNoLimit": "解除规则数量限制 (No Limit)",
"subHappNoLimitDesc": "提升内核内存上限,允许应用超出移动端默认数量的复杂路由规则。",
"subHappAlwaysHwid": "强制绑定硬件标识 (HWID)",
"subHappAlwaysHwidDesc": "禁止客户端关闭硬件标识符上报,强化多设备防盗刷安全。",
"subHappTunMode": "TUN 运行模式",
"subHappTunModeDesc": "TUN 网络接口栈:system (系统网络栈) 或 gvisor (用户态协议栈)。",
"subHappTunType": "TUN 隧道内核 (TUN Type)",
"subHappTunTypeDesc": "隧道实现引擎singbox、tun2proxy、default (Happ 原生) xray。",
"subHappExcludeRoutes": "排除直连网段 (CIDR)",
"subHappExcludeRoutesDesc": "逗号分隔的 IP/CIDR 地址段,此网段流量不走 VPN 隧道直连。",
"subHappExcludeApns": "排除苹果推送服务 (APNs)",
"subHappExcludeApnsDesc": " Apple APNs 流量直连,保障 iOS 设备在后台稳定接收推送通知。",
"subHappColorProfile": "客户端外观主题",
"subHappColorProfileDesc": "Happ 界面配色主题:violet、turquoise、cyberpunk 或自定义 JSON 调色板。",
"subHappPingType": "延迟测速协议",
"subHappPingTypeDesc": "节点测速协议:via Proxy (GET)、via Proxy (HEAD)、TCP 握手或 ICMP。",
"subHappAutoConnect": "启动时自动连接",
"subHappAutoConnectDesc": "Happ 客户端打开时自动连接代理节点。",
"subHappAutoConnectType": "自动连接策略",
"subHappAutoConnectTypeDesc": "连接目标选择:lowestdelay (最低延迟)、lastused (上次使用) 或 random。",
"subHappPerAppMode": "Android 分应用代理",
"subHappPerAppModeDesc": "分应用代理模式:off (关闭)、on (仅代理选定应用) 或 bypass (绕过选定应用)。",
"subHappPerAppList": "Android 应用包名列表",
"subHappPerAppListDesc": "以逗分隔的应用包名(例如 org.telegram.messenger, com.google.android.youtube)。",
"subHappPresetIran": "伊朗直连规则 (Iran Bypass)",
"subHappPresetChina": "大陆直连规则 (China Direct)",
"subHappPresetAdblock": "广告拦截规则 (AdBlock)",
"subHappPresetGlobal": "全代理规则 (Global)",
"subHappPresetOff": "停用路由 (happ://routing/off)",
"subHappColorBlue": "藍色 (標準 / 預設)",
"subHappColorGreen": "綠色 (成功)",
"subHappColorRed": "紅色 (警告 / 危險)",
"subHappAutoDetect": "Happ 標頭自動識別",
"subHappAutoDetectDesc": "當用戶端 User-Agent 顯示為 Happ 時,自動注入 Happ 路由與標頭。",
"subHappProviderId": "提供者 ID",
"subHappProviderIdDesc": "用於 Happ 用戶端管理、遠端設定綁定與遷移的唯一提供者識別碼。",
"subHappNewUrl": "新訂閱 URL",
"subHappNewUrlDesc": "用戶端自動遷移的目標 URL。設定後,Happ 用戶端將遷移至此訂閱連結。",
"subHappFallbackUrl": "備用訂閱 URL",
"subHappFallbackUrlDesc": "主要訂閱 URL 無法連線時,Happ 使用的備用訂閱位址。",
"subHappSubInfoText": "幅公告文",
"subHappSubInfoTextDesc": "示在 Happ 用戶端頂部的自訂公告橫幅(最多 200 個字元)。",
"subHappSubInfoColor": "橫幅強調色",
"subHappSubInfoColorDesc": "公告橫幅的顏色主題樣式。",
"subHappSubInfoButtonText": "幅按文字",
"subHappSubInfoButtonTextDesc": "公告橫幅內顯示的按鈕文字(最多 25 個字元)。",
"subHappSubInfoButtonLink": "幅按鈕連結",
"subHappSubInfoButtonLinkDesc": "使用者點擊橫幅操作按鈕時開啟的目標 URL。",
"subHappSubExpire": "訂閱過期橫幅",
"subHappSubExpireDesc": "當使用者的流量用盡或有效期結束時,在 Happ 中顯示訂閱過期橫幅。",
"subHappSubExpireButtonLink": "續訂連結",
"subHappSubExpireButtonLinkDesc": "使用者在已過期訂閱上點擊續訂按鈕時開啟的目標 URL。",
"subHappNotificationExpire": "到期通知",
"subHappNotificationExpireDesc": "指示 Happ 在訂閱到期前 3 天提醒使用者。",
"subHappNoLimit": "無限制模式",
"subHappNoLimitDesc": "提高 Happ 中 xray-core 的記憶體上限,以提升穩定性與效能(測試版)。",
"subHappAlwaysHwid": "強制啟用硬體識別碼(HWID",
"subHappAlwaysHwidDesc": "禁止使用者在 Happ 設定中關閉 HWID 傳送。",
"subHappTunMode": "TUN 模式",
"subHappTunModeDesc": "桌面版 TUN 使用的網路堆疊:系統(作業系統堆疊)或 gVisor(使用者空間堆疊)。",
"subHappTunType": "TUN 引擎",
"subHappTunTypeDesc": "桌面版 TUN 連線使用的核心sing-box、tun2proxy、預設(Happ TUNXray。",
"subHappExcludeRoutes": "排除 CIDR 路由",
"subHappExcludeRoutesDesc": "以逗號分隔、要繞過 VPN 通道的 IP CIDR(例如 192.168.0.0/16, 10.0.0.0/8。",
"subHappExcludeApns": "排除 Apple APNs",
"subHappExcludeApnsDesc": " Apple 推播通知服務繞過 VPN,確保 iOS 在背景穩定接收通知。",
"subHappColorProfile": "用戶端顏色主題",
"subHappColorProfileDesc": "以 JSON 字串自訂 iOS 顏色主題,或填入 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": "全代理",
"subHappPresetOff": "停用路由happ://routing/off",
"subHappColorBlue": "藍色標準 / 預設",
"subHappColorGreen": "綠色成功",
"subHappColorRed": "紅色警告 / 危險",
"subHappTunModeDefault": "預設",
"subHappTunModeSystem": "系統 (標準作業系統協議棧)",
"subHappTunModeGvisor": "gVisor (使用者空間協議棧)",
"subHappTunModeSystem": "系統標準作業系統堆疊)",
"subHappTunModeGvisor": "gVisor使用者空間堆疊)",
"subHappTunTypeSingbox": "sing-box",
"subHappTunTypeTun2proxy": "tun2proxy",
"subHappTunTypeDefault": "預設 (Happ TUN)",
"subHappTunTypeDefault": "預設Happ TUN",
"subHappTunTypeXray": "Xray TUN",
"subHappPingProxy": "經由代理 (GET 延遲)",
"subHappPingProxyHead": "經由代理 (HEAD 延遲)",
"subHappPingTcp": "TCP 握 Ping",
"subHappPingProxy": "經由代理GET 延遲",
"subHappPingProxyHead": "經由代理HEAD 延遲",
"subHappPingTcp": "TCP 握 Ping",
"subHappPingIcmp": "ICMP Ping",
"subHappAutoConnectLowestDelay": "最低延遲 (最快節點)",
"subHappAutoConnectLowestDelay": "最低延遲最快節點",
"subHappAutoConnectLastUsed": "最後使用的節點",
"subHappAutoConnectRandom": "隨機節點",
"subHappPerAppOff": "關閉",
"subHappPerAppOn": "開啟 (僅代理列表中的應用)",
"subHappPerAppBypass": "繞過 (排除列表中的應用)",
"subHappPresetApplied": "Happ 预设规则已应用",
"subHappPresets": "预设路由规则",
"subHappPresetsDesc": "专为 Happ 客户端预设调优的常用分流规则。",
"subHappVisualBuilder": "可视化规则生成器",
"subHappVisualBuilderDesc": "通过域名与 IP 列表快速生成自定义 Happ 路由 DeepLink。",
"subHappBuildDeeplink": "生成 DeepLink",
"subHappModalTitle": "Happ 路由规则可视化生成器",
"subHappDirectDomains": "直连域名 (Direct)",
"subHappProxyDomains": "代理域名 (Proxy)",
"subHappBlockDomains": "阻止域名 (Block)",
"subHappDirectIPs": "直 IP / CIDR",
"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": "DeepLink 已生成并填入路由规则",
"subHappBlockIPs": "封鎖 IP / CIDR",
"subHappDeeplinkGenerated": "已產生深層連結並套用至路由規則",
"subHappGroupLinks": "訂閱連結",
"subHappGroupRouting": "路由分流与规则",
"subHappGroupBanners": "横幅公告与通知",
"subHappGroupNetwork": "网络与 TUN 引擎",
"subHappGroupThemes": "界面与主题外观",
"subHappGroupFailover": "迁移与客户端管理",
"subHappGroupAndroid": "Android 分应用代理",
"subHappGroupRouting": "路由與規則",
"subHappGroupBanners": "橫幅與公告",
"subHappGroupNetwork": "網路與 TUN 引擎",
"subHappGroupThemes": "外觀與主題",
"subHappGroupFailover": "遷移與應用程式管理",
"subHappGroupAndroid": "Android 個別應用程式代理",
"discordSettings": "Discord 機器人",
"discordBotEnable": "啟用 Discord 通知",
"discordBotEnableDesc": "透過機器人向 Discord 頻道發送系統與事件警報",