public bool ExecuteDnsActions(DnsActionDetail request, DnsHandlerConfig config, bool isDryRun = false) { if (request == null || config == null) { return(false); } string domainSuffix = GetDomainSuffix(request.Hostname); if (string.IsNullOrWhiteSpace(domainSuffix)) { throw new Exception($"Domain suffix {domainSuffix} is not valid."); } string dnsServer = GetDnsServer(config, domainSuffix); if (string.IsNullOrWhiteSpace(dnsServer)) { throw new Exception($"Unable to find a matching DNS server for domain suffix {domainSuffix}."); } bool isSuccess = false; if (request.Action.ToLower() == "add" && request.RecordType.ToLower() == "atype") { OnLogMessage("Execute", "Adding type A DNS record..."); DnsServices.CreateARecord(request.Hostname, request.IpAddress, "", dnsServer, isDryRun); OnLogMessage("Execute", "Operation is successful."); isSuccess = true; } if (request.Action.ToLower() == "delete" && request.RecordType.ToLower() == "atype") { OnLogMessage("Execute", "Deleting type A DNS record and its associated PTR record..."); DnsServices.DeleteARecord(request.Hostname, request.IpAddress, dnsServer, isDryRun); OnLogMessage("Execute", "Operation is successful."); isSuccess = true; } if (request.Action.ToLower() == "add" && request.RecordType.ToLower() == "ptrtype") { OnLogMessage("Execute", "Adding type PTR DNS record..."); DnsServices.CreatePtrRecord(request.Hostname, request.IpAddress, request.DnsZone, dnsServer, isDryRun); OnLogMessage("Execute", "Operation is successful."); isSuccess = true; } if (request.Action.ToLower() == "delete" && request.RecordType.ToLower() == "ptrtype") { OnLogMessage("Execute", "Deleting type PTR DNS record..."); DnsServices.DeletePtrRecord(request.Hostname, request.IpAddress, dnsServer, isDryRun); OnLogMessage("Execute", "Operation is successful."); isSuccess = true; } return(isSuccess); }
public void CreatePtrRecord_Without_Hostname_Throw_Exception() { // Arrange string hostname = ""; string ipAddress = ""; string dnsServerName = "."; string dnsZone = ""; // Act Exception ex = Assert.Throws <Exception>(() => DnsServices.CreatePtrRecord(hostname, ipAddress, dnsZone, dnsServerName)); // Assert Assert.That(ex.Message, Is.EqualTo("Fully qualified host name is not specified.")); }
public void CreatePtrRecord_With_Invalid_Dns_Zone_Throw_Exception() { // Arrange string hostname = $"{Utility.GenerateToken( 8 )}.{DnsServices.GetJoinedDomainName()}"; string ipAddress = "10.2.0.97"; string dnsServerName = "."; string dnsZone = "XXXXXX"; // Act Exception ex = Assert.Throws <Exception>(() => DnsServices.CreatePtrRecord(hostname, ipAddress, dnsZone, dnsServerName)); // Assert Assert.IsTrue(ex.Message.Contains("Generic failure")); }
public void CreatePtrRecord_With_Invalid_Dns_Server_Throw_Exception() { // Arrange string hostname = $"{Utility.GenerateToken( 8 )}.{DnsServices.GetJoinedDomainName()}"; string ipAddress = Utility.GetRandomIpAddress(); string dnsServerName = "XXXXXX"; string dnsZone = "XXXXXX"; // Act Exception ex = Assert.Throws <Exception>(() => DnsServices.CreatePtrRecord(hostname, ipAddress, dnsZone, dnsServerName)); // Assert Assert.IsTrue(ex.Message.Contains("The RPC server is unavailable.")); }
public void CreatePtrRecord_Without_Dns_Zone_Throw_Exception() { // Arrange string hostname = $"{Utility.GenerateToken( 8 )}.{DnsServices.GetJoinedDomainName()}"; string ipAddress = "10.2.0.97"; string dnsServerName = "."; string dnsZone = ""; // Act Exception ex = Assert.Throws <Exception>(() => DnsServices.CreatePtrRecord(hostname, ipAddress, dnsZone, dnsServerName)); // Assert Assert.That(ex.Message, Is.EqualTo("DNS zone is not specified.")); }
public void DeletePtrRecord_With_Valid_Details_Succeed() { // Arrange string hostname = $"{Utility.GenerateToken( 8 )}.{DnsServices.GetJoinedDomainName()}"; string ipAddress = "10.2.0.97"; // TODO: Generate dynamic ip address string dnsServerName = "."; string dnsZone = "0.2.10.in-addr.arpa"; // Act DnsServices.CreatePtrRecord(hostname, ipAddress, dnsZone, dnsServerName); DnsServices.DeletePtrRecord(hostname, ipAddress); // Assert Assert.IsFalse(DnsServices.IsExistingPtrRecord(hostname, ipAddress)); }