selfprivacy.org.app/lib/logic/models/json/dns_providers/cloudflare_dns_adapter.dart

48 lines
1.1 KiB
Dart

part of 'cloudflare_dns_info.dart';
CloudflareDnsRecord _fromDnsRecord(
final DnsRecord dnsRecord,
final String rootDomain,
) {
final String type = dnsRecord.type;
String name = dnsRecord.name ?? '';
if (name != rootDomain && name != '@') {
name = '$name.$rootDomain';
}
if (type == 'MX' && name == '@') {
name = rootDomain;
}
return CloudflareDnsRecord(
content: dnsRecord.content,
name: name,
type: type,
zoneName: rootDomain,
id: null,
ttl: dnsRecord.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(
domainName: cloudflareZone.name,
provider: DnsProviderType.cloudflare,
);