use serde::Deserialize;
use std::{net::SocketAddr, path::PathBuf};
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Config {
#[serde(alias = "dns_listen_adr")]
pub dns_listen_addr: SocketAddr,
pub accounts: Vec<Account>,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Account {
pub email: String,
pub private_key_path: PathBuf,
pub certificates: Vec<Certificate>,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Certificate {
#[serde(default = "default_days")]
pub renewal_days_advance: u32,
pub domains: Vec<String>,
pub fullchain_output_file: PathBuf,
pub key_output_file: PathBuf,
#[serde(default)]
pub reuse_private_key: bool,
}
const fn default_days() -> u32 {
30
}