public async Task Query_EDNS() { var doh = new DohClient(); var query = new Message { RD = true, Questions = { new Question { Name = "ipfs.io", Type = DnsType.TXT } }, AdditionalRecords = { new OPTRecord { DO = true, Options = { new EdnsNSIDOption(), new EdnsKeepaliveOption(), new EdnsPaddingOption { Padding = new byte[]{ 0, 0, 0, 0 } } } } } }; var response = await doh.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); }
public void Resolve_Unknown() { var doh = new DohClient(); ExceptionAssert.Throws <IOException>(() => { var _ = doh.ResolveAsync("emanon.noname").Result; }); }
public async Task Resolve() { var doh = new DohClient(); var addresses = await doh.ResolveAsync("cloudflare-dns.com"); Assert.AreNotEqual(0, addresses.Count()); Assert.IsTrue(addresses.Any(a => a.AddressFamily == AddressFamily.InterNetwork)); Assert.IsTrue(addresses.Any(a => a.AddressFamily == AddressFamily.InterNetworkV6)); }
public async Task Reverse() { var doh = new DohClient(); var name = await doh.ResolveAsync(IPAddress.Parse("1.1.1.1")); Assert.AreEqual("one.one.one.one", name); name = await doh.ResolveAsync(IPAddress.Parse("2606:4700:4700::1111")); Assert.AreEqual("one.one.one.one", name); }
public async Task Resolve_Reverse() { var doh = new DohClient(); var github = "github.com"; var addresses = await doh.ResolveAsync(github); foreach (var address in addresses) { var name = await doh.ResolveAsync(address); StringAssert.EndsWith(name.ToString(), ".com"); } }
public async Task Query() { var doh = new DohClient(); var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "ipfs.io", Type = DnsType.TXT }); var response = await doh.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); }
public void Query_UnknownName() { var doh = new DohClient(); var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "emanon.noname.google.com", Type = DnsType.A }); ExceptionAssert.Throws <IOException>(() => { var _ = doh.QueryAsync(query).Result; }, "DNS error 'NameError'."); }
public void Query_UnknownName_NoThrow() { using (var doh = new DohClient { ThrowResponseError = false }) { var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "emanon.noname.google.com", Type = DnsType.A }); var result = doh.QueryAsync(query).Result; Assert.AreEqual(MessageStatus.NameError, result.Status); } }
public static async System.Threading.Tasks.Task yeet() { var dns = new Makaretu.Dns.DohClient(); //pick your doh url ---> github.com/curl/curl/wiki/DNS-over-HTTPS //using xfinity as dns over https server. dns.ServerUrl = "https://doh.xfinity.com/dns-query"; //query for twitter IP var response = dns.QueryAsync("twitter.com", DnsType.A); Console.WriteLine(response.Result.Answers.Count); foreach (var item in response.Result.Answers) { Console.WriteLine(item.ToString()); } }
public void Query_Timeout() { var doh = new DohClient { Timeout = TimeSpan.FromMilliseconds(1) }; var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "ipfs-x.io", Type = DnsType.TXT }); ExceptionAssert.Throws <TaskCanceledException>(() => { var _ = doh.QueryAsync(query).Result; }); }
public async Task Query_SecureEuServer() { var doh = new DohClient { ServerUrl = "https://doh.securedns.eu/dns-query" }; var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "ipfs.io", Type = DnsType.TXT }); var response = await doh.QueryAsync(query); Assert.IsNotNull(response); Assert.AreNotEqual(0, response.Answers.Count); }
public void Query_InvalidServer() { var doh = new DohClient { ServerUrl = "https://emanon.noname" }; var query = new Message { RD = true }; query.Questions.Add(new Question { Name = "emanon.noname.google.com", Type = DnsType.A }); ExceptionAssert.Throws <Exception>(() => { var _ = doh.QueryAsync(query).Result; }); }
public async Task SecureQuery_Has_RRs() { var dns = new DohClient(); 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); }
public void Server() { var doh = new DohClient(); Assert.IsNotNull(doh.ServerUrl); }