Get() public method

public Get ( Domain domain, RecordType type ) : IList
domain Domain
type RecordType
return IList
Beispiel #1
0
        protected virtual IResponse ResolveLocal(Request request)
        {
            Response response = Response.FromRequest(request);

            foreach (Question question in request.Questions)
            {
                IList <IResourceRecord> answers = masterFile.Get(question);

                if (answers.Count > 0)
                {
                    Merge(response.AnswerRecords, answers);
                }
                else
                {
                    IResponse answer = ResolveRemote(request);
                    foreach (var ans in answer.AnswerRecords)
                    {
                        masterFile.Add(ans);
                    }
                    return(answer);
                }
            }

            return(response);
        }
Beispiel #2
0
        protected virtual IResponse ResolveLocal(Request request)
        {
            Console.WriteLine("Request From: " + local.Address.ToString());

            Response response = Response.FromRequest(request);

            foreach (Question question in request.Questions)
            {
                IList <IResourceRecord> answers = masterFile.Get(question);

                if (answers.Count > 0)
                {
                    Merge(response.AnswerRecords, answers);
                }
            }

            return(response);
        }
Beispiel #3
0
        protected virtual async Task <IResponse> ResolveLocal(Request request)
        {
            Response response = Response.FromRequest(request);

            foreach (Question question in request.Questions)
            {
                IList <IResourceRecord> answers = masterFile.Get(question);

                if (answers.Count > 0)
                {
                    Merge(response.AnswerRecords, answers);
                }
                else
                {
                    return(await ResolveRemote(request));
                }
            }

            return(response);
        }
Beispiel #4
0
        protected virtual IResponse ResolveLocal(Request request)
        {
            Response response = Response.FromRequest(request);

            foreach (Question question in request.Questions)
            {
                IList <IResourceRecord> answers = masterFile.Get(question);

                if (answers.Count > 0)
                {
                    Merge(response.AnswerRecords, answers);
                }
                else
                {
                    if (WhiteList.Read().Any(x => x == question.Name.ToString()))
                    {
                        return(ResolveFromIsp(request));
                    }
                    return(ResolveFromGlobal(request));
                }
            }

            return(response);
        }
Beispiel #5
0
        protected virtual async Task <IResponse> ResolveLocal(Request request)
        {
            Response response = Response.FromRequest(request);

            foreach (Question question in request.Questions)
            {
                IList <IResourceRecord> answers = masterFile.Get(question);

                if (answers.Count > 0)
                {
                    Merge(response.AnswerRecords, answers);
                }
                else
                {
                    if (!LocalOnly)
                    {
                        return(await ResolveRemote(request));
                    }
                    else if (RedirectUnknownToLocal && question.Type == RecordType.A)
                    {
                        IPAddress answerIP;
                        IPAddress.TryParse(LocalIP, out answerIP);

                        if (answerIP != null)
                        {
                            IList <IResourceRecord> entries      = new List <IResourceRecord>();
                            IResourceRecord         fakeResponse = new IPAddressResourceRecord(request.Questions[0].Name, answerIP);
                            entries.Add(fakeResponse);
                            Merge(response.AnswerRecords, entries);
                        }
                    }
                }
            }

            return(response);
        }