From ff9c96a114bbee4914a523b552678aa25994dbb5 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Fri, 5 Jan 2024 07:15:27 +0400 Subject: [PATCH] fix(cloudflare): Adapt Cloudflare DNS convertion --- .../dns_providers/cloudflare_dns_adapter.dart | 23 ++++++++++++++----- .../dns_providers/cloudflare_dns_info.dart | 3 ++- .../providers/dns_providers/cloudflare.dart | 2 +- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/logic/models/json/dns_providers/cloudflare_dns_adapter.dart b/lib/logic/models/json/dns_providers/cloudflare_dns_adapter.dart index dafe51d4..3a22c89e 100644 --- a/lib/logic/models/json/dns_providers/cloudflare_dns_adapter.dart +++ b/lib/logic/models/json/dns_providers/cloudflare_dns_adapter.dart @@ -18,12 +18,23 @@ CloudflareDnsRecord _fromDnsRecord( ); } -DnsRecord _toDnsRecord(final CloudflareDnsRecord cloudflareRecord) => DnsRecord( - content: cloudflareRecord.content, - name: cloudflareRecord.name, - type: cloudflareRecord.type, - ttl: cloudflareRecord.ttl, - ); +DnsRecord _toDnsRecord( + final CloudflareDnsRecord cloudflareRecord, + final String domainName, +) { + String? name = cloudflareRecord.name; + if (name != null && name.endsWith('.$domainName')) { + // e.g. 'api.example.com -> [api] [example] [com] -> [api]' + name = name.split('.')[0]; + } + + return DnsRecord( + content: cloudflareRecord.content, + type: cloudflareRecord.type, + ttl: cloudflareRecord.ttl, + name: name, + ); +} ServerDomain _toServerDomain(final CloudflareZone cloudflareZone) => ServerDomain( diff --git a/lib/logic/models/json/dns_providers/cloudflare_dns_info.dart b/lib/logic/models/json/dns_providers/cloudflare_dns_info.dart index 362124d6..c2ee727b 100644 --- a/lib/logic/models/json/dns_providers/cloudflare_dns_info.dart +++ b/lib/logic/models/json/dns_providers/cloudflare_dns_info.dart @@ -93,5 +93,6 @@ class CloudflareDnsRecord { static CloudflareDnsRecord fromJson(final Map json) => _$CloudflareDnsRecordFromJson(json); Map toJson() => _$CloudflareDnsRecordToJson(this); - DnsRecord toDnsRecord() => _toDnsRecord(this); + DnsRecord toDnsRecord(final String domainName) => + _toDnsRecord(this, domainName); } diff --git a/lib/logic/providers/dns_providers/cloudflare.dart b/lib/logic/providers/dns_providers/cloudflare.dart index d7b3689a..d655cfbb 100644 --- a/lib/logic/providers/dns_providers/cloudflare.dart +++ b/lib/logic/providers/dns_providers/cloudflare.dart @@ -154,7 +154,7 @@ class CloudflareDnsProvider extends DnsProvider { } for (final rawRecord in result.data) { - records.add(rawRecord.toDnsRecord()); + records.add(rawRecord.toDnsRecord(domain.domainName)); } return GenericResult(