CatalogZone: implemented support for adding secondary zones as member zones.

This commit is contained in:
Shreyas Zare
2025-12-20 15:40:38 +05:30
parent b0cd0db693
commit f7dedce2e1

View File

@@ -197,6 +197,17 @@ namespace DnsServerCore.Dns.Zones
}
}
public AuthZoneType GetZoneTypeProperty(string memberZoneName)
{
string domain = "zone-type.ext." + GetMemberZoneDomain(memberZoneName);
IReadOnlyList<DnsResourceRecord> records = _dnsServer.AuthZoneManager.GetRecords(_name, domain, DnsResourceRecordType.TXT);
if (records.Count > 0)
return Enum.Parse<AuthZoneType>((records[0].RDATA as DnsTXTRecordData).GetText(), true);
return AuthZoneType.Primary;
}
public void SetAllowQueryProperty(IReadOnlyCollection<NetworkAccessControl> acl = null, string memberZoneName = null)
{
string domain = "allow-query.ext." + GetMemberZoneDomain(memberZoneName);
@@ -278,6 +289,57 @@ namespace DnsServerCore.Dns.Zones
}
}
public void SetPrimaryZoneTransferProtocolProperty(DnsTransportProtocol? zoneTransferProtocol = null, string memberZoneName = null)
{
string domain = "primary-transfer-protocol.ext." + GetMemberZoneDomain(memberZoneName);
if (zoneTransferProtocol is null)
{
_dnsServer.AuthZoneManager.DeleteRecords(_name, domain, DnsResourceRecordType.TXT);
}
else
{
DnsResourceRecord record = new DnsResourceRecord(domain, DnsResourceRecordType.TXT, DnsClass.IN, 0, new DnsTXTRecordData(zoneTransferProtocol.ToString()));
record.GetAuthGenericRecordInfo().LastModified = DateTime.UtcNow;
_dnsServer.AuthZoneManager.SetRecord(_name, record);
}
}
public void SetPrimaryZoneTransferTsigKeyNameProperty(string tsigKeyName = null, string memberZoneName = null)
{
string domain = "primary-transfer-tsig-key-name.ext." + GetMemberZoneDomain(memberZoneName);
if (tsigKeyName is null)
{
_dnsServer.AuthZoneManager.DeleteRecords(_name, domain, DnsResourceRecordType.PTR);
}
else
{
DnsResourceRecord record = new DnsResourceRecord(domain, DnsResourceRecordType.PTR, DnsClass.IN, 0, new DnsPTRRecordData(tsigKeyName));
record.GetAuthGenericRecordInfo().LastModified = DateTime.UtcNow;
_dnsServer.AuthZoneManager.SetRecord(_name, record);
}
}
public void SetZoneMdValidationProperty(bool? validateZone = null, string memberZoneName = null)
{
string domain = "zonemd-validation.ext." + GetMemberZoneDomain(memberZoneName);
if (validateZone is null)
{
_dnsServer.AuthZoneManager.DeleteRecords(_name, domain, DnsResourceRecordType.TXT);
}
else
{
DnsResourceRecord record = new DnsResourceRecord(domain, DnsResourceRecordType.TXT, DnsClass.IN, 0, new DnsTXTRecordData(validateZone.ToString()));
record.GetAuthGenericRecordInfo().LastModified = DateTime.UtcNow;
_dnsServer.AuthZoneManager.SetRecord(_name, record);
}
}
private string GetMemberZoneDomain(string memberZoneName = null)
{
if (memberZoneName is null)