Using trust-dns-resolver to do soa lookups


use trust_dns_resolver::error::ResolveResult;
use trust_dns_resolver::Resolver;
use trust_dns_resolver::{config::*, lookup::SoaLookup};
fn main() {
// Construct a new Resolver with default configuration options
let resolver = Resolver::new(ResolverConfig::default(), ResolverOpts::default()).unwrap();
let soa_response = resolver.soa_lookup("gmail.com.");
display_soa(&soa_response);
}
fn display_soa(soa_response: &ResolveResult<SoaLookup>) {
match soa_response {
Err(_) => println!("No SOA."),
Ok(soa_response) => {
let soa_iter = soa_response.iter();
for record in soa_iter {
println!("Admin: {}", record.rname());
let email = convert_rname_to_email_address(&record.rname().to_string());
println!("Admin Email: {}", email);
println!("Primary: {}", record.mname());
println!("Serial: {}", record.serial());
}
}
}
}
fn convert_rname_to_email_address(rname: &String) -> String {
//Solution found on StackOverFlow :)
let rname = rname.clone();
let mut email_address: String = String::new();
let mut splitter = rname.splitn(2, ".");
email_address.push_str(splitter.next().unwrap());
email_address.push_str("@");
email_address.push_str(splitter.next().unwrap());
// Remove remaining period (.)
email_address.pop();
email_address
}
view raw soa.rs hosted with ❤ by GitHub
rust  dns  soa  lookup 

See also