Exemplo n.º 1
0
        public async Task Query_SecureEU()
        {
            using (var dot = new DotClient
            {
                Servers = new[]
                {
                    new DotEndPoint
                    {
                        Hostname = "securedns.eu",
                        Pins = new[] { "h3mufC43MEqRD6uE4lz6gAgULZ5/riqH/E+U+jE3H8g=" },
                        Address = IPAddress.Parse("146.185.167.43")
                    },
                }
            })
            {
                var query = new Message {
                    RD = true
                };
                query.Questions.Add(new Question {
                    Name = "ipfs.io", Type = DnsType.TXT
                });
                var response = await dot.QueryAsync(query);

                Assert.IsNotNull(response);
                Assert.AreNotEqual(0, response.Answers.Count);
            }
        }
Exemplo n.º 2
0
        public async Task Query_OneDeadServer()
        {
            using (var dot = new DotClient
            {
                Servers = new[]
                {
                    new DotEndPoint
                    {
                        Address = IPAddress.Parse("127.0.0.1"),
                        Port = 8530
                    },
                    new DotEndPoint
                    {
                        Hostname = "cloudflare-dns.com",
                        Address = IPAddress.Parse("1.1.1.1")
                    }
                }
            })
            {
                var query = new Message {
                    RD = true
                };
                query.Questions.Add(new Question {
                    Name = "ipfs.io", Type = DnsType.TXT
                });
                var response = await dot.QueryAsync(query);

                Assert.IsNotNull(response);
                Assert.AreNotEqual(0, response.Answers.Count);
            }
        }
Exemplo n.º 3
0
        public async Task Query_Google()
        {
            using (var dot = new DotClient
            {
                Servers = new[]
                {
                    new DotEndPoint
                    {
                        Hostname = "dns.google",
                        Address = IPAddress.Parse("8.8.8.8")
                    }
                }
            })
            {
                var query = new Message {
                    RD = true
                };
                query.Questions.Add(new Question {
                    Name = "ipfs.io", Type = DnsType.TXT
                });
                var response = await dot.QueryAsync(query);

                Assert.IsNotNull(response);
                Assert.AreNotEqual(0, response.Answers.Count);
            }
        }
Exemplo n.º 4
0
        public async Task Query_Cloudflare_IPv6()
        {
            if (!SupportsIPv6)
            {
                Assert.Inconclusive("IPv6 not supported by OS.");
            }
            using (var dot = new DotClient
            {
                Servers = new[]
                {
                    new DotEndPoint
                    {
                        Hostname = "cloudflare-dns.com",
                        Address = IPAddress.Parse("2606:4700:4700::1111")
                    }
                }
            })
            {
                var query = new Message {
                    RD = true
                };
                query.Questions.Add(new Question {
                    Name = "ipfs.io", Type = DnsType.TXT
                });
                var response = await dot.QueryAsync(query);

                Assert.IsNotNull(response);
                Assert.AreNotEqual(0, response.Answers.Count);
            }
        }
Exemplo n.º 5
0
 public void Query_InvalidServer_Hostname()
 {
     using (var dot = new DotClient
     {
         Servers = new[]
         {
             new DotEndPoint
             {
                 Hostname = "bad-cloudflare-dns.com", // bad
                 Address = IPAddress.Parse("1.1.1.1")
             }
         }
     })
     {
         var query = new Message {
             RD = true
         };
         query.Questions.Add(new Question {
             Name = "emanon.noname.google.com", Type = DnsType.A
         });
         ExceptionAssert.Throws <Exception>(() =>
         {
             var _ = dot.QueryAsync(query).Result;
         });
     }
 }
Exemplo n.º 6
0
 public void Resolve_Unknown()
 {
     using (var dot = new DotClient())
     {
         ExceptionAssert.Throws <IOException>(() =>
         {
             var _ = dot.ResolveAsync("emanon.noname").Result;
         });
     }
 }
Exemplo n.º 7
0
        public void Resolve()
        {
            using (var dot = new DotClient())
            {
                var addresses = dot.ResolveAsync("github.com").Result.ToArray();
                Assert.AreNotEqual(0, addresses.Length);

                addresses = dot.ResolveAsync("ipfs.io").Result.ToArray();
                Assert.AreNotEqual(0, addresses.Length);
            }
        }
Exemplo n.º 8
0
        public async Task Reverse()
        {
            using (var dot = new DotClient())
            {
                var name = await dot.ResolveAsync(IPAddress.Parse("1.1.1.1"));

                Assert.AreEqual("one.one.one.one", name);

                name = await dot.ResolveAsync(IPAddress.Parse("2606:4700:4700::1111"));

                Assert.AreEqual("one.one.one.one", name);
            }
        }
Exemplo n.º 9
0
        public async Task Resolve_Reverse()
        {
            using (var dot = new DotClient())
            {
                var github    = "github.com";
                var addresses = await dot.ResolveAsync(github);

                foreach (var address in addresses)
                {
                    var name = await dot.ResolveAsync(address);

                    StringAssert.EndsWith(name.ToString(), ".com");
                }
            }
        }
Exemplo n.º 10
0
        public async Task Query()
        {
            using (var dot = new DotClient())
            {
                var query = new Message {
                    RD = true, Id = 0x1234
                };
                query.Questions.Add(new Question {
                    Name = "ipfs.io", Type = DnsType.TXT
                });
                var response = await dot.QueryAsync(query);

                Assert.IsNotNull(response);
                Assert.AreNotEqual(0, response.Answers.Count);
            }
        }
Exemplo n.º 11
0
 public void Query_UnknownName_NoThrow()
 {
     using (var dot = new DotClient {
         ThrowResponseError = false
     })
     {
         var query = new Message {
             RD = true
         };
         query.Questions.Add(new Question {
             Name = "emanon.noname.google.com", Type = DnsType.A
         });
         var result = dot.QueryAsync(query).Result;
         Assert.AreEqual(MessageStatus.NameError, result.Status);
     }
 }
Exemplo n.º 12
0
 public void Query_UnknownName()
 {
     using (var dot = new DotClient())
     {
         var query = new Message {
             RD = true
         };
         query.Questions.Add(new Question {
             Name = "emanon.noname.google.com", Type = DnsType.A
         });
         ExceptionAssert.Throws <IOException>(() =>
         {
             var _ = dot.QueryAsync(query).Result;
         }, "DNS error 'NameError'.");
     }
 }
Exemplo n.º 13
0
 public void NoSerer()
 {
     using (var dot = new DotClient
     {
         Servers = new DotEndPoint[0]
     })
     {
         var query = new Message {
             RD = true
         };
         query.Questions.Add(new Question {
             Name = "ipfs.io", Type = DnsType.TXT
         });
         ExceptionAssert.Throws <Exception>(() =>
         {
             var _ = dot.QueryAsync(query).Result;
         });
     }
 }
Exemplo n.º 14
0
        public async Task SecureQuery_Has_RRs()
        {
            var dns = new DotClient();
            var query = new Message {
                RD = true
            }.UseDnsSecurity();

            query.Questions.Add(new Question {
                Name = "cloudflare-dns.com", Type = DnsType.AAAA
            });
            var response = await dns.QueryAsync(query);

            Assert.IsNotNull(response);
            Assert.AreNotEqual(0, response.Answers.Count);

            var opt = response.AdditionalRecords.OfType <OPTRecord>().Single();

            Assert.AreEqual(true, opt.DO);

            var rrsig = response.Answers.OfType <RRSIGRecord>().Single();

            Assert.AreEqual(DnsType.AAAA, rrsig.TypeCovered);
        }
Exemplo n.º 15
0
 public void Query_InvalidServer_IPAddress()
 {
     using (var dot = new DotClient
     {
         Servers = new[]
         {
             new DotEndPoint {
                 Address = IPAddress.Any
             }
         }
     })
     {
         var query = new Message {
             RD = true
         };
         query.Questions.Add(new Question {
             Name = "emanon.noname.google.com", Type = DnsType.A
         });
         ExceptionAssert.Throws <Exception>(() =>
         {
             var _ = dot.QueryAsync(query).Result;
         });
     }
 }
Exemplo n.º 16
0
        public void PublicServers()
        {
            var dot = new DotClient();

            Assert.AreNotEqual(0, DotClient.PublicServers.Length);
        }