using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Threading.Tasks; using ARSoft.Tools.Net.Dns; using SiteStatus.Dbo; namespace SiteStatus.Business { public class DnsBusiness { public async Task GetZoneStatusAsync(string zone, IEnumerable servers) { var dnsStatus = new DnsZoneStatusDbo { Zone = zone, ServerStatus = new List() }; foreach (var server in servers) { try { var resolver = new DnsStubResolver(new []{IPAddress.Parse(server)}); var records = resolver.Resolve(zone, RecordType.Soa); var record = records.FirstOrDefault(); dnsStatus.ServerStatus.Add(new DnsZoneServerStatusDbo { Server = server, Soa = record?.ToString() }); } catch (Exception e) { dnsStatus.ServerStatus.Add(new DnsZoneServerStatusDbo { Server = server, Soa = null }); } } return dnsStatus; } } }