Exemple #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ResourceRecordInfo" /> class.
 /// </summary>
 /// <param name="domainName">The <see cref="DnsString" /> used by the query.</param>
 /// <param name="recordType">Type of the record.</param>
 /// <param name="recordClass">The record class.</param>
 /// <param name="timeToLive">The time to live.</param>
 /// <param name="rawDataLength">Length of the raw data.</param>
 /// <exception cref="System.ArgumentNullException">If <paramref name="domainName" /> is null or empty.</exception>
 public ResourceRecordInfo(DnsString domainName, ResourceRecordType recordType, QueryClass recordClass, int timeToLive, int rawDataLength)
 {
     DomainName    = domainName ?? throw new ArgumentNullException(nameof(domainName));
     RecordType    = recordType;
     RecordClass   = recordClass;
     TimeToLive    = timeToLive;
     RawDataLength = rawDataLength;
 }
Exemple #2
0
 public SrvRecord(ResourceRecordInfo info, ushort priority, ushort weigth, ushort port, DnsString target)
     : base(info)
 {
     Priority = priority;
     Weight   = weigth;
     Port     = port;
     Target   = target;
 }
        public void DnsString_Equals()
        {
            var       val   = "Aäb.bÜlöb.cscöälüpqläö.d.com.";
            DnsString name  = DnsString.ParseQueryString(val);
            DnsString name2 = DnsString.ParseQueryString(val);

            Assert.True(name.Equals(name2));
        }
        public void DnsString_EqualsString()
        {
            var       val   = "abc.";
            DnsString name  = DnsString.ParseQueryString(val);
            string    name2 = val;

            Assert.True(name.Equals(name2));
        }
        public void QueryName_AcceptsService()
        {
            var name     = DnsString.ParseQueryString("_abc._xyz._example.com");
            var strValue = name.ToString();

            // ending
            Assert.Equal("_abc._xyz._example.com.", strValue);
        }
        public void DnsString_NotEqualsNull()
        {
            var       name  = DnsString.Parse("abc");
            DnsString name2 = null;

            // ReSharper disable once ExpressionIsAlwaysNull
            Assert.False(name.Equals(name2));
        }
        public void DnsString_EqualsString()
        {
            var val   = "abc.";
            var name  = DnsString.Parse(val);
            var name2 = val;

            Assert.True(name.ToString().Equals(name2));
        }
        public void DnsString_Hashcode()
        {
            var val   = "Aäb.bÜlöb.cscöälüpqläö.d.com.";
            var name  = DnsString.Parse(val);
            var name2 = DnsString.Parse(val);

            Assert.True(name.GetHashCode().Equals(name2.GetHashCode()));
        }
        public void DnsString_IllegalEscape()
        {
            Action act = () => DnsString.ParseQueryString("abc.zy\\.z.com");

            var ex = Record.Exception(act);

            Assert.Contains("not a valid host name", ex.Message);
        }
Exemple #10
0
        public void DnsString_HashcodeNot()
        {
            var       val   = "Aäb.bÜlöb.cscöälüpqläö.d.com.";
            DnsString name  = DnsString.Parse(val);
            DnsString name2 = DnsString.Parse("asdasd");

            Assert.False(name.GetHashCode().Equals(name2.GetHashCode()));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ResourceRecordInfo" /> class.
 /// </summary>
 /// <param name="domainName">The <see cref="DnsString" /> used by the query.</param>
 /// <param name="recordType">Type of the record.</param>
 /// <param name="recordClass">The record class.</param>
 /// <param name="timeToLive">The time to live.</param>
 /// <param name="rawDataLength">Length of the raw data.</param>
 /// <exception cref="System.ArgumentNullException">If <paramref name="domainName" /> is null or empty.</exception>
 public ResourceRecordInfo(DnsString domainName, ResourceRecordType recordType, QueryClass recordClass, int timeToLive, int rawDataLength)
 {
     DomainName        = domainName ?? throw new ArgumentNullException(nameof(domainName));
     RecordType        = recordType;
     RecordClass       = recordClass;
     RawDataLength     = rawDataLength;
     InitialTimeToLive = timeToLive;
     _ticks            = (int)(Environment.TickCount / 1000d);
 }
Exemple #12
0
        public void DnsString_ReadPuny_IDNA2003_Invalid()
        {
            // IDNA new would be: "xn--fuball-cta.example"
            var       expected = "fussball.example.";
            var       val      = "fußball.example";
            DnsString result   = DnsString.Parse(val);

            Assert.Equal(expected, result.Value);
        }
Exemple #13
0
        public void DatagramReader_LabelTest_DnsName2()
        {
            var data   = ReferenceBitData.Concat(new byte[] { 192, 23 });
            var reader = new DnsDatagramReader(new ArraySegment <byte>(data.ToArray()));

            reader.Index = 36;
            DnsString name = reader.ReadDnsName();

            Assert.Equal(name.Value, "eeeee.dd.c.aa.com.");
        }
Exemple #14
0
        public void DatagramReader_LabelTest_DnsName_LengthOutOfBounds()
        {
            var data   = ReferenceBitData.Concat(new byte[] { 192, 23 });
            var reader = new DnsDatagramReader(new ArraySegment <byte>(data.ToArray()));

            reader.Advance(36);
            DnsString name = reader.ReadDnsName();

            Assert.Equal("eeeee.dd.c.aa.com.", name.Value);
        }
        public void DnsRecordFactory_ARecord()
        {
            var data    = new byte[] { 23, 24, 25, 26 };
            var factory = GetFactory(data, out var reader);
            var info    = new ResourceRecord(DnsString.Parse("example.com"), ARecord.ResourceRecordType, QueryClass.In, 0, data.Length);

            var result = factory.GetRecord(info, reader) as ARecord ?? throw new Exception();

            Assert.Equal(result.Address, IPAddress.Parse("23.24.25.26"));
        }
        public void DnsRecordFactory_AAAARecordNotEnoughData()
        {
            var data    = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
            var factory = GetFactory(data, out var reader);
            var info    = new ResourceRecord(DnsString.Parse("example.com"), AaaaRecord.ResourceRecordType, QueryClass.In, 0, data.Length);

            Action act = () => factory.GetRecord(info, reader);

            Assert.ThrowsAny <IndexOutOfRangeException>(act);
        }
        public void DnsRecordFactory_SRVRecordEmpty()
        {
            var data    = new byte[0];
            var factory = GetFactory(data, out var reader);
            var info    = new ResourceRecord(DnsString.Parse("query.example.com"), SrvRecord.ResourceRecordType, QueryClass.In, 0, data.Length);

            Action act = () => factory.GetRecord(info, reader);

            Assert.ThrowsAny <IndexOutOfRangeException>(act);
        }
        public void DnsRecordFactory_PTRRecordEmptyName()
        {
            var data    = new byte[] { 0 };
            var factory = GetFactory(data, out var reader);
            var info    = new ResourceRecord(DnsString.Parse("query.example.com"), PtrRecord.ResourceRecordType, QueryClass.In, 0, data.Length);

            var result = factory.GetRecord(info, reader) as PtrRecord ?? throw new Exception();

            Assert.Equal(".", result.PtrDomainName.Value);
        }
        public void DnsRecordFactory_TXTRecordWrongTextLength()
        {
            var data    = new byte[0];
            var factory = GetFactory(data, out var reader);
            var info    = new ResourceRecord(DnsString.Parse("query.example.com"), TxtRecord.ResourceRecordType, QueryClass.In, 0, data.Length);

            var result = factory.GetRecord(info, reader) as TxtRecord ?? throw new Exception();

            Assert.Empty(result.EscapedText);
        }
Exemple #20
0
        public MgRecord(ResourceRecordInfo info, DnsString name)
            : base(info)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            MgName = name;
        }
Exemple #21
0
        public PtrRecord(ResourceRecordInfo info, DnsString ptrDName)
            : base(info)
        {
            if (ptrDName == null)
            {
                throw new ArgumentNullException(nameof(ptrDName));
            }

            PtrDomainName = ptrDName;
        }
Exemple #22
0
        public void Ip_Arpa_v4_Valid()
        {
            var ip     = IPAddress.Parse("8.8.4.4");
            var client = new LookupClient(NameServer.GooglePublicDns);

            var result      = DnsString.Parse(ip.GetArpaName());
            var queryResult = client.QueryReverse(ip);

            Assert.Equal("4.4.8.8.in-addr.arpa.", result);
            Assert.Contains("dns.google", queryResult.Answers.PtrRecords().First().PtrDomainName);
        }
        public void DnsRecordFactory_AAAARecord()
        {
            var data    = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            var factory = GetFactory(data, out var reader);
            var info    = new ResourceRecord(DnsString.Parse("example.com"), AaaaRecord.ResourceRecordType, QueryClass.In, 0, data.Length);

            var result = factory.GetRecord(info, reader) as AaaaRecord ?? throw new Exception();

            Assert.Equal(result.Address, IPAddress.Parse("102:304:506:708:90a:b0c:d0e:f10"));
            Assert.Equal(result.Address.GetAddressBytes(), data);
        }
        public void DnsRecordFactory_MXRecordEmptyName()
        {
            var data    = new byte[] { 1, 0, 0 };
            var factory = GetFactory(data, out var reader);
            var info    = new ResourceRecord(DnsString.Parse("query.example.com"), MxRecord.ResourceRecordType, QueryClass.In, 0, data.Length);

            var result = factory.GetRecord(info, reader) as MxRecord ?? throw new Exception();

            Assert.Equal(256, result.Preference);
            Assert.Equal(".", result.Exchange.Value);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SoaRecord" /> class.
 /// </summary>
 /// <param name="info">The information.</param>
 /// <param name="mName">Name original domain name.</param>
 /// <param name="rName">Name responsible domain name.</param>
 /// <param name="serial">The serial number.</param>
 /// <param name="refresh">The refresh time.</param>
 /// <param name="retry">The retry time.</param>
 /// <param name="expire">The expire time.</param>
 /// <param name="minimum">The minimum TTL.</param>
 /// <exception cref="System.ArgumentNullException">
 /// If <paramref name="info"/> or <paramref name="mName"/> or <paramref name="rName"/> is null.
 /// </exception>
 public SoaRecord(ResourceRecordInfo info, DnsString mName, DnsString rName, uint serial, uint refresh, uint retry, uint expire, uint minimum)
     : base(info)
 {
     MName   = mName ?? throw new ArgumentNullException(nameof(mName));
     RName   = rName ?? throw new ArgumentNullException(nameof(rName));
     Serial  = serial;
     Refresh = refresh;
     Retry   = retry;
     Expire  = expire;
     Minimum = minimum;
 }
Exemple #26
0
        public void Ip_Arpa_v4_Valid()
        {
            var ip     = IPAddress.Parse("127.0.0.1");
            var client = new LookupClient();

            var result      = DnsString.Parse(ip.GetArpaName());
            var queryResult = client.QueryReverse(ip);

            Assert.Equal("1.0.0.127.in-addr.arpa.", result);
            Assert.Equal("localhost.", queryResult.Answers.PtrRecords().First().PtrDomainName);
        }
Exemple #27
0
        public MxRecord(ResourceRecordInfo info, ushort preference, DnsString domainName)
            : base(info)
        {
            if (domainName == null)
            {
                throw new ArgumentNullException(nameof(domainName));
            }

            Preference = preference;
            Exchange   = domainName;
        }
Exemple #28
0
        public void Ip_Arpa_v6_Valid()
        {
            var ip     = NameServer.GooglePublicDns2IPv6.Address;
            var client = new LookupClient(NameServer.GooglePublicDnsIPv6);

            var result      = DnsString.Parse(ip.GetArpaName());
            var queryResult = client.QueryReverse(ip);

            Assert.Equal("8.8.8.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.8.4.0.6.8.4.1.0.0.2.ip6.arpa.", result);
            Assert.Contains("dns.google", queryResult.Answers.PtrRecords().First().PtrDomainName);
        }
Exemple #29
0
 public SoaRecord(ResourceRecordInfo info, DnsString mName, DnsString rName, uint serial, uint refresh, uint retry, uint expire, uint minimum)
     : base(info)
 {
     MName   = mName;
     RName   = rName;
     Serial  = serial;
     Refresh = refresh;
     Retry   = retry;
     Expire  = expire;
     Minimum = minimum;
 }
        public void DnsRecordFactory_PTRRecord()
        {
            var name   = DnsString.Parse("result.example.com");
            var writer = new DnsDatagramWriter();

            writer.WriteHostName(name.Value);
            var factory = GetFactory(writer.Data.ToArray());
            var info    = new ResourceRecordInfo("query.example.com", ResourceRecordType.PTR, QueryClass.IN, 0, writer.Data.Count);

            var result = factory.GetRecord(info) as PtrRecord;

            Assert.Equal(result.PtrDomainName, name);
        }