Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    public override IHandlerRuntime Initialize(string values)
    {
        try
        {
            _config = DeserializeOrNew <DnsHandlerConfig>(values) ?? new DnsHandlerConfig();
        }
        catch (Exception ex)
        {
            OnLogMessage("Initialization", "Encountered exception while deserializing handler config.", LogLevel.Error, ex);
        }

        return(this);
    }
Exemplo n.º 3
0
    public string GetDnsServer(DnsHandlerConfig config, string domainSuffix)
    {
        string dnsServer = "";

        if (config?.DnsServers != null && !string.IsNullOrWhiteSpace(domainSuffix))
        {
            foreach (DnsServer ds in config.DnsServers)
            {
                if (string.Compare(ds.DomainSuffix, domainSuffix, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    dnsServer = ds.ServerName;
                    break;
                }
            }
        }
        return(dnsServer);
    }