use std::{time::Instant, sync::Arc};
use cdns_rs::sync::{request, QDns, QType, QuerySetup, ResolveConfig};
fn main()
{
let cfg = "nameserver 1.1.1.1";
let cust = Arc::new(ResolveConfig::custom_config(cfg).unwrap());
let now = Instant::now();
let res_a = request::resolve_fqdn("protonmail.com", Some(cust.clone())).unwrap();
let res_mx = request::resolve_mx("protonmail.com", Some(cust.clone())).unwrap();
let res_ptr_local = request::resolve_reverse("::1", Some(cust.clone())).unwrap();
let res_ptr = request::resolve_reverse("8.8.8.8", Some(cust.clone())).unwrap();
let mut dns_req =
QDns::make_empty(None, QuerySetup::default()).unwrap();
dns_req.add_request(QType::SOA, "protonmail.com");
let res = dns_req.query();
let elapsed = now.elapsed();
println!("Elapsed: {:.2?}", elapsed);
println!("A/AAAA:");
for a in res_a
{
println!("\t{}", a);
}
println!("MX:");
for mx in res_mx
{
println!("\t{}", mx);
}
println!("PTR local:");
for ptr in res_ptr_local
{
println!("\t{}", ptr);
}
println!("PTR:");
for ptr in res_ptr
{
println!("\t{}", ptr);
}
println!("SOA:");
let soa_res = res.get_result();
if soa_res.is_err() == true
{
println!("{}", soa_res.err().unwrap());
}
else
{
let soa = soa_res.unwrap();
if soa.is_empty() == true
{
println!("\tNo SOA found!")
}
else
{
for s in soa
{
println!("\t{}", s)
}
}
}
return;
}