From 509b2ac7c7185fabaa275e04ec2216945bc3be7f Mon Sep 17 00:00:00 2001 From: NaiJi Date: Thu, 25 May 2023 00:02:10 -0300 Subject: [PATCH] chore: Move DNS provider methods to the abstract interface --- .../dns_providers/desec/desec_api.dart | 4 - .../rest_maps/dns_providers/dns_provider.dart | 87 +------------------ lib/logic/providers/dns_providers/desec.dart | 3 +- .../providers/dns_providers/dns_provider.dart | 37 +++++++- 4 files changed, 38 insertions(+), 93 deletions(-) diff --git a/lib/logic/api_maps/rest_maps/dns_providers/desec/desec_api.dart b/lib/logic/api_maps/rest_maps/dns_providers/desec/desec_api.dart index a7d70c71..db24707a 100644 --- a/lib/logic/api_maps/rest_maps/dns_providers/desec/desec_api.dart +++ b/lib/logic/api_maps/rest_maps/dns_providers/desec/desec_api.dart @@ -19,10 +19,6 @@ class DesecApi extends DnsProviderApi { final String? customToken; - @override - RegExp getApiTokenValidation() => - RegExp(r'\s+|[!$%^&*()@+|~=`{}\[\]:<>?,.\/]'); - @override BaseOptions get options { final BaseOptions options = BaseOptions(baseUrl: rootAddress); diff --git a/lib/logic/api_maps/rest_maps/dns_providers/dns_provider.dart b/lib/logic/api_maps/rest_maps/dns_providers/dns_provider.dart index af9d3e6b..3d74d5db 100644 --- a/lib/logic/api_maps/rest_maps/dns_providers/dns_provider.dart +++ b/lib/logic/api_maps/rest_maps/dns_providers/dns_provider.dart @@ -1,10 +1,4 @@ -import 'package:selfprivacy/logic/api_maps/generic_result.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/api_map.dart'; -import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/desired_dns_record.dart'; -import 'package:selfprivacy/logic/models/hive/server_domain.dart'; -import 'package:selfprivacy/logic/models/json/dns_records.dart'; -import 'package:selfprivacy/utils/network_utils.dart'; - export 'package:selfprivacy/logic/api_maps/generic_result.dart'; export 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/desired_dns_record.dart'; @@ -13,83 +7,4 @@ class DomainNotFoundException implements Exception { final String message; } -abstract class DnsProviderApi extends ApiMap { - Future> getDnsRecords({ - required final ServerDomain domain, - }); - - Future> removeSimilarRecords({ - required final ServerDomain domain, - final String? ip4, - }); - Future> createMultipleDnsRecords({ - required final ServerDomain domain, - final String? ip4, - }); - Future setDnsRecord( - final DnsRecord record, - final ServerDomain domain, - ); - Future>> validateDnsRecords( - final ServerDomain domain, - final String ip4, - final String dkimPublicKey, - ); - List getDesiredDnsRecords( - final String? domainName, - final String? ip4, - final String? dkimPublicKey, - ); - Future getZoneId(final String domain); - Future> domainList(); - - Future> isApiTokenValid(final String token); - RegExp getApiTokenValidation(); - - List getProjectDnsRecords( - final String? domainName, - final String? ip4, - ) { - final DnsRecord domainA = - DnsRecord(type: 'A', name: domainName, content: ip4); - - final DnsRecord mx = DnsRecord(type: 'MX', name: '@', content: domainName); - final DnsRecord apiA = DnsRecord(type: 'A', name: 'api', content: ip4); - final DnsRecord cloudA = DnsRecord(type: 'A', name: 'cloud', content: ip4); - final DnsRecord gitA = DnsRecord(type: 'A', name: 'git', content: ip4); - final DnsRecord meetA = DnsRecord(type: 'A', name: 'meet', content: ip4); - final DnsRecord passwordA = - DnsRecord(type: 'A', name: 'password', content: ip4); - final DnsRecord socialA = - DnsRecord(type: 'A', name: 'social', content: ip4); - final DnsRecord vpn = DnsRecord(type: 'A', name: 'vpn', content: ip4); - - final DnsRecord txt1 = DnsRecord( - type: 'TXT', - name: '_dmarc', - content: 'v=DMARC1; p=none', - ttl: 18000, - ); - - final DnsRecord txt2 = DnsRecord( - type: 'TXT', - name: domainName, - content: 'v=spf1 a mx ip4:$ip4 -all', - ttl: 18000, - ); - - return [ - domainA, - apiA, - cloudA, - gitA, - meetA, - passwordA, - socialA, - mx, - txt1, - txt2, - vpn - ]; - } -} +abstract class DnsProviderApi extends ApiMap {} diff --git a/lib/logic/providers/dns_providers/desec.dart b/lib/logic/providers/dns_providers/desec.dart index 81110b01..fe09fd3c 100644 --- a/lib/logic/providers/dns_providers/desec.dart +++ b/lib/logic/providers/dns_providers/desec.dart @@ -1,4 +1,3 @@ -import 'package:selfprivacy/logic/api_maps/generic_result.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/desec/desec_api.dart'; import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/desired_dns_record.dart'; import 'package:selfprivacy/logic/models/hive/server_domain.dart'; @@ -219,7 +218,7 @@ class DesecDnsProvider extends DnsProvider { ); return GenericResult( - success: true, + success: result.success, data: null, ); } diff --git a/lib/logic/providers/dns_providers/dns_provider.dart b/lib/logic/providers/dns_providers/dns_provider.dart index 9aa1f99d..14e31c32 100644 --- a/lib/logic/providers/dns_providers/dns_provider.dart +++ b/lib/logic/providers/dns_providers/dns_provider.dart @@ -1 +1,36 @@ -abstract class DnsProvider {} +import 'package:selfprivacy/logic/api_maps/generic_result.dart'; +import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/desired_dns_record.dart'; +import 'package:selfprivacy/logic/models/hive/server_domain.dart'; +import 'package:selfprivacy/logic/models/json/dns_records.dart'; +export 'package:selfprivacy/logic/api_maps/generic_result.dart'; + +abstract class DnsProvider { + Future> tryInitApiByToken(final String token); + Future> getZoneId(final String domain); + Future> removeDomainRecords({ + required final ServerDomain domain, + final String? ip4, + }); + Future>> getDnsRecords({ + required final ServerDomain domain, + }); + Future> createDomainRecords({ + required final ServerDomain domain, + final String? ip4, + }); + Future> setDnsRecord( + final DnsRecord record, + final ServerDomain domain, + ); + Future>> domainList(); + Future>> validateDnsRecords( + final ServerDomain domain, + final String ip4, + final String dkimPublicKey, + ); + List getDesiredDnsRecords( + final String? domainName, + final String? ip4, + final String? dkimPublicKey, + ); +}