pub mod gpo;
pub mod resolver;
pub mod sessions;
pub mod adcs;
use std::collections::HashMap;
use std::error::Error;
use rayon::prelude::*;
use crate::args::{CollectionMethod, Options};
use crate::objects::computer::Computer;
use crate::objects::enterpriseca::EnterpriseCA;
use crate::objects::user::User;
use crate::modules::adcs::probe_enterpriseca_esc8;
pub async fn run_modules(
common_args: &Options,
fqdn_ip: &mut HashMap<String, String>,
vec_computers: &mut Vec<Computer>,
vec_users: &mut Vec<User>,
vec_enterprisecas: &mut Vec<EnterpriseCA>,
) -> Result<(), Box<dyn Error>> {
if common_args.fqdn_resolver {
resolver::resolv::resolving_all_fqdn(
common_args.dns_tcp,
&common_args.name_server,
fqdn_ip,
&vec_computers
).await;
}
if common_args.collection_method.does_sessions() {
sessions::run(common_args, vec_users, vec_computers).await?;
}
if !matches!(common_args.collection_method, CollectionMethod::DCOnly)
&& !vec_enterprisecas.is_empty()
{
log::info!(
"Starting ESC8 web enrollment probe on {} CA(s)...",
vec_enterprisecas.len()
);
vec_enterprisecas.par_iter_mut().for_each(|ca| {
let esc8 = probe_enterpriseca_esc8(ca.dns_host());
ca.apply_esc8(esc8.http_enrollment_endpoints);
});
}
Ok(())
}