Fixed issues encryption screen

This commit is contained in:
Juan Gilsanz Polo 2023-03-24 21:48:34 +01:00
parent c13ba9e725
commit 759c977975
6 changed files with 54 additions and 10 deletions

View file

@ -10,3 +10,7 @@ String encodeBase64(String value) {
Codec<String, String> stringToBase64 = utf8.fuse(base64); Codec<String, String> stringToBase64 = utf8.fuse(base64);
return stringToBase64.encode(value); return stringToBase64.encode(value);
} }
String decodeBase64(String value) {
return utf8.decode(base64.decode(value));
}

View file

@ -584,5 +584,6 @@
"clientsSelected": "clients selected", "clientsSelected": "clients selected",
"invalidDomain": "Invalid domain", "invalidDomain": "Invalid domain",
"loadingBlockedServicesList": "Loading blocked services list...", "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"
} }

View file

@ -584,5 +584,6 @@
"clientsSelected": "clientes seleccionados", "clientsSelected": "clientes seleccionados",
"invalidDomain": "Dominio no válido", "invalidDomain": "Dominio no válido",
"loadingBlockedServicesList": "Cargando lista de servicios bloqueados...", "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"
} }

View file

@ -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/custom_text_field.dart';
import 'package:adguard_home_manager/screens/settings/encryption/master_switch.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/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/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/functions/snackbar.dart';
import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart';
@ -112,7 +113,7 @@ class _EncryptionSettingsWidgetState extends State<EncryptionSettingsWidget> {
dnsOverQuicPortController.text = result['data'].portDnsOverQuic != null ? result['data'].portDnsOverQuic.toString() : ''; dnsOverQuicPortController.text = result['data'].portDnsOverQuic != null ? result['data'].portDnsOverQuic.toString() : '';
if (result['data'].certificateChain != '') { if (result['data'].certificateChain != '') {
certificateOption = 1; certificateOption = 1;
certificateContentController.text = "-----BEGIN CERTIFICATE-----\n${result['data'].certificateChain}\n-----END CERTIFICATE-----"; certificateContentController.text = decodeBase64(result['data'].certificateChain);
} }
else { else {
certificateOption = 0; certificateOption = 0;
@ -244,8 +245,8 @@ class _EncryptionSettingsWidgetState extends State<EncryptionSettingsWidget> {
"port_https": int.parse(httpsPortController.text), "port_https": int.parse(httpsPortController.text),
"port_dns_over_tls": int.parse(tlsPortController.text), "port_dns_over_tls": int.parse(tlsPortController.text),
"port_dns_over_quic": int.parse(dnsOverQuicPortController.text), "port_dns_over_quic": int.parse(dnsOverQuicPortController.text),
"certificate_chain": certificateContentController.text, "certificate_chain": encodeBase64(certificateContentController.text),
"private_key": pastePrivateKeyController.text, "private_key": encodeBase64(pastePrivateKeyController.text),
"private_key_saved": usePreviouslySavedKey, "private_key_saved": usePreviouslySavedKey,
"certificate_path": certificatePathController.text, "certificate_path": certificatePathController.text,
"private_key_path": privateKeyPathController.text, "private_key_path": privateKeyPathController.text,
@ -270,6 +271,15 @@ class _EncryptionSettingsWidgetState extends State<EncryptionSettingsWidget> {
label: AppLocalizations.of(context)!.encryptionConfigNotSaved, label: AppLocalizations.of(context)!.encryptionConfigNotSaved,
color: Colors.red 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<EncryptionSettingsWidget> {
tooltip: generateStatusString(context, localValidationValid, certKeyValidApi) tooltip: generateStatusString(context, localValidationValid, certKeyValidApi)
), ),
IconButton( IconButton(
onPressed: localValidationValid == true && certKeyValidApi == 1 onPressed: saveData,
? () => saveData()
: null,
icon: const Icon(Icons.save), icon: const Icon(Icons.save),
tooltip: AppLocalizations.of(context)!.save, tooltip: AppLocalizations.of(context)!.save,
), ),

View file

@ -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)
)
],
)
],
);
}
}

View file

@ -6,7 +6,7 @@ import 'package:uuid/uuid.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.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/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/services/http_requests.dart';
import 'package:adguard_home_manager/models/app_log.dart'; import 'package:adguard_home_manager/models/app_log.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart';