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 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); }
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); }