use crate::containerization::strings;
use crate::error::Error;
use crate::platform;
use crate::platform::ffi;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Dns {
pub nameservers: Vec<String>,
pub domain: Option<String>,
pub search_domains: Vec<String>,
pub options: Vec<String>,
}
impl Dns {
pub fn default_nameservers() -> Vec<String> {
strings(&["1.1.1.1"])
}
pub fn validate(&self) -> Result<(), Error> {
platform::outcome(ffi::cz_dns_validate(self.clone()), "validate DNS").map(|_| ())
}
pub fn resolv_conf(&self) -> Result<String, Error> {
platform::outcome(ffi::cz_dns_resolv_conf(self.clone()), "render resolv.conf").map(|outcome| outcome.text())
}
}
impl Default for Dns {
fn default() -> Self {
Self {
nameservers: Self::default_nameservers(),
domain: None,
search_domains: Vec::new(),
options: Vec::new(),
}
}
}