use serde::Deserialize;
use super::empty_string_is_no_values;
#[derive(Debug, Clone, Deserialize)]
#[serde(default)]
pub struct ChallengeConfig {
#[serde(deserialize_with = "empty_string_is_no_values")]
pub enabled: Vec<String>,
pub bypass: bool,
pub timeout_ms: u64,
pub http_01: Http01Config,
pub tls_alpn_01: TlsAlpnConfig,
}
impl Default for ChallengeConfig {
fn default() -> Self {
Self {
enabled: vec!["http-01".to_string()],
bypass: false,
timeout_ms: 5000,
http_01: Http01Config::default(),
tls_alpn_01: TlsAlpnConfig::default(),
}
}
}
#[derive(Debug, Clone, Deserialize)]
#[serde(default)]
pub struct Http01Config {
pub port: u16,
pub https_port: u16,
pub follow_redirects: bool,
pub max_redirects: u8,
pub max_response_bytes: usize,
}
impl Default for Http01Config {
fn default() -> Self {
Self {
port: 80,
https_port: 443,
follow_redirects: true,
max_redirects: 5,
max_response_bytes: 4096,
}
}
}
#[derive(Debug, Clone, Deserialize)]
#[serde(default)]
pub struct TlsAlpnConfig {
pub port: u16,
}
impl Default for TlsAlpnConfig {
fn default() -> Self {
Self { port: 443 }
}
}