use pyo3::prelude::*;
#[pyclass(skip_from_py_object)]
#[pyo3(name = "HostnameAnalysis")]
#[derive(Clone)]
pub struct HostnameAnalysis {
#[pyo3(get)]
pub suspicious: bool,
#[pyo3(get)]
pub scripts: Vec<String>,
#[pyo3(get)]
pub mixed_script: bool,
#[pyo3(get)]
pub has_confusables: bool,
#[pyo3(get)]
pub canonical: String,
}
impl From<crate::api::HostnameAnalysis> for HostnameAnalysis {
fn from(a: crate::api::HostnameAnalysis) -> Self {
HostnameAnalysis {
suspicious: a.suspicious,
scripts: a.scripts,
mixed_script: a.mixed_script,
has_confusables: a.has_confusables,
canonical: a.canonical,
}
}
}
#[pyfunction]
#[pyo3(signature = (hostname,))]
pub fn _is_suspicious_hostname(hostname: &str) -> (bool, HostnameAnalysis) {
let analysis = crate::api::is_suspicious_hostname(hostname);
(analysis.suspicious, analysis.into())
}