コード例 #1
0
        public void ReadResourceWithPreviousEscapedDomain()
        {
            var text   = @"
emanon\126.org A 127.0.0.1
           AAAA ::1
";
            var reader = new PresentationReader(new StringReader(text));
            var a      = reader.ReadResourceRecord();

            Assert.AreEqual("emanon~.org", a.Name);
            Assert.AreEqual(DnsClass.IN, a.Class);
            Assert.AreEqual(DnsType.A, a.Type);
            Assert.AreEqual(ResourceRecord.DefaultTTL, a.TTL);
            Assert.IsInstanceOfType(a, typeof(ARecord));
            Assert.AreEqual(2, a.Name.Labels.Count);

            var aaaa = reader.ReadResourceRecord();

            Assert.AreEqual("emanon~.org", aaaa.Name);
            Assert.AreEqual(DnsClass.IN, aaaa.Class);
            Assert.AreEqual(DnsType.AAAA, aaaa.Type);
            Assert.AreEqual(ResourceRecord.DefaultTTL, aaaa.TTL);
            Assert.IsInstanceOfType(aaaa, typeof(AAAARecord));
            Assert.AreEqual(2, a.Name.Labels.Count);
        }
コード例 #2
0
        public void ReadResourceWithUnknownType()
        {
            var reader   = new PresentationReader(new StringReader("me CH TYPE1234 \\# 0"));
            var resource = reader.ReadResourceRecord();

            Assert.AreEqual("me", resource.Name);
            Assert.AreEqual(DnsClass.CH, resource.Class);
            Assert.AreEqual(1234, (int)resource.Type);
            Assert.IsInstanceOfType(resource, typeof(UnknownRecord));
        }
コード例 #3
0
        public void ReadResourceWithUnknownClass()
        {
            var reader   = new PresentationReader(new StringReader("me CLASS1234 A 127.0.0.1"));
            var resource = reader.ReadResourceRecord();

            Assert.AreEqual("me", resource.Name);
            Assert.AreEqual(1234, (int)resource.Class);
            Assert.AreEqual(DnsType.A, resource.Type);
            Assert.IsInstanceOfType(resource, typeof(ARecord));
        }
コード例 #4
0
        public void ReadResourceWithClassAndTTL()
        {
            var reader   = new PresentationReader(new StringReader("me CH 63 A 127.0.0.1"));
            var resource = reader.ReadResourceRecord();

            Assert.AreEqual("me", resource.Name);
            Assert.AreEqual(DnsClass.CH, resource.Class);
            Assert.AreEqual(DnsType.A, resource.Type);
            Assert.AreEqual(TimeSpan.FromSeconds(63), resource.TTL);
            Assert.IsInstanceOfType(resource, typeof(ARecord));
        }
コード例 #5
0
        public void ReadResourceWithNameOfClass()
        {
            var reader   = new PresentationReader(new StringReader("CH A 127.0.0.1"));
            var resource = reader.ReadResourceRecord();

            Assert.AreEqual("CH", resource.Name);
            Assert.AreEqual(DnsClass.IN, resource.Class);
            Assert.AreEqual(DnsType.A, resource.Type);
            Assert.AreEqual(ResourceRecord.DefaultTTL, resource.TTL);
            Assert.IsInstanceOfType(resource, typeof(ARecord));
        }
コード例 #6
0
        public void ReadResourceWithTTL()
        {
            var text     = @"
$TTL 120 ; 2 minutes\r\n
emanon.org PTR localhost
";
            var reader   = new PresentationReader(new StringReader(text));
            var resource = reader.ReadResourceRecord();

            Assert.AreEqual("emanon.org", resource.Name);
            Assert.AreEqual(DnsClass.IN, resource.Class);
            Assert.AreEqual(DnsType.PTR, resource.Type);
            Assert.AreEqual(TimeSpan.FromMinutes(2), resource.TTL);
            Assert.IsInstanceOfType(resource, typeof(PTRRecord));
        }
コード例 #7
0
        public void ReadResourceWithOrigin()
        {
            var text     = @"
$ORIGIN emanon.org. ; no such place\r\n
@ PTR localhost
";
            var reader   = new PresentationReader(new StringReader(text));
            var resource = reader.ReadResourceRecord();

            Assert.AreEqual("emanon.org", resource.Name);
            Assert.AreEqual(DnsClass.IN, resource.Class);
            Assert.AreEqual(DnsType.PTR, resource.Type);
            Assert.AreEqual(ResourceRecord.DefaultTTL, resource.TTL);
            Assert.IsInstanceOfType(resource, typeof(PTRRecord));
        }
コード例 #8
0
        public void ReadZoneFile()
        {
            var text      = @"
$ORIGIN example.com.     ; designates the start of this zone file in the namespace
$TTL 3600                  ; default expiration time of all resource records without their own TTL value
; example.com.  IN  SOA   ns.example.com. username.example.com. ( 2007120710 1d 2h 4w 1h )
example.com.  IN  SOA   ns.example.com. username.example.com. ( 2007120710 1 2 4 1 )
example.com.  IN  NS    ns                    ; ns.example.com is a nameserver for example.com
example.com.  IN  NS    ns.somewhere.example. ; ns.somewhere.example is a backup nameserver for example.com
example.com.  IN  MX    10 mail.example.com.  ; mail.example.com is the mailserver for example.com
@             IN  MX    20 mail2.example.com. ; equivalent to above line, '@' represents zone origin
@             IN  MX    50 mail3              ; equivalent to above line, but using a relative host name
example.com.  IN  A     192.0.2.1             ; IPv4 address for example.com
              IN  AAAA  2001:db8:10::1        ; IPv6 address for example.com
ns            IN  A     192.0.2.2             ; IPv4 address for ns.example.com
              IN  AAAA  2001:db8:10::2        ; IPv6 address for ns.example.com
www           IN  CNAME example.com.          ; www.example.com is an alias for example.com
wwwtest       IN  CNAME www                   ; wwwtest.example.com is another alias for www.example.com mail          IN  A     192.0.2.3             ; IPv4 address for mail.example.com
mail          IN  A     192.0.2.3             ; IPv4 address for mail.example.com
mail2         IN  A     192.0.2.4             ; IPv4 address for mail2.example.com
mail3         IN  A     192.0.2.5             ; IPv4 address for mail3.example.com
";
            var reader    = new PresentationReader(new StringReader(text));
            var resources = new List <ResourceRecord>();

            while (true)
            {
                var r = reader.ReadResourceRecord();
                if (r == null)
                {
                    break;
                }
                resources.Add(r);
            }
            Assert.AreEqual(15, resources.Count);
        }
コード例 #9
0
        public void ReadResourceMissingName()
        {
            var reader = new PresentationReader(new StringReader("  NS ns1"));

            ExceptionAssert.Throws <InvalidDataException>(() => reader.ReadResourceRecord());
        }
コード例 #10
0
ファイル: ResourceRecord.cs プロジェクト: schmitch/net-dns
 /// <inheritdoc />
 public ResourceRecord Read(PresentationReader reader)
 {
     return(reader.ReadResourceRecord());
 }