public LookupClientWrapper(DomainParser domainParser, ILogService logService, ILookupClient lookupClient, LookupClientWrapper @default) { LookupClient = lookupClient; lookupClient.UseCache = false; _log = logService; _domainParser = domainParser; _default = @default; }
private IDnsQueryResponse RecursivelyFollowCnames(IDnsQueryResponse result) { if (result.Answers.CnameRecords().Any()) { var cname = result.Answers.CnameRecords().First(); var nsChecker = this; if (_default != null) { nsChecker = _default; } var nameServerIpAddresses = nsChecker.GetNameServerIpAddresses(cname.CanonicalName); var recursiveClient = new LookupClientWrapper(_domainParser, _log, new LookupClient(nameServerIpAddresses.ToArray()), _default); IDnsQueryResponse txtResponse = recursiveClient.LookupClient.Query(cname.CanonicalName, QueryType.TXT); _log.Debug("Name server {NameServerIpAddress} selected", txtResponse.NameServer.Endpoint.Address.ToString()); return(recursiveClient.RecursivelyFollowCnames(txtResponse)); } return(result); }