Ejemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DnsQueryResult"/> class.
        /// </summary>
        /// <param name="response">The response.</param>
        internal DnsQueryResult(DnsClient.IDnsResponse response)
            : this()
        {
            Id = response.Id;
            IsAuthoritativeServer = response.IsAuthorativeServer;
            IsRecursionAvailable  = response.IsRecursionAvailable;
            IsTruncated           = response.IsTruncated;
            OperationCode         = response.OperationCode;
            ResponseCode          = response.ResponseCode;

            if (response.AnswerRecords != null)
            {
                foreach (var record in response.AnswerRecords)
                {
                    AnswerRecords.Add(new DnsRecord(record));
                }
            }

            if (response.AuthorityRecords != null)
            {
                foreach (var record in response.AuthorityRecords)
                {
                    AuthorityRecords.Add(new DnsRecord(record));
                }
            }

            if (response.AdditionalRecords != null)
            {
                foreach (var record in response.AdditionalRecords)
                {
                    AdditionalRecords.Add(new DnsRecord(record));
                }
            }
        }
Ejemplo n.º 2
0
        public string GetResponseString()
        {
            UpdateHeader();
            string allQuestions = string.Join("; ", AnswerRecords.Select(d => d.ToStringIPAddressOnly()));

            return($"{allQuestions}");
        }
Ejemplo n.º 3
0
        protected override void FinishParsing()
        {
            Prequisites =
                AnswerRecords.ConvertAll <PrequisiteBase>(
                    record =>
            {
                if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
                {
                    return(new RecordExistsPrequisite(record.Name, record.RecordType));
                }
                else if (record.RecordClass == RecordClass.Any)
                {
                    return(new RecordExistsPrequisite(record));
                }
                else if ((record.RecordClass == RecordClass.None) && (record.RecordDataLength == 0))
                {
                    return(new RecordNotExistsPrequisite(record.Name, record.RecordType));
                }
                else if ((record.RecordClass == RecordClass.Any) && (record.RecordType == RecordType.Any))
                {
                    return(new NameIsInUsePrequisite(record.Name));
                }
                else if ((record.RecordClass == RecordClass.None) && (record.RecordType == RecordType.Any))
                {
                    return(new NameIsNotInUsePrequisite(record.Name));
                }
                else
                {
                    return(null);
                }
            }).Where(prequisite => (prequisite != null)).ToList();

            Updates =
                AuthorityRecords.ConvertAll <UpdateBase>(
                    record =>
            {
                if (record.TimeToLive != 0)
                {
                    return(new AddRecordUpdate(record));
                }
                else if ((record.RecordType == RecordType.Any) && (record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
                {
                    return(new DeleteAllRecordsUpdate(record.Name));
                }
                else if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
                {
                    return(new DeleteRecordUpdate(record.Name, record.RecordType));
                }
                else if (record.RecordClass == RecordClass.None)
                {
                    return(new DeleteRecordUpdate(record));
                }
                else
                {
                    return(null);
                }
            }).Where(update => (update != null)).ToList();
        }
Ejemplo n.º 4
0
        protected override void FinishParsing()
        {
            /*
             *          Prequisites =
             *                  AnswerRecords.ConvertAll<PrequisiteBase>(
             *                          record =>
             *                          {
             *                                  if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
             *                                  {
             *                                          return new RecordExistsPrequisite(record.Name, record.RecordType);
             *                                  }
             *                                  else if (record.RecordClass == RecordClass.Any)
             *                                  {
             *                                          return new RecordExistsPrequisite(record);
             *                                  }
             *                                  else if ((record.RecordClass == RecordClass.None) && (record.RecordDataLength == 0))
             *                                  {
             *                                          return new RecordNotExistsPrequisite(record.Name, record.RecordType);
             *                                  }
             *                                  else if ((record.RecordClass == RecordClass.Any) && (record.RecordType == RecordType.Any))
             *                                  {
             *                                          return new NameIsInUsePrequisite(record.Name);
             *                                  }
             *                                  else if ((record.RecordClass == RecordClass.None) && (record.RecordType == RecordType.Any))
             *                                  {
             *                                          return new NameIsNotInUsePrequisite(record.Name);
             *                                  }
             *                                  else
             *                                  {
             *                                          return null;
             *                                  }
             *                          }).Where(prequisite => (prequisite != null)).ToList();
             */

            Prequisites = AnswerRecords.Select(record => {
                PrequisiteBase ret = null;

                if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
                {
                    ret = new RecordExistsPrequisite(record.Name, record.RecordType);
                }
                else if (record.RecordClass == RecordClass.Any)
                {
                    ret = new RecordExistsPrequisite(record);
                }
                else if ((record.RecordClass == RecordClass.None) && (record.RecordDataLength == 0))
                {
                    ret = new RecordNotExistsPrequisite(record.Name, record.RecordType);
                }
                else if ((record.RecordClass == RecordClass.Any) && (record.RecordType == RecordType.Any))
                {
                    ret = new NameIsInUsePrequisite(record.Name);
                }
                else if ((record.RecordClass == RecordClass.None) && (record.RecordType == RecordType.Any))
                {
                    ret = new NameIsNotInUsePrequisite(record.Name);
                }

                return(ret);
            }).Where(prequisite => (prequisite != null)).ToList();

            /*
             * Updates =
             *                  AuthorityRecords.ConvertAll<UpdateBase>(
             *                          record =>
             *                          {
             *                                  if (record.TimeToLive != 0)
             *                                  {
             *                                          return new AddRecordUpdate(record);
             *                                  }
             *                                  else if ((record.RecordType == RecordType.Any) && (record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
             *                                  {
             *                                          return new DeleteAllRecordsUpdate(record.Name);
             *                                  }
             *                                  else if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
             *                                  {
             *                                          return new DeleteRecordUpdate(record.Name, record.RecordType);
             *                                  }
             *                                  else if (record.RecordClass == RecordClass.None)
             *                                  {
             *                                          return new DeleteRecordUpdate(record);
             *                                  }
             *                                  else
             *                                  {
             *                                          return null;
             *                                  }
             *                          }).Where(update => (update != null)).ToList();
             */

            Updates = AnswerRecords.Select(record => {
                UpdateBase ret = null;

                if (record.TimeToLive != 0)
                {
                    ret = new AddRecordUpdate(record);
                }
                else if ((record.RecordType == RecordType.Any) && (record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
                {
                    ret = new DeleteAllRecordsUpdate(record.Name);
                }
                else if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0))
                {
                    ret = new DeleteRecordUpdate(record.Name, record.RecordType);
                }
                else if (record.RecordClass == RecordClass.None)
                {
                    ret = new DeleteRecordUpdate(record);
                }
                else
                {
                    ret = null;
                }

                return(ret);
            }).Where(update => (update != null)).ToList();
        }