Ejemplo n.º 1
0
        public void SoaRecordParseTest()
        {
            const string str  = @"
$TTL 1h                  ; default expiration time of all resource records without their own TTL value
example.com.    IN    SOA   ns.example.com. hostmaster.example.com. (
                              2003080800 ; sn = serial number
                              172800     ; ref = refresh = 2d
                              900        ; ret = update retry = 15m
                              1209600    ; ex = expiry = 2w
                              3600       ; nx = nxdomain ttl = 1h
                              )";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(1, zone.Records.Count);

            Assert.IsAssignableFrom <SoaResourceRecord>(zone.Records.First());

            var record = (SoaResourceRecord)zone.Records.First();

            Assert.AreEqual("example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.SOA, record.Type);
            Assert.AreEqual("ns.example.com", record.NameServer);
            Assert.AreEqual("2003080800", record.SerialNumber);
            Assert.AreEqual(TimeSpan.FromDays(2), record.Refresh);
            Assert.AreEqual(TimeSpan.FromMinutes(15), record.Retry);
            Assert.AreEqual(TimeSpan.FromDays(14), record.Expiry);
            Assert.AreEqual(TimeSpan.FromHours(1), record.Minimum);
        }
Ejemplo n.º 2
0
        public void EmptyLabelParseTest()
        {
            const string str  = @"
$TTL 2h
@	IN	SOA	ns.host.com.	ns2.host.com.	(
			2018042701	; serial
			2h		; refresh
			15m		; update retry
			2w		; expiry
			2h		; minimum
		)
		NS	ns.host.com.
		NS	ns2.host.com.
		MX	20	mail.host.com.
;		IN	TXT	""v = spf1 + mx + include:host.com? all""

        A   10.0.0.1";
            var          zone = DnsZoneFile.Parse(str, "example.com");

            foreach (ResourceRecord rr in zone.Records)
            {
                if (rr.Name.Substring(0, 1) == ".")
                {
                    throw new Exception("Empty label");
                }
            }
        }
Ejemplo n.º 3
0
        public void ParseTest()
        {
            const string str  = @"
; zone fragment example.com
; mail servers in the same zone
; will support incoming email with addresses of the format 
; [email protected]
$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
example.com. IN	CAA 0	iodef		""mailto: [email protected]""
    IN  CAA 0   issue       ""letsencrypt.org""";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(2, zone.Records.Count);

            Assert.IsAssignableFrom <CAAResourceRecord>(zone.Records.First());

            var record = (CAAResourceRecord)zone.Records.First();

            Assert.AreEqual("example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.CAA, record.Type);
            Assert.AreEqual(0, record.Flag);
            Assert.AreEqual("iodef", record.Tag);
            Assert.AreEqual("mailto: [email protected]", record.Value);
        }
Ejemplo n.º 4
0
        public void SrvRecordParseTest()
        {
            const string str  = @"
$ORIGIN example.com.
$TTL 2d ; 172800 secs
; foobar - use old-slow-box or new-fast-box if either is
; available, make three quarters of the logins go to
; new-fast-box.
_foobar._tcp    SRV 0 1 9 old-slow-box.example.com.
                SRV 0 3 9 new-fast-box.example.com.
; if neither old-slow-box or new-fast-box is up, switch to
; using the sysdmin's box and the server
                SRV 1 0 9 sysadmins-box.example.com.
                SRV 1 0 9 server.example.com.
*._tcp          SRV  0 0 0 .
*._udp          SRV  0 0 0 .";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(6, zone.Records.Count);

            Assert.IsAssignableFrom <SrvResourceRecord>(zone.Records.First());

            var record = (SrvResourceRecord)zone.Records.First();

            Assert.AreEqual("_foobar._tcp.example.com", record.Name);
            Assert.AreEqual(null, record.Class);
            Assert.AreEqual(ResourceRecordType.SRV, record.Type);
            Assert.AreEqual(0, record.Priority);
        }
Ejemplo n.º 5
0
        public void MxRecordParseTest()
        {
            const string str  = @"
; zone fragment example.com
; mail servers in the same zone
; will support incoming email with addresses of the format 
; [email protected]
$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
@               IN     MX     10  mail.foo.com.
@               IN     MX     20  mail2.foo.com.";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(2, zone.Records.Count);

            Assert.IsAssignableFrom <MxResourceRecord>(zone.Records.First());

            var record = (MxResourceRecord)zone.Records.First();

            Assert.AreEqual("example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.MX, record.Type);
            Assert.AreEqual(10, record.Preference);
            Assert.AreEqual("mail.foo.com", record.Exchange);
        }
Ejemplo n.º 6
0
        public void ParseTest()
        {
            const string str  = @"
; zone fragment example.com
; mail servers in the same zone
; will support incoming email with addresses of the format 
; [email protected]
$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
sil.example.com. IN SSHFP 2 1 450c7d19d5da9a3a5b7c18992d1fbde15d8dad34";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(1, zone.Records.Count);

            Assert.IsAssignableFrom <SSHFPResourceRecord>(zone.Records.First());

            var record = (SSHFPResourceRecord)zone.Records.First();

            Assert.AreEqual("sil.example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.SSHFP, record.Type);
            Assert.AreEqual(2, record.AlgorithmNumber);
            Assert.AreEqual(1, record.FingerprintType);
            Assert.AreEqual("450c7d19d5da9a3a5b7c18992d1fbde15d8dad34", record.Fingerprint);
        }
Ejemplo n.º 7
0
        public void ParseTest()
        {
            const string str  = @"
; zone fragment example.com
; mail servers in the same zone
; will support incoming email with addresses of the format 
; [email protected]
$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
_443._tcp.keyserver.example.com. IN TLSA 3 1 1 e677073271638e936eb3846c7aacfd3d387b831aa953b7486dc8f6227798f70b";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(1, zone.Records.Count);

            Assert.IsAssignableFrom <TLSAResourceRecord>(zone.Records.First());

            var record = (TLSAResourceRecord)zone.Records.First();

            Assert.AreEqual("_443._tcp.keyserver.example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.TLSA, record.Type);
            Assert.AreEqual(3, record.CertificateUsage);
            Assert.AreEqual(1, record.Selector);
            Assert.AreEqual(1, record.MatchingType);
            Assert.AreEqual("e677073271638e936eb3846c7aacfd3d387b831aa953b7486dc8f6227798f70b", record.CertificateAssociationData);
        }
Ejemplo n.º 8
0
        public void ParseTest()
        {
            const string str = @"
$ORIGIN example.com.     ; designates the start of this zone file in the namespace
$TTL 1h                  ; 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  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
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";

            try {
                var zone = DnsZoneFile.Parse(str);
                Assert.AreEqual(1, zone.Records.OfType <SoaResourceRecord>().Count());
                Assert.AreEqual(2, zone.Records.OfType <NsResourceRecord>().Count());
                Assert.AreEqual(3, zone.Records.OfType <MxResourceRecord>().Count());
                Assert.AreEqual(5, zone.Records.OfType <AResourceRecord>().Count());
                Assert.AreEqual(2, zone.Records.OfType <CNameResourceRecord>().Count());
            } catch (TokenException exc) {
                Console.WriteLine(exc.Token.Position.GetLine());
                throw;
            }
        }
Ejemplo n.º 9
0
        public void TxtRecordParseTest()
        {
            const string str  = @"
$ORIGIN example.com.
; multiple quotes strings on a single line
; generates a single text string of 
; Located in a black hole somewhere
$TTL 1h                  ; default expiration time of all resource records without their own TTL value
joe        IN      TXT    ""Located in a black hole"" "" somewhere""
; multiple quoted strings on multiple lines
joe IN      TXT (""Located in a black hole""
                    "" somewhere over the rainbow"")
; generates a single text string of
; Located in a black hole somewhere over the rainbow";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(2, zone.Records.Count);

            Assert.IsAssignableFrom <TxtResourceRecord>(zone.Records.First());

            var record = (TxtResourceRecord)zone.Records.First();

            Assert.AreEqual("joe.example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.TXT, record.Type);
            Assert.AreEqual("Located in a black hole somewhere", record.Content);
        }
Ejemplo n.º 10
0
        public void AaaaRecordParseTest()
        {
            const string str  = @"
; zone fragment for example.com
$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
joe        IN      AAAA      2001:db8::3  ; joe & www = same ip
www        IN      AAAA      2001:db8::3
; functionally the same as the record above
www.example.com.   AAAA      2001:db8::3
fred  3600 IN      AAAA      2001:db8::4  ; ttl =3600 overrides $TTL default
ftp        IN      AAAA      2001:db8::5 ; round robin with next
           IN      AAAA      2001:db8::6
mail       IN      AAAA      2001:db8::7  ; mail = round robin
mail       IN      AAAA      2001:db8::32
mail       IN      AAAA      2001:db8::33
squat      IN      AAAA      2001:db8:0:0:1::13  ; address in another subnet";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(10, zone.Records.Count);

            Assert.IsAssignableFrom <AaaaResourceRecord>(zone.Records.First());

            var record = (AaaaResourceRecord)zone.Records.First();

            Assert.AreEqual("joe.example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.AAAA, record.Type);
            Assert.AreEqual(IPAddress.Parse("2001:db8::3"), record.Address);
        }
Ejemplo n.º 11
0
        public void MissingOriginTest()
        {
            const string str = @"
; A Records
@	600	IN	A	184.168.221.14
sub	600	IN	A	184.168.221.15
";

            Assert.Throws <TokenException>(() => DnsZoneFile.Parse(str));
        }
Ejemplo n.º 12
0
        public void FitlerTest()
        {
            var zone = new DnsZoneFile();

            zone.Records.Add(new AResourceRecord {
                Name    = "www.example.com",
                Class   = "IN",
                Ttl     = TimeSpan.FromMinutes(15),
                Address = IPAddress.Parse("127.0.0.1")
            });
            zone.Records.Add(new AResourceRecord {
                Name    = "ftp.example.com",
                Class   = "IN",
                Ttl     = TimeSpan.FromMinutes(15),
                Address = IPAddress.Parse("127.0.0.2")
            });
            zone.Records.Add(new AResourceRecord {
                Name    = "example.com",
                Class   = "IN",
                Ttl     = TimeSpan.FromMinutes(15),
                Address = IPAddress.Parse("127.0.0.3")
            });
            zone.Records.Add(new AResourceRecord {
                Name    = "test-example.com",
                Class   = "IN",
                Ttl     = TimeSpan.FromMinutes(15),
                Address = IPAddress.Parse("127.0.0.4")
            });
            zone.Records.Add(new AResourceRecord {
                Name    = "example-test-example.com",
                Class   = "IN",
                Ttl     = TimeSpan.FromMinutes(15),
                Address = IPAddress.Parse("127.0.0.5")
            });

            var filtered = zone.Filter("example.com");

            Assert.AreEqual(3, filtered.Records.Count);
            Assert.IsTrue(filtered.Records.OfType <AResourceRecord>().Any(item => Equals(item.Address, IPAddress.Parse("127.0.0.1"))));
            Assert.IsTrue(filtered.Records.OfType <AResourceRecord>().Any(item => Equals(item.Address, IPAddress.Parse("127.0.0.2"))));
            Assert.IsTrue(filtered.Records.OfType <AResourceRecord>().Any(item => Equals(item.Address, IPAddress.Parse("127.0.0.3"))));


            filtered = zone.Filter("test-example.com");
            Assert.AreEqual(1, filtered.Records.Count);
            Assert.IsTrue(filtered.Records.OfType <AResourceRecord>().Any(item => Equals(item.Address, IPAddress.Parse("127.0.0.4"))));

            filtered = zone.Filter("example-test-example.com");
            Assert.AreEqual(1, filtered.Records.Count);
            Assert.IsTrue(filtered.Records.OfType <AResourceRecord>().Any(item => Equals(item.Address, IPAddress.Parse("127.0.0.5"))));
        }
Ejemplo n.º 13
0
        public void IncludeTest()
        {
            var embedded = new EmbeddedDnsSource(GetType().Assembly, GetType().Namespace + ".Samples", "root_com.zone");
            var zone     = DnsZoneFile.Parse(embedded);

            Assert.AreEqual(2, zone.Records.Count);

            var rootA = zone.Single <AResourceRecord>("root.com");

            Assert.AreEqual(IPAddress.Parse("192.168.0.1"), rootA.Address);

            var wwwA = zone.Single <AResourceRecord>("www.root.com");

            Assert.AreEqual(IPAddress.Parse("192.168.0.2"), wwwA.Address);
        }
Ejemplo n.º 14
0
        public void CAAOutputTest()
        {
            DnsZoneFile zone = new DnsZoneFile();

            CAAResourceRecord testRecord = new CAAResourceRecord();

            testRecord.Name  = "example.com";
            testRecord.Class = "IN";
            testRecord.flag  = 0;
            testRecord.tag   = "iodef";
            testRecord.value = "letsencrypt.org";
            zone.Records.Add(testRecord);
            string sOutput = zone.ToString();

            Assert.AreEqual(";CAA records\r\nexample.com.\tIN\t\tCAA\t0\tiodef\t\"letsencrypt.org\"\t\r\n\r\n", sOutput);
        }
Ejemplo n.º 15
0
        public void EmptyTest()
        {
            const string str = @"
;just single comment
    ;white space and comments

";

            try {
                var zone = DnsZoneFile.Parse(str);
                Assert.AreEqual(0, zone.Records.Count);
            } catch (TokenException exc) {
                Console.WriteLine(exc.Token.Position.GetLine());
                throw;
            }
        }
Ejemplo n.º 16
0
        public void OutputTest()
        {
            var zone = new DnsZoneFile();

            var record = new CAAResourceRecord {
                Name  = "example.com",
                Class = "IN",
                Flag  = 0,
                Tag   = "iodef",
                Value = "letsencrypt.org"
            };

            zone.Records.Add(record);
            string sOutput = zone.ToString();

            Assert.AreEqual(";CAA records\r\nexample.com.\tIN\t\tCAA\t0\tiodef\t\"letsencrypt.org\"\t\r\n\r\n", sOutput);
        }
Ejemplo n.º 17
0
        public void OutputTest()
        {
            var zone = new DnsZoneFile();

            var record = new TLSAResourceRecord {
                Name                       = "_443._tcp.sil.example.com",
                Class                      = "IN",
                CertificateUsage           = 3,
                Selector                   = 1,
                MatchingType               = 2,
                CertificateAssociationData = @"dd5f45b479cc19e697c33c676161df9e6466a9a728584b1c881e18222f9ada31"
            };

            zone.Records.Add(record);
            string sOutput = zone.ToString();

            Assert.AreEqual(";TLSA records\r\n_443._tcp.sil.example.com.\tIN\t\tTLSA\t3\t1\t2\tdd5f45b479cc19e697c33c676161df9e6466a9a728584b1c881e18222f9ada31\t\r\n\r\n", sOutput);
        }
Ejemplo n.º 18
0
        public void OutputTest()
        {
            var zone = new DnsZoneFile();

            var record = new SSHFPResourceRecord
            {
                Name            = "sil.example.com",
                Class           = "IN",
                AlgorithmNumber = 3,
                FingerprintType = 1,
                Fingerprint     = @"450c7d19d5da9a3a5b7c19992d1fbde15d8dad34"
            };

            zone.Records.Add(record);
            string sOutput = zone.ToString();

            Assert.AreEqual(";SSHFP records\r\nsil.example.com.\tIN\t\tSSHFP\t3\t1\t450c7d19d5da9a3a5b7c19992d1fbde15d8dad34\t\r\n\r\n", sOutput);
        }
Ejemplo n.º 19
0
        public void FormatTest()
        {
            var zone = new DnsZoneFile();

            zone.Records.Add(new AResourceRecord {
                Name    = "www.example.com",
                Class   = "IN",
                Ttl     = TimeSpan.FromMinutes(15),
                Address = IPAddress.Parse("127.0.0.1")
            });
            zone.Records.Add(new AResourceRecord {
                Name    = "ftp.example.com",
                Class   = "IN",
                Ttl     = TimeSpan.FromMinutes(15),
                Address = IPAddress.Parse("127.0.0.1")
            });
            Assert.IsNotNull(zone.ToString());
        }
Ejemplo n.º 20
0
        public void ExplicitOriginTest()
        {
            const string str  = @"
; A Records
@	600	IN	A	184.168.221.14
sub	600	IN	A	184.168.221.15
";
            var          zone = DnsZoneFile.Parse(str, "test.com");

            Assert.AreEqual(2, zone.Records.Count);

            Assert.IsAssignableFrom <AResourceRecord>(zone.Records.First());

            var rootRecord = (AResourceRecord)zone.Records.First();

            Assert.AreEqual("test.com", rootRecord.Name);
            var subRecord = (AResourceRecord)zone.Records.Last();

            Assert.AreEqual("sub.test.com", subRecord.Name);
        }
Ejemplo n.º 21
0
        public void CNameRecordParseTest()
        {
            const string str  = @"
; zone fragment for example.com
$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
www        IN      CNAME  server1
ftp        IN      CNAME  server1";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(2, zone.Records.Count);

            Assert.IsAssignableFrom <CNameResourceRecord>(zone.Records.First());

            var record = (CNameResourceRecord)zone.Records.First();

            Assert.AreEqual("www.example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.CNAME, record.Type);
            Assert.AreEqual("server1.example.com", record.CanonicalName);
        }
Ejemplo n.º 22
0
        public void ARecordParseTest()
        {
            const string str  = @"
; zone file snippet
$ORIGIN example.com.
$TTL 2d ; 172800 secs
alice  IN  A   192.168.2.1 ; real host name
ns1    IN   A  192.168.2.1 ; service name
alice  IN   A  192.168.2.1 ; host name (same IPv4)";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(3, zone.Records.Count);

            Assert.IsAssignableFrom <AResourceRecord>(zone.Records.First());

            var record = (AResourceRecord)zone.Records.First();

            Assert.AreEqual("alice.example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.A, record.Type);
            Assert.AreEqual(IPAddress.Parse("192.168.2.1"), record.Address);
        }
Ejemplo n.º 23
0
        public void PtrRecordParseTest()
        {
            const string str  = @"
$TTL 2d ; 172800 secs
$ORIGIN 23.168.192.IN-ADDR.ARPA.
2             IN      PTR     joe.example.com. ; FDQN
15            IN      PTR     www.example.com.
17            IN      PTR     bill.example.com.
74            IN      PTR     fred.example.com.";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(4, zone.Records.Count);

            Assert.IsAssignableFrom <PtrResourceRecord>(zone.Records.First());

            var record = (PtrResourceRecord)zone.Records.First();

            Assert.AreEqual("2.23.168.192.IN-ADDR.ARPA", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.PTR, record.Type);
            Assert.AreEqual("joe.example.com", record.HostName);
        }
Ejemplo n.º 24
0
        public void NSLeadingWhitespaceError()
        {
            var zone = new DnsZoneFile();

            zone.Records.Add(new NsResourceRecord
            {
                Name       = "example.com",
                Class      = "IN",
                Ttl        = TimeSpan.FromMinutes(15),
                NameServer = "ns1.host.com"
            });
            zone.Records.Add(new NsResourceRecord
            {
                Name       = "example.com",
                Class      = "IN",
                Ttl        = TimeSpan.FromMinutes(15),
                NameServer = "ns2.host.com",
            });
            string sOutput = zone.ToString();

            Assert.AreEqual(";NS records\r\nexample.com.\tIN\t15m\tNS\tns1.host.com.\t\r\nexample.com.\tIN\t15m\tNS\tns2.host.com.\t\r\n\r\n", sOutput);
        }
Ejemplo n.º 25
0
        public void NsRecordParseTest()
        {
            const string str  = @"
; zone fragment example.com
; mail servers in the same zone
; will support incoming email with addresses of the format 
; [email protected]
$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
@               IN      NS     ns1.example.net.
@               IN      NS     ns1.example.org.";
            var          zone = DnsZoneFile.Parse(str);

            Assert.AreEqual(2, zone.Records.Count);

            Assert.IsAssignableFrom <NsResourceRecord>(zone.Records.First());

            var record = (NsResourceRecord)zone.Records.First();

            Assert.AreEqual("example.com", record.Name);
            Assert.AreEqual("IN", record.Class);
            Assert.AreEqual(ResourceRecordType.NS, record.Type);
            Assert.AreEqual("ns1.example.net", record.NameServer);
        }
Ejemplo n.º 26
0
 public DnsZoneParseContext(IEnumerable <Token> tokens, IDnsSource source)
 {
     Source = source;
     Zone   = new DnsZoneFile();
     Tokens = new Queue <Token>(tokens);
 }
Ejemplo n.º 27
0
        public async Task Parse2Test()
        {
            var zone = await DnsZoneFile.LoadFromFileAsync(@"Samples/domain.com.zone", "domain.com");

            Assert.IsNotNull(zone);
        }
Ejemplo n.º 28
0
        public async Task ParseWhitespace()
        {
            var zone = await DnsZoneFile.LoadFromFileAsync(@"Samples/whitespace.com.zone", "whitespace.com");

            Assert.IsNotNull(zone);
        }
Ejemplo n.º 29
0
 public async Task ParseCAATest()
 {
     var zone = await DnsZoneFile.LoadFromFileAsync(@"Samples/caatest.com.zone", "domain.com");
 }
Ejemplo n.º 30
0
 public DnsZoneFormatterContext(DnsZoneFile zone, StringBuilder sb)
 {
     Sb   = sb;
     Zone = zone;
 }