diff --git a/assets/translations/strings_en.i18n.json b/assets/translations/strings_en.i18n.json index d253b559..8032ddfd 100644 --- a/assets/translations/strings_en.i18n.json +++ b/assets/translations/strings_en.i18n.json @@ -224,6 +224,7 @@ "clashApiPort": "Clash API Port", "enableTun": "Enable TUN", "setSystemProxy": "Set System Proxy", + "enableDnsRouting": "Enable DNS Routing", "enableFakeDns": "Enable Fake DNS", "bypassLan": "Bypass Lan", "strictRoute": "Strict Route", diff --git a/assets/translations/strings_fa.i18n.json b/assets/translations/strings_fa.i18n.json index e180d40e..5779d291 100644 --- a/assets/translations/strings_fa.i18n.json +++ b/assets/translations/strings_fa.i18n.json @@ -224,6 +224,7 @@ "clashApiPort": "پورت کلش", "enableTun": "فعال سازی تونل", "setSystemProxy": "تنظیم پروکسی سیستم", + "enableDnsRouting": "Enable DNS Routing", "enableFakeDns": "Enable Fake DNS", "bypassLan": "Bypass Lan", "strictRoute": "Strict Route", diff --git a/assets/translations/strings_ru.i18n.json b/assets/translations/strings_ru.i18n.json index 26ba0969..652f145c 100644 --- a/assets/translations/strings_ru.i18n.json +++ b/assets/translations/strings_ru.i18n.json @@ -222,6 +222,7 @@ "clashApiPort": "Порт Clash API", "enableTun": "Использовать TUN", "setSystemProxy": "Использовать системный прокси", + "enableDnsRouting": "Enable DNS Routing", "enableFakeDns": "Использовать поддельную DNS", "bypassLan": "Обход локальной сети", "strictRoute": "Строгая маршрутизация", diff --git a/assets/translations/strings_tr.i18n.json b/assets/translations/strings_tr.i18n.json index 2c06a98a..8f39ba89 100644 --- a/assets/translations/strings_tr.i18n.json +++ b/assets/translations/strings_tr.i18n.json @@ -222,6 +222,7 @@ "clashApiPort": "Clash API Bağlantı Noktası", "enableTun": "TUN'u etkinleştir", "setSystemProxy": "Sistem Proxy'sini Ayarla", + "enableDnsRouting": "Enable DNS Routing", "enableFakeDns": "Sahte DNS'yi Etkinleştir", "bypassLan": "Lan'ı Atla", "strictRoute": "Kesin Rota", diff --git a/assets/translations/strings_zh-CN.i18n.json b/assets/translations/strings_zh-CN.i18n.json index f132ac73..3a085874 100644 --- a/assets/translations/strings_zh-CN.i18n.json +++ b/assets/translations/strings_zh-CN.i18n.json @@ -222,6 +222,7 @@ "clashApiPort": "Clash API 端口", "enableTun": "启用 TUN", "setSystemProxy": "设置系统代理", + "enableDnsRouting": "Enable DNS Routing", "enableFakeDns": "启用 Fake DNS", "bypassLan": "绕过局域网", "strictRoute": "严格路由", diff --git a/lib/features/config_option/data/config_option_repository.dart b/lib/features/config_option/data/config_option_repository.dart index f06f335b..64356202 100644 --- a/lib/features/config_option/data/config_option_repository.dart +++ b/lib/features/config_option/data/config_option_repository.dart @@ -104,6 +104,7 @@ class ConfigOptionRepositoryImpl setSystemProxy: persisted.serviceMode == ServiceMode.systemProxy, bypassLan: persisted.bypassLan, enableFakeDns: persisted.enableFakeDns, + enableDnsRouting: persisted.enableDnsRouting, independentDnsCache: persisted.independentDnsCache, enableTlsFragment: persisted.enableTlsFragment, tlsFragmentSize: persisted.tlsFragmentSize, diff --git a/lib/features/config_option/model/config_option_entity.dart b/lib/features/config_option/model/config_option_entity.dart index 5d24d908..331f0d34 100644 --- a/lib/features/config_option/model/config_option_entity.dart +++ b/lib/features/config_option/model/config_option_entity.dart @@ -38,6 +38,7 @@ class ConfigOptionEntity with _$ConfigOptionEntity { @Default(6756) int clashApiPort, @Default(false) bool bypassLan, @Default(false) bool enableFakeDns, + @Default(true) bool enableDnsRouting, @Default(true) bool independentDnsCache, @Default(false) bool enableTlsFragment, @RangeWithOptionalCeilJsonConverter() @@ -96,6 +97,7 @@ class ConfigOptionEntity with _$ConfigOptionEntity { clashApiPort: patch.clashApiPort ?? clashApiPort, bypassLan: patch.bypassLan ?? bypassLan, enableFakeDns: patch.enableFakeDns ?? enableFakeDns, + enableDnsRouting: patch.enableDnsRouting ?? enableDnsRouting, independentDnsCache: patch.independentDnsCache ?? independentDnsCache, enableTlsFragment: patch.enableTlsFragment ?? enableTlsFragment, tlsFragmentSize: patch.tlsFragmentSize ?? tlsFragmentSize, diff --git a/lib/features/config_option/model/config_option_patch.dart b/lib/features/config_option/model/config_option_patch.dart index 5ebfad07..ef19c0e9 100644 --- a/lib/features/config_option/model/config_option_patch.dart +++ b/lib/features/config_option/model/config_option_patch.dart @@ -32,6 +32,7 @@ class ConfigOptionPatch with _$ConfigOptionPatch { int? clashApiPort, bool? bypassLan, bool? enableFakeDns, + bool? enableDnsRouting, bool? independentDnsCache, bool? enableTlsFragment, @RangeWithOptionalCeilJsonConverter() diff --git a/lib/features/config_option/overview/config_options_page.dart b/lib/features/config_option/overview/config_options_page.dart index f99cfa3a..3a5670ea 100644 --- a/lib/features/config_option/overview/config_options_page.dart +++ b/lib/features/config_option/overview/config_options_page.dart @@ -174,6 +174,13 @@ class ConfigOptionsPage extends HookConsumerWidget { ); }, ), + SwitchListTile( + title: Text(t.settings.config.enableDnsRouting), + value: options.enableDnsRouting, + onChanged: (value) => changeOption( + ConfigOptionPatch(enableDnsRouting: value), + ), + ), const SettingsDivider(), SettingsSection(t.settings.config.section.inbound), ListTile( diff --git a/lib/singbox/model/singbox_config_option.dart b/lib/singbox/model/singbox_config_option.dart index c2655973..5e67d479 100644 --- a/lib/singbox/model/singbox_config_option.dart +++ b/lib/singbox/model/singbox_config_option.dart @@ -36,6 +36,7 @@ class SingboxConfigOption with _$SingboxConfigOption { required bool setSystemProxy, required bool bypassLan, required bool enableFakeDns, + required bool enableDnsRouting, required bool independentDnsCache, required bool enableTlsFragment, @RangeWithOptionalCeilJsonConverter()