2023-06-18 12:53:25 +00:00
|
|
|
pub mod http;
|
2023-05-12 16:17:23 +00:00
|
|
|
mod util;
|
2023-07-09 14:09:00 +00:00
|
|
|
|
|
|
|
use crate::domain;
|
|
|
|
use serde::Deserialize;
|
2023-07-09 14:57:36 +00:00
|
|
|
use std::{net, str::FromStr};
|
2023-07-09 14:09:00 +00:00
|
|
|
|
|
|
|
fn default_primary_domain() -> domain::Name {
|
|
|
|
domain::Name::from_str("localhost").unwrap()
|
|
|
|
}
|
|
|
|
|
2023-07-09 14:57:36 +00:00
|
|
|
#[derive(Deserialize, Clone)]
|
|
|
|
#[serde(tag = "type")]
|
|
|
|
pub enum ConfigDNSRecord {
|
|
|
|
A { addr: net::Ipv4Addr },
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<ConfigDNSRecord> for domain::checker::DNSRecord {
|
|
|
|
fn from(r: ConfigDNSRecord) -> Self {
|
|
|
|
match r {
|
|
|
|
ConfigDNSRecord::A { addr } => Self::A(addr),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-07-09 14:09:00 +00:00
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct Config {
|
|
|
|
pub passphrase: String,
|
2023-07-09 14:57:36 +00:00
|
|
|
pub dns_records: Vec<ConfigDNSRecord>,
|
2023-07-09 15:13:25 +00:00
|
|
|
#[serde(default = "default_primary_domain")]
|
|
|
|
pub primary_domain: domain::Name,
|
2023-07-09 14:09:00 +00:00
|
|
|
#[serde(default)]
|
|
|
|
pub http: self::http::Config,
|
|
|
|
}
|