コード例 #1
0
ファイル: DnsHandler.cs プロジェクト: lulzzz/handlers.Dns.net
    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);
    }
コード例 #2
0
        public void DeleteARecord_With_NonExistent_Hostname_Throw_Exception()
        {
            // Arrange
            string hostname  = "XXXXXX";
            string ipAddress = "";

            // Act
            Exception ex = Assert.Throws <Exception>(() => DnsServices.DeleteARecord(hostname, ipAddress));

            // Assert
            Assert.That(ex.Message, Is.EqualTo("DNS A record is not found."));
        }
コード例 #3
0
        public void DeleteARecord_Without_Hostname_Throw_Exception()
        {
            // Arrange
            string hostname  = "";
            string ipAddress = "";

            // Act
            Exception ex = Assert.Throws <Exception>(() => DnsServices.DeleteARecord(hostname, ipAddress));

            // Assert
            Assert.That(ex.Message, Is.EqualTo("Fully qualified host name is not specified."));
        }
コード例 #4
0
        public void DeleteARecord_Valid_Hostname_Succeed()
        {
            // Arrange
            string hostname      = Utility.GenerateToken(8) + "." + DnsServices.GetJoinedDomainName();
            string ipAddress     = Utility.GetRandomIpAddress();
            string dnsServerName = ".";
            string dnsZone       = DnsServices.GetJoinedDomainName();

            // Act
            DnsServices.CreateARecord(hostname, ipAddress, dnsZone, dnsServerName);
            DnsServices.DeleteARecord(hostname, ipAddress);

            // Assert
            Assert.IsFalse(DnsServices.IsExistingARecord(hostname, ipAddress));
        }