pub mod http; mod util; use crate::domain; use serde::Deserialize; use std::{net, str::FromStr}; fn default_primary_domain() -> domain::Name { domain::Name::from_str("localhost").unwrap() } #[derive(Deserialize, Clone)] #[serde(tag = "type")] pub enum ConfigDNSRecord { A { addr: net::Ipv4Addr }, } impl From for domain::checker::DNSRecord { fn from(r: ConfigDNSRecord) -> Self { match r { ConfigDNSRecord::A { addr } => Self::A(addr), } } } #[derive(Deserialize)] pub struct Config { pub passphrase: String, pub dns_records: Vec, #[serde(default = "default_primary_domain")] pub primary_domain: domain::Name, #[serde(default)] pub http: self::http::Config, }