|
@ -176,15 +176,15 @@ impl Config { |
|
|
#[serde(deny_unknown_fields)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
pub struct GlobalOptions {
|
|
|
pub struct GlobalOptions {
|
|
|
pub accounts_directory: Option<String>,
|
|
|
pub accounts_directory: Option<String>,
|
|
|
pub certificates_directory: Option<String>,
|
|
|
|
|
|
|
|
|
pub cert_file_group: Option<String>,
|
|
|
pub cert_file_mode: Option<u32>,
|
|
|
pub cert_file_mode: Option<u32>,
|
|
|
pub cert_file_user: Option<String>,
|
|
|
pub cert_file_user: Option<String>,
|
|
|
pub cert_file_group: Option<String>,
|
|
|
|
|
|
pub pk_file_mode: Option<u32>,
|
|
|
|
|
|
pub pk_file_user: Option<String>,
|
|
|
|
|
|
pub pk_file_group: Option<String>,
|
|
|
|
|
|
|
|
|
pub certificates_directory: Option<String>,
|
|
|
#[serde(default)]
|
|
|
#[serde(default)]
|
|
|
pub env: HashMap<String, String>,
|
|
|
pub env: HashMap<String, String>,
|
|
|
|
|
|
pub pk_file_group: Option<String>,
|
|
|
|
|
|
pub pk_file_mode: Option<u32>,
|
|
|
|
|
|
pub pk_file_user: Option<String>,
|
|
|
pub renew_delay: Option<String>,
|
|
|
pub renew_delay: Option<String>,
|
|
|
pub root_certificates: Option<Vec<String>>,
|
|
|
pub root_certificates: Option<Vec<String>>,
|
|
|
}
|
|
|
}
|
|
@ -202,12 +202,12 @@ impl GlobalOptions { |
|
|
#[serde(deny_unknown_fields)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
pub struct Endpoint {
|
|
|
pub struct Endpoint {
|
|
|
pub name: String,
|
|
|
pub name: String,
|
|
|
pub url: String,
|
|
|
|
|
|
pub tos_agreed: bool,
|
|
|
|
|
|
#[serde(default)]
|
|
|
#[serde(default)]
|
|
|
pub rate_limits: Vec<String>,
|
|
|
pub rate_limits: Vec<String>,
|
|
|
pub renew_delay: Option<String>,
|
|
|
pub renew_delay: Option<String>,
|
|
|
pub root_certificates: Option<Vec<String>>,
|
|
|
pub root_certificates: Option<Vec<String>>,
|
|
|
|
|
|
pub tos_agreed: bool,
|
|
|
|
|
|
pub url: String,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
impl Endpoint {
|
|
|
impl Endpoint {
|
|
@ -262,16 +262,16 @@ pub struct RateLimit { |
|
|
#[derive(Deserialize)]
|
|
|
#[derive(Deserialize)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
pub struct Hook {
|
|
|
pub struct Hook {
|
|
|
pub name: String,
|
|
|
|
|
|
#[serde(rename = "type")]
|
|
|
|
|
|
pub hook_type: Vec<HookType>,
|
|
|
|
|
|
pub cmd: String,
|
|
|
|
|
|
|
|
|
pub allow_failure: Option<bool>,
|
|
|
pub args: Option<Vec<String>>,
|
|
|
pub args: Option<Vec<String>>,
|
|
|
|
|
|
pub cmd: String,
|
|
|
|
|
|
pub name: String,
|
|
|
|
|
|
pub stderr: Option<String>,
|
|
|
pub stdin: Option<String>,
|
|
|
pub stdin: Option<String>,
|
|
|
pub stdin_str: Option<String>,
|
|
|
pub stdin_str: Option<String>,
|
|
|
pub stdout: Option<String>,
|
|
|
pub stdout: Option<String>,
|
|
|
pub stderr: Option<String>,
|
|
|
|
|
|
pub allow_failure: Option<bool>,
|
|
|
|
|
|
|
|
|
#[serde(rename = "type")]
|
|
|
|
|
|
pub hook_type: Vec<HookType>,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
#[derive(Clone, Debug, Eq, Hash, PartialEq, Deserialize)]
|
|
|
#[derive(Clone, Debug, Eq, Hash, PartialEq, Deserialize)]
|
|
@ -299,8 +299,8 @@ pub enum HookType { |
|
|
#[derive(Deserialize)]
|
|
|
#[derive(Deserialize)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
pub struct Group {
|
|
|
pub struct Group {
|
|
|
pub name: String,
|
|
|
|
|
|
pub hooks: Vec<String>,
|
|
|
pub hooks: Vec<String>,
|
|
|
|
|
|
pub name: String,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
#[derive(Clone, Debug, Deserialize)]
|
|
|
#[derive(Clone, Debug, Deserialize)]
|
|
@ -340,14 +340,14 @@ impl ExternalAccount { |
|
|
#[derive(Clone, Debug, Deserialize)]
|
|
|
#[derive(Clone, Debug, Deserialize)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
pub struct Account {
|
|
|
pub struct Account {
|
|
|
pub name: String,
|
|
|
|
|
|
pub contacts: Vec<AccountContact>,
|
|
|
pub contacts: Vec<AccountContact>,
|
|
|
pub key_type: Option<String>,
|
|
|
|
|
|
pub signature_algorithm: Option<String>,
|
|
|
|
|
|
pub hooks: Option<Vec<String>>,
|
|
|
|
|
|
pub external_account: Option<ExternalAccount>,
|
|
|
|
|
|
#[serde(default)]
|
|
|
#[serde(default)]
|
|
|
pub env: HashMap<String, String>,
|
|
|
pub env: HashMap<String, String>,
|
|
|
|
|
|
pub external_account: Option<ExternalAccount>,
|
|
|
|
|
|
pub hooks: Option<Vec<String>>,
|
|
|
|
|
|
pub key_type: Option<String>,
|
|
|
|
|
|
pub name: String,
|
|
|
|
|
|
pub signature_algorithm: Option<String>,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
impl Account {
|
|
|
impl Account {
|
|
@ -407,21 +407,20 @@ impl AccountContact { |
|
|
#[serde(deny_unknown_fields)]
|
|
|
#[serde(deny_unknown_fields)]
|
|
|
pub struct Certificate {
|
|
|
pub struct Certificate {
|
|
|
pub account: String,
|
|
|
pub account: String,
|
|
|
|
|
|
pub csr_digest: Option<String>,
|
|
|
|
|
|
pub directory: Option<String>,
|
|
|
pub endpoint: String,
|
|
|
pub endpoint: String,
|
|
|
pub identifiers: Vec<Identifier>,
|
|
|
|
|
|
#[serde(default)]
|
|
|
#[serde(default)]
|
|
|
pub subject_attributes: SubjectAttributes,
|
|
|
|
|
|
|
|
|
pub env: HashMap<String, String>,
|
|
|
|
|
|
pub file_name_format: Option<String>,
|
|
|
|
|
|
pub hooks: Vec<String>,
|
|
|
|
|
|
pub identifiers: Vec<Identifier>,
|
|
|
pub key_type: Option<String>,
|
|
|
pub key_type: Option<String>,
|
|
|
pub csr_digest: Option<String>,
|
|
|
|
|
|
pub kp_reuse: Option<bool>,
|
|
|
pub kp_reuse: Option<bool>,
|
|
|
pub directory: Option<String>,
|
|
|
|
|
|
pub name: Option<String>,
|
|
|
pub name: Option<String>,
|
|
|
pub name_format: Option<String>,
|
|
|
|
|
|
pub formats: Option<Vec<String>>,
|
|
|
|
|
|
pub hooks: Vec<String>,
|
|
|
|
|
|
#[serde(default)]
|
|
|
|
|
|
pub env: HashMap<String, String>,
|
|
|
|
|
|
pub renew_delay: Option<String>,
|
|
|
pub renew_delay: Option<String>,
|
|
|
|
|
|
#[serde(default)]
|
|
|
|
|
|
pub subject_attributes: SubjectAttributes,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
impl Certificate {
|
|
|
impl Certificate {
|
|
@ -465,12 +464,12 @@ impl Certificate { |
|
|
id.to_string()
|
|
|
id.to_string()
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
let name = name.replace("*", "_").replace(":", "_");
|
|
|
|
|
|
|
|
|
let name = name.replace("*", "_").replace(":", "_").replace("/", "_");
|
|
|
Ok(name)
|
|
|
Ok(name)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
pub fn get_crt_name_format(&self) -> String {
|
|
|
pub fn get_crt_name_format(&self) -> String {
|
|
|
match &self.name_format {
|
|
|
|
|
|
|
|
|
match &self.file_name_format {
|
|
|
Some(n) => n.to_string(),
|
|
|
Some(n) => n.to_string(),
|
|
|
None => crate::DEFAULT_CERT_FORMAT.to_string(),
|
|
|
None => crate::DEFAULT_CERT_FORMAT.to_string(),
|
|
|
}
|
|
|
}
|
|
@ -534,9 +533,9 @@ impl Certificate { |
|
|
pub struct Identifier {
|
|
|
pub struct Identifier {
|
|
|
pub challenge: String,
|
|
|
pub challenge: String,
|
|
|
pub dns: Option<String>,
|
|
|
pub dns: Option<String>,
|
|
|
pub ip: Option<String>,
|
|
|
|
|
|
#[serde(default)]
|
|
|
#[serde(default)]
|
|
|
pub env: HashMap<String, String>,
|
|
|
pub env: HashMap<String, String>,
|
|
|
|
|
|
pub ip: Option<String>,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
impl<'de> Deserialize<'de> for Identifier {
|
|
|
impl<'de> Deserialize<'de> for Identifier {
|
|
|