|
|
|
@ -1,6 +1,6 @@ |
|
|
|
|
use std::{collections, net, path, str::FromStr}; |
|
|
|
|
|
|
|
|
|
use serde::Deserialize; |
|
|
|
|
use serde::{Deserialize, Serialize}; |
|
|
|
|
|
|
|
|
|
use crate::domain; |
|
|
|
|
|
|
|
|
@ -8,7 +8,7 @@ fn default_resolver_addr() -> net::SocketAddr { |
|
|
|
|
net::SocketAddr::from_str("1.1.1.1:53").unwrap() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[derive(Deserialize)] |
|
|
|
|
#[derive(Deserialize, Serialize)] |
|
|
|
|
pub struct ConfigDNS { |
|
|
|
|
#[serde(default = "default_resolver_addr")] |
|
|
|
|
pub resolver_addr: net::SocketAddr, |
|
|
|
@ -22,25 +22,26 @@ impl Default for ConfigDNS { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[derive(Deserialize)] |
|
|
|
|
#[derive(Deserialize, Serialize)] |
|
|
|
|
pub struct ConfigACME { |
|
|
|
|
pub contact_email: String, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[derive(Deserialize)] |
|
|
|
|
pub struct BuiltinDomain { |
|
|
|
|
#[derive(Deserialize, Serialize)] |
|
|
|
|
pub struct ConfigBuiltinDomain { |
|
|
|
|
#[serde(flatten)] |
|
|
|
|
pub settings: domain::Settings, |
|
|
|
|
|
|
|
|
|
#[serde(default)] |
|
|
|
|
pub public: bool, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[derive(Deserialize)] |
|
|
|
|
#[derive(Deserialize, Serialize)] |
|
|
|
|
pub struct Config { |
|
|
|
|
pub store_dir_path: path::PathBuf, |
|
|
|
|
#[serde(default)] |
|
|
|
|
pub dns: ConfigDNS, |
|
|
|
|
pub acme: Option<ConfigACME>, |
|
|
|
|
#[serde(default)] |
|
|
|
|
pub builtins: collections::HashMap<domain::Name, BuiltinDomain>, |
|
|
|
|
pub builtins: collections::HashMap<domain::Name, ConfigBuiltinDomain>, |
|
|
|
|
} |
|
|
|
|