Files
lan-mouse/src/dns.rs
2024-04-26 22:52:00 +02:00

24 lines
676 B
Rust

use anyhow::Result;
use std::{error::Error, net::IpAddr};
use hickory_resolver::TokioAsyncResolver;
pub struct DnsResolver {
resolver: TokioAsyncResolver,
}
impl DnsResolver {
pub(crate) async fn new() -> Result<Self> {
let resolver = TokioAsyncResolver::tokio_from_system_conf()?;
Ok(Self { resolver })
}
pub(crate) async fn resolve(&self, host: &str) -> Result<Vec<IpAddr>, Box<dyn Error>> {
log::info!("resolving {host} ...");
let response = self.resolver.lookup_ip(host).await?;
for ip in response.iter() {
log::info!("{host}: adding ip {ip}");
}
Ok(response.iter().collect())
}
}