diff --git a/assets/translations/en.json b/assets/translations/en.json index 57bd579b..172fce4e 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -162,7 +162,8 @@ "services_subtitle": "Type “A” records required for each service.", "email_title": "Email", "email_subtitle": "Records necessary for secure email exchange.", - "update_list": "Update list" + "update_list": "Update list", + "domain_validation_failure": "We can't reach your domain!" }, "backup": { "card_title": "Backup", @@ -633,4 +634,4 @@ "reset_onboarding_description": "Reset onboarding switch to show onboarding screen again", "cubit_statuses": "Cubit loading statuses" } -} +} \ No newline at end of file diff --git a/lib/logic/cubit/dns_records/dns_records_cubit.dart b/lib/logic/cubit/dns_records/dns_records_cubit.dart index 539f36a1..d18d7af3 100644 --- a/lib/logic/cubit/dns_records/dns_records_cubit.dart +++ b/lib/logic/cubit/dns_records/dns_records_cubit.dart @@ -1,4 +1,6 @@ import 'package:cubit_form/cubit_form.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:selfprivacy/config/get_it_config.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/desired_dns_record.dart'; import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart'; import 'package:selfprivacy/logic/models/hive/server_domain.dart'; @@ -45,10 +47,11 @@ class DnsRecordsCubit domain, extractDkimRecord(allDnsRecords)?.content ?? '', allDnsRecords, + ipAddress, ); if (!foundRecords.success || foundRecords.data.isEmpty) { - emit(const DnsRecordsState()); + emit(const DnsRecordsState(dnsState: DnsRecordsStatus.error)); return; } @@ -72,7 +75,19 @@ class DnsRecordsCubit final ServerDomain domain, final String dkimPublicKey, final List pendingDnsRecords, + final String ip4, ) async { + final matchMap = await validateDnsMatch(domain.domainName, ['api'], ip4); + if (matchMap.values.any((final status) => status != DnsRecordStatus.ok)) { + getIt().showSnackBar( + 'domain.domain_validation_failure'.tr(), + ); + return GenericResult( + success: false, + data: [], + ); + } + final result = await ProvidersController.currentDnsProvider! .getDnsRecords(domain: domain); if (result.data.isEmpty || !result.success) {