From 3f057062f12a56d4906d160077f8d21cee9fe307 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Wed, 7 Feb 2024 23:35:20 +0100 Subject: [PATCH] Added plain dns control --- lib/l10n/app_en.arb | 4 +++- lib/l10n/app_es.arb | 4 +++- lib/models/encryption.dart | 4 ++++ lib/screens/settings/encryption/encryption.dart | 15 +++++++++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index a928180..1869104 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -772,5 +772,7 @@ "customRulesNotUpdated": "Custom rules could not be updated", "reorder": "Reorder", "showHide": "Show/hide", - "noElementsReorderMessage": "Enable some elements on the show/hide tab to reorder them here." + "noElementsReorderMessage": "Enable some elements on the show/hide tab to reorder them here.", + "enablePlainDns": "Enable plain DNS", + "enablePlainDnsDescription": "Plain DNS is enabled by default. You can disable it to force all devices to use encrypted DNS. To do this, you must enable at least one encrypted DNS protocol." } \ No newline at end of file diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index b744b99..7070fea 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -772,5 +772,7 @@ "customRulesNotUpdated": "Las reglas personalizadas no pudieron ser actualizadas", "reorder": "Reordenar", "showHide": "Mostrar/ocultar", - "noElementsReorderMessage": "Activa algunos elementos en la pestaña de mostrar/ocultar para reordenarlos aquí." + "noElementsReorderMessage": "Activa algunos elementos en la pestaña de mostrar/ocultar para reordenarlos aquí.", + "enablePlainDns": "Activar DNS simple (sin cifrado)", + "enablePlainDnsDescription": "El DNS simple (sin cifrado) está activado de forma predeterminada. Puedes desactivarlo para obligar a todos los dispositivos a utilizar DNS cifrado. Para ello, debes habilitar al menos un protocolo DNS cifrado." } \ No newline at end of file diff --git a/lib/models/encryption.dart b/lib/models/encryption.dart index 1315868..5fff3e0 100644 --- a/lib/models/encryption.dart +++ b/lib/models/encryption.dart @@ -39,6 +39,7 @@ class EncryptionData { final String certificatePath; final String privateKeyPath; final bool privateKeySaved; + final bool? servePlainDns; EncryptionData({ required this.validCert, @@ -65,6 +66,7 @@ class EncryptionData { required this.certificatePath, required this.privateKeyPath, required this.privateKeySaved, + required this.servePlainDns, }); @@ -93,6 +95,7 @@ class EncryptionData { certificatePath: json["certificate_path"], privateKeyPath: json["private_key_path"], privateKeySaved: json["private_key_saved"], + servePlainDns: json["serve_plain_dns"], ); Map toJson() => { @@ -120,6 +123,7 @@ class EncryptionData { "certificate_path": certificatePath, "private_key_path": privateKeyPath, "private_key_saved": privateKeySaved, + "serve_plain_dns": servePlainDns, }; } diff --git a/lib/screens/settings/encryption/encryption.dart b/lib/screens/settings/encryption/encryption.dart index 1efdad4..1929ef7 100644 --- a/lib/screens/settings/encryption/encryption.dart +++ b/lib/screens/settings/encryption/encryption.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:adguard_home_manager/widgets/custom_checkbox_list_tile.dart'; import 'package:adguard_home_manager/widgets/section_label.dart'; import 'package:adguard_home_manager/widgets/custom_switch_list_tile.dart'; import 'package:adguard_home_manager/screens/settings/encryption/status.dart'; @@ -35,6 +36,8 @@ class _EncryptionSettingsState extends State { bool enabled = false; + bool? _plainDns; + final TextEditingController domainNameController = TextEditingController(); String? domainError; @@ -112,6 +115,7 @@ class _EncryptionSettingsState extends State { privateKeyPathController.text = data.privateKeyPath; } usePreviouslySavedKey = data.privateKeySaved; + _plainDns = data.servePlainDns; loadStatus = LoadStatus.loaded; }); } @@ -224,6 +228,7 @@ class _EncryptionSettingsState extends State { "private_key_saved": usePreviouslySavedKey, "certificate_path": certificatePathController.text, "private_key_path": privateKeyPathController.text, + "serve_plain_dns": _plainDns } ); @@ -271,6 +276,7 @@ class _EncryptionSettingsState extends State { "private_key_saved": false, "certificate_path": "", "private_key_path": "", + "serve_plain_dns": true } ); if (!mounted) return; @@ -372,6 +378,15 @@ class _EncryptionSettingsState extends State { onEditValidate(); } ), + if (_plainDns != null) ...[ + const SizedBox(height: 8), + CustomCheckboxListTile( + value: _plainDns!, + onChanged: (v) => setState(() => _plainDns = v), + title: AppLocalizations.of(context)!.enablePlainDns, + subtitle: AppLocalizations.of(context)!.enablePlainDnsDescription, + ), + ], SectionLabel( label: AppLocalizations.of(context)!.serverConfiguration, padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 24),