phaser 0.7.8

High-performance attack surface mapper and vulnerability scanner
use crate::report::Host;
use std::{sync::Arc, time::Duration};
use trust_dns_resolver::{
    config::{ResolverConfig, ResolverOpts},
    name_server::{GenericConnection, GenericConnectionProvider, TokioRuntime},
    AsyncResolver,
};

pub type Resolver = Arc<AsyncResolver<GenericConnection, GenericConnectionProvider<TokioRuntime>>>;

pub async fn resolves(dns_resolver: &Resolver, host: &Host) -> bool {
    if dns_resolver.lookup_ip(host.domain.as_str()).await.is_ok() {
        return true;
    }

    false
}

pub fn new_resolver() -> Resolver {
    let resolver = AsyncResolver::tokio(
        ResolverConfig::default(),
        ResolverOpts {
            timeout: Duration::from_secs(4),
            ..Default::default()
        },
    )
    .expect("dns/new_resolver: building DNS client");

    return Arc::new(resolver);
}