mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-16 23:27: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": "Pengaturan Noises",
|
||||
"trustedProxyCidrs": "CIDR proxy tepercaya",
|
||||
"trustedProxyCidrsDesc": "IP/CIDR (dipisahkan koma) yang diizinkan mengatur header forwarded host, proto, dan client IP.",
|
||||
"realityScanCandidates": "Kandidat pemindaian Reality",
|
||||
"realityScanCandidatesDesc": "Daftar target host:port (atau CIDR) dipisahkan koma yang dipakai sebagai default saat Cari Target dijalankan dengan pencarian kosong. Sesuaikan dengan tujuan yang sering Anda gunakan.",
|
||||
"ldap": {
|
||||
"enable": "Aktifkan sinkronisasi LDAP",
|
||||
"host": "LDAP host",
|
||||
@@ -1496,66 +1498,66 @@
|
||||
"subExpiredTemplateDesc": "Templat untuk konfigurasi dummy saat akun langganan telah kedaluwarsa.",
|
||||
"subTrafficDepletedTemplate": "Templat Kuota Habis",
|
||||
"subTrafficDepletedTemplateDesc": "Templat untuk konfigurasi dummy saat kuota data langganan telah habis.",
|
||||
"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": "Deteksi Otomatis Header Happ",
|
||||
"subHappAutoDetectDesc": "Otomatis menyisipkan routing dan header Happ saat User-Agent klien menunjukkan Happ.",
|
||||
"subHappProviderId": "ID Penyedia (Provider ID)",
|
||||
"subHappProviderIdDesc": "Pengenal unik penyedia untuk manajemen klien Happ, pengikatan konfigurasi jarak jauh, dan migrasi.",
|
||||
"subHappNewUrl": "URL Langganan Baru",
|
||||
"subHappNewUrlDesc": "URL tujuan untuk migrasi klien otomatis. Jika diisi, klien Happ akan bermigrasi ke tautan langganan ini.",
|
||||
"subHappFallbackUrl": "URL Langganan Cadangan",
|
||||
"subHappFallbackUrlDesc": "Alamat langganan cadangan yang dipakai Happ jika URL langganan utama tidak dapat dijangkau.",
|
||||
"subHappSubInfoText": "Teks Pengumuman Banner",
|
||||
"subHappSubInfoTextDesc": "Banner pengumuman kustom yang ditampilkan di bagian atas klien Happ (maks. 200 karakter).",
|
||||
"subHappSubInfoColor": "Warna Aksen Banner",
|
||||
"subHappSubInfoColorDesc": "Gaya tema warna untuk banner pengumuman.",
|
||||
"subHappSubInfoButtonText": "Teks Tombol Banner",
|
||||
"subHappSubInfoButtonTextDesc": "Label tombol yang ditampilkan di dalam banner pengumuman (maks. 25 karakter).",
|
||||
"subHappSubInfoButtonLink": "Tautan Tombol Banner",
|
||||
"subHappSubInfoButtonLinkDesc": "URL tujuan yang dibuka saat pengguna mengklik tombol aksi banner.",
|
||||
"subHappSubExpire": "Banner Langganan Kedaluwarsa",
|
||||
"subHappSubExpireDesc": "Tampilkan banner langganan kedaluwarsa di Happ saat lalu lintas atau masa berlaku pengguna telah habis.",
|
||||
"subHappSubExpireButtonLink": "Tautan Perpanjangan",
|
||||
"subHappSubExpireButtonLinkDesc": "URL tujuan yang dibuka saat pengguna mengklik tombol perpanjangan pada langganan yang kedaluwarsa.",
|
||||
"subHappNotificationExpire": "Notifikasi Kedaluwarsa",
|
||||
"subHappNotificationExpireDesc": "Minta Happ mengingatkan pengguna 3 hari sebelum langganannya kedaluwarsa.",
|
||||
"subHappNoLimit": "Mode Tanpa Batas",
|
||||
"subHappNoLimitDesc": "Naikkan batas RAM xray-core di Happ untuk stabilitas dan performa yang lebih baik (beta).",
|
||||
"subHappAlwaysHwid": "Wajibkan ID Perangkat Keras (HWID)",
|
||||
"subHappAlwaysHwidDesc": "Cegah pengguna mematikan pengiriman HWID di pengaturan Happ.",
|
||||
"subHappTunMode": "Mode TUN",
|
||||
"subHappTunModeDesc": "Stack jaringan yang dipakai TUN di desktop: sistem (stack OS) atau gVisor (stack userspace).",
|
||||
"subHappTunType": "Mesin TUN",
|
||||
"subHappTunTypeDesc": "Inti yang dipakai untuk koneksi TUN di desktop: sing-box, tun2proxy, bawaan (Happ TUN), atau Xray.",
|
||||
"subHappExcludeRoutes": "Kecualikan Rute CIDR",
|
||||
"subHappExcludeRoutesDesc": "IP CIDR dipisahkan koma (mis. 192.168.0.0/16, 10.0.0.0/8) yang dikecualikan dari tunnel VPN.",
|
||||
"subHappExcludeApns": "Kecualikan Apple APNs",
|
||||
"subHappExcludeApnsDesc": "Lewatkan layanan Apple Push Notification di luar VPN agar notifikasi latar belakang di iOS tetap andal.",
|
||||
"subHappColorProfile": "Tema Warna Klien",
|
||||
"subHappColorProfileDesc": "Tema warna iOS kustom sebagai string JSON, atau resetcolors untuk mengembalikan warna bawaan.",
|
||||
"subHappPingType": "Metode Ping Latensi",
|
||||
"subHappPingTypeDesc": "Cara Happ mengukur latensi node: melalui proxy (GET atau HEAD), TCP, atau ICMP.",
|
||||
"subHappAutoConnect": "Hubungkan Otomatis saat Dibuka",
|
||||
"subHappAutoConnectDesc": "Minta Happ terhubung ke VPN secara otomatis saat aplikasi dimulai.",
|
||||
"subHappAutoConnectType": "Target Koneksi Otomatis",
|
||||
"subHappAutoConnectTypeDesc": "Server yang dipilih untuk koneksi otomatis: latensi terendah, terakhir digunakan, atau node acak.",
|
||||
"subHappPerAppMode": "Mode Proxy Per-Aplikasi Android",
|
||||
"subHappPerAppModeDesc": "Kontrol routing aplikasi Android: mati, nyala (proxy hanya aplikasi terdaftar), atau bypass (kecualikan aplikasi terdaftar).",
|
||||
"subHappPerAppList": "Nama Paket Android",
|
||||
"subHappPerAppListDesc": "Nama paket aplikasi Android yang disertakan atau dikecualikan, dipisahkan koma (mis. org.telegram.messenger).",
|
||||
"subHappPresetIran": "Bypass Iran",
|
||||
"subHappPresetChina": "Tiongkok Langsung",
|
||||
"subHappPresetAdblock": "AdBlock",
|
||||
"subHappPresetGlobal": "Full Proxy",
|
||||
"subHappPresetOff": "Nonaktifkan Perutean (happ://routing/off)",
|
||||
"subHappColorBlue": "Biru (Standar / Default)",
|
||||
"subHappPresetGlobal": "Proxy Penuh",
|
||||
"subHappPresetOff": "Nonaktifkan Routing (happ://routing/off)",
|
||||
"subHappColorBlue": "Biru (Standar / Bawaan)",
|
||||
"subHappColorGreen": "Hijau (Sukses)",
|
||||
"subHappColorRed": "Merah (Peringatan / Bahaya)",
|
||||
"subHappTunModeDefault": "Default",
|
||||
"subHappTunModeDefault": "Bawaan",
|
||||
"subHappTunModeSystem": "Sistem (Stack OS Standar)",
|
||||
"subHappTunModeGvisor": "gVisor (Stack Userspace)",
|
||||
"subHappTunTypeSingbox": "sing-box",
|
||||
"subHappTunTypeTun2proxy": "tun2proxy",
|
||||
"subHappTunTypeDefault": "Default (Happ TUN)",
|
||||
"subHappTunTypeDefault": "Bawaan (Happ TUN)",
|
||||
"subHappTunTypeXray": "Xray TUN",
|
||||
"subHappPingProxy": "Melalui Proxy (Latensi GET)",
|
||||
"subHappPingProxyHead": "Melalui Proxy (Latensi HEAD)",
|
||||
@@ -1565,29 +1567,29 @@
|
||||
"subHappAutoConnectLastUsed": "Node Terakhir Digunakan",
|
||||
"subHappAutoConnectRandom": "Node Acak",
|
||||
"subHappPerAppOff": "Mati",
|
||||
"subHappPerAppOn": "Nyala (Hanya Proksikan Aplikasi Terdaftar)",
|
||||
"subHappPerAppOn": "Nyala (Proxy Hanya Aplikasi Terdaftar)",
|
||||
"subHappPerAppBypass": "Bypass (Kecualikan Aplikasi Terdaftar)",
|
||||
"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",
|
||||
"subHappPresetApplied": "Preset Happ diterapkan ke aturan routing",
|
||||
"subHappPresets": "Preset Routing",
|
||||
"subHappPresetsDesc": "Preset aturan routing siap pakai yang disesuaikan untuk klien Happ.",
|
||||
"subHappVisualBuilder": "Pembuat Aturan Visual",
|
||||
"subHappVisualBuilderDesc": "Buat deeplink routing kustom dari daftar domain dan IP.",
|
||||
"subHappBuildDeeplink": "Buat Deeplink",
|
||||
"subHappModalTitle": "Pembuat Aturan Routing Visual Happ",
|
||||
"subHappDirectDomains": "Domain Langsung (Bypass)",
|
||||
"subHappProxyDomains": "Domain Proxy (Tunnel)",
|
||||
"subHappBlockDomains": "Domain Diblokir (Iklan/Malware)",
|
||||
"subHappDirectIPs": "IP / CIDR Langsung",
|
||||
"subHappProxyIPs": "IP / CIDR Proxy",
|
||||
"subHappBlockIPs": "IP / CIDR Diblokir",
|
||||
"subHappDeeplinkGenerated": "Deeplink dibuat dan diterapkan ke aturan routing",
|
||||
"subHappGroupLinks": "Tautan Langganan",
|
||||
"subHappGroupRouting": "Routing & Rules",
|
||||
"subHappGroupBanners": "Banners & Announcements",
|
||||
"subHappGroupNetwork": "Network & TUN Engine",
|
||||
"subHappGroupThemes": "Appearance & Theme",
|
||||
"subHappGroupFailover": "Migration & App Management",
|
||||
"subHappGroupAndroid": "Android Per-App Proxy",
|
||||
"subHappGroupRouting": "Routing & Aturan",
|
||||
"subHappGroupBanners": "Banner & Pengumuman",
|
||||
"subHappGroupNetwork": "Jaringan & Mesin TUN",
|
||||
"subHappGroupThemes": "Tampilan & Tema",
|
||||
"subHappGroupFailover": "Migrasi & Manajemen Aplikasi",
|
||||
"subHappGroupAndroid": "Proxy Per-Aplikasi Android",
|
||||
"discordSettings": "Bot Discord",
|
||||
"discordBotEnable": "Aktifkan Notifikasi Discord",
|
||||
"discordBotEnableDesc": "Kirim peringatan sistem dan acara ke saluran Discord melalui bot",
|
||||
|
||||
Reference in New Issue
Block a user