mirror of
https://github.com/TechnitiumSoftware/DnsServer.git
synced 2026-03-02 22:15:25 +00:00
CatalogZone: implemented support for adding secondary zones as member zones.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user