1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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<DnsZoneStatusDbo> GetZoneStatusAsync(string zone, IEnumerable<string> servers)
- {
- var dnsStatus = new DnsZoneStatusDbo
- {
- Zone = zone,
- ServerStatus = new List<DnsZoneServerStatusDbo>()
- };
-
- foreach (var server in servers)
- {
- try
- {
- var resolver = new DnsStubResolver(new []{IPAddress.Parse(server)});
- var records = resolver.Resolve<SoaRecord>(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;
- }
- }
- }
|