You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

DnsBusiness.cs 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Threading.Tasks;
  6. using ARSoft.Tools.Net.Dns;
  7. using SiteStatus.Dbo;
  8. namespace SiteStatus.Business
  9. {
  10. public class DnsBusiness
  11. {
  12. public async Task<DnsZoneStatusDbo> GetZoneStatusAsync(string zone, IEnumerable<string> servers)
  13. {
  14. var dnsStatus = new DnsZoneStatusDbo
  15. {
  16. Zone = zone,
  17. ServerStatus = new List<DnsZoneServerStatusDbo>()
  18. };
  19. foreach (var server in servers)
  20. {
  21. try
  22. {
  23. var resolver = new DnsStubResolver(new []{IPAddress.Parse(server)});
  24. var records = resolver.Resolve<SoaRecord>(zone, RecordType.Soa);
  25. var record = records.FirstOrDefault();
  26. dnsStatus.ServerStatus.Add(new DnsZoneServerStatusDbo
  27. {
  28. Server = server,
  29. Soa = record?.ToString()
  30. });
  31. }
  32. catch (Exception e)
  33. {
  34. dnsStatus.ServerStatus.Add(new DnsZoneServerStatusDbo
  35. {
  36. Server = server,
  37. Soa = null
  38. });
  39. }
  40. }
  41. return dnsStatus;
  42. }
  43. }
  44. }