diff --git a/lib/functions/encode_base64.dart b/lib/functions/base64.dart similarity index 80% rename from lib/functions/encode_base64.dart rename to lib/functions/base64.dart index 3ed3d59..cb34296 100644 --- a/lib/functions/encode_base64.dart +++ b/lib/functions/base64.dart @@ -9,4 +9,8 @@ String encodeBase64UserPass(String user, String pass) { String encodeBase64(String value) { Codec stringToBase64 = utf8.fuse(base64); return stringToBase64.encode(value); +} + +String decodeBase64(String value) { + return utf8.decode(base64.decode(value)); } \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index b4463a7..aebf7da 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -584,5 +584,6 @@ "clientsSelected": "clients selected", "invalidDomain": "Invalid domain", "loadingBlockedServicesList": "Loading blocked services list...", - "blockedServicesListNotLoaded": "The blocked services list could not be loaded" + "blockedServicesListNotLoaded": "The blocked services list could not be loaded", + "error": "Error" } \ No newline at end of file diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 95b7323..5f94cb5 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -584,5 +584,6 @@ "clientsSelected": "clientes seleccionados", "invalidDomain": "Dominio no vĂ¡lido", "loadingBlockedServicesList": "Cargando lista de servicios bloqueados...", - "blockedServicesListNotLoaded": "No se ha podido cargar la lista de servicios bloqueados" + "blockedServicesListNotLoaded": "No se ha podido cargar la lista de servicios bloqueados", + "error": "Error" } \ No newline at end of file diff --git a/lib/screens/settings/encryption/encryption.dart b/lib/screens/settings/encryption/encryption.dart index 120dab3..e1f3686 100644 --- a/lib/screens/settings/encryption/encryption.dart +++ b/lib/screens/settings/encryption/encryption.dart @@ -11,9 +11,10 @@ import 'package:adguard_home_manager/screens/settings/encryption/status.dart'; import 'package:adguard_home_manager/screens/settings/encryption/custom_text_field.dart'; import 'package:adguard_home_manager/screens/settings/encryption/master_switch.dart'; import 'package:adguard_home_manager/screens/settings/encryption/encryption_functions.dart'; +import 'package:adguard_home_manager/screens/settings/encryption/error_message.dart'; import 'package:adguard_home_manager/classes/process_modal.dart'; -import 'package:adguard_home_manager/functions/encode_base64.dart'; +import 'package:adguard_home_manager/functions/base64.dart'; import 'package:adguard_home_manager/functions/snackbar.dart'; import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart'; @@ -112,7 +113,7 @@ class _EncryptionSettingsWidgetState extends State { dnsOverQuicPortController.text = result['data'].portDnsOverQuic != null ? result['data'].portDnsOverQuic.toString() : ''; if (result['data'].certificateChain != '') { certificateOption = 1; - certificateContentController.text = "-----BEGIN CERTIFICATE-----\n${result['data'].certificateChain}\n-----END CERTIFICATE-----"; + certificateContentController.text = decodeBase64(result['data'].certificateChain); } else { certificateOption = 0; @@ -244,8 +245,8 @@ class _EncryptionSettingsWidgetState extends State { "port_https": int.parse(httpsPortController.text), "port_dns_over_tls": int.parse(tlsPortController.text), "port_dns_over_quic": int.parse(dnsOverQuicPortController.text), - "certificate_chain": certificateContentController.text, - "private_key": pastePrivateKeyController.text, + "certificate_chain": encodeBase64(certificateContentController.text), + "private_key": encodeBase64(pastePrivateKeyController.text), "private_key_saved": usePreviouslySavedKey, "certificate_path": certificatePathController.text, "private_key_path": privateKeyPathController.text, @@ -270,6 +271,15 @@ class _EncryptionSettingsWidgetState extends State { label: AppLocalizations.of(context)!.encryptionConfigNotSaved, color: Colors.red ); + + if (result['log'].resBody != null) { + showDialog( + context: context, + builder: (context) => ErrorMessageEncryption( + errorMessage: result['log'].resBody + ) + ); + } } } @@ -644,9 +654,7 @@ class _EncryptionSettingsWidgetState extends State { tooltip: generateStatusString(context, localValidationValid, certKeyValidApi) ), IconButton( - onPressed: localValidationValid == true && certKeyValidApi == 1 - ? () => saveData() - : null, + onPressed: saveData, icon: const Icon(Icons.save), tooltip: AppLocalizations.of(context)!.save, ), diff --git a/lib/screens/settings/encryption/error_message.dart b/lib/screens/settings/encryption/error_message.dart new file mode 100644 index 0000000..be132d8 --- /dev/null +++ b/lib/screens/settings/encryption/error_message.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class ErrorMessageEncryption extends StatelessWidget { + final String errorMessage; + + const ErrorMessageEncryption({ + Key? key, + required this.errorMessage, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Text(AppLocalizations.of(context)!.error), + content: Text(errorMessage), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(AppLocalizations.of(context)!.close) + ) + ], + ) + ], + ); + } +} \ No newline at end of file diff --git a/lib/widgets/add_server_modal.dart b/lib/widgets/add_server_modal.dart index e67cf16..758876b 100644 --- a/lib/widgets/add_server_modal.dart +++ b/lib/widgets/add_server_modal.dart @@ -6,7 +6,7 @@ import 'package:uuid/uuid.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart'; -import 'package:adguard_home_manager/functions/encode_base64.dart'; +import 'package:adguard_home_manager/functions/base64.dart'; import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/models/app_log.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart';