diff --git a/src/config/acme/mod.rs b/src/config/acme/mod.rs index 5c018fa3..097e2de2 100644 --- a/src/config/acme/mod.rs +++ b/src/config/acme/mod.rs @@ -5,7 +5,7 @@ use std::path::Path; use anyhow::{bail, format_err, Error}; use serde::{Deserialize, Serialize}; -use proxmox::api::{api, schema::Schema}; +use proxmox::api::{api, schema::{Schema, StringSchema, ApiStringFormat}}; use proxmox::sys::error::SysError; use proxmox::tools::fs::CreateOptions; @@ -78,6 +78,11 @@ pub struct AcmeDomain { pub plugin: Option, } +pub const ACME_DOMAIN_PROPERTY_SCHEMA: Schema = StringSchema::new( + "ACME domain configuration string") + .format(&ApiStringFormat::PropertyString(&AcmeDomain::API_SCHEMA)) + .schema(); + #[api( properties: { name: { type: String }, diff --git a/src/config/node.rs b/src/config/node.rs index 7ea85e2d..0983697a 100644 --- a/src/config/node.rs +++ b/src/config/node.rs @@ -7,14 +7,14 @@ use nix::sys::stat::Mode; use serde::{Deserialize, Serialize}; use proxmox::api::api; -use proxmox::api::schema::{self, Updater}; +use proxmox::api::schema::{ApiStringFormat, Updater}; use proxmox::tools::fs::{replace_file, CreateOptions}; use crate::acme::AcmeClient; -use crate::config::acme::{AccountName, AcmeDomain}; +use crate::config::acme::{AccountName, AcmeDomain, ACME_DOMAIN_PROPERTY_SCHEMA}; const CONF_FILE: &str = configdir!("/node.cfg"); -const LOCK_FILE: &str = configdir!("/.node.cfg.lck"); +const LOCK_FILE: &str = configdir!("/.node.lck"); const LOCK_TIMEOUT: Duration = Duration::from_secs(10); pub fn lock() -> Result { @@ -66,32 +66,27 @@ pub struct AcmeConfig { acme: { optional: true, type: String, - format: &schema::ApiStringFormat::PropertyString(&AcmeConfig::API_SCHEMA), + format: &ApiStringFormat::PropertyString(&AcmeConfig::API_SCHEMA), }, acmedomain0: { - type: String, + schema: ACME_DOMAIN_PROPERTY_SCHEMA, optional: true, - format: &schema::ApiStringFormat::PropertyString(&AcmeDomain::API_SCHEMA), }, acmedomain1: { - type: String, + schema: ACME_DOMAIN_PROPERTY_SCHEMA, optional: true, - format: &schema::ApiStringFormat::PropertyString(&AcmeDomain::API_SCHEMA), }, acmedomain2: { - type: String, + schema: ACME_DOMAIN_PROPERTY_SCHEMA, optional: true, - format: &schema::ApiStringFormat::PropertyString(&AcmeDomain::API_SCHEMA), }, acmedomain3: { - type: String, + schema: ACME_DOMAIN_PROPERTY_SCHEMA, optional: true, - format: &schema::ApiStringFormat::PropertyString(&AcmeDomain::API_SCHEMA), }, acmedomain4: { - type: String, + schema: ACME_DOMAIN_PROPERTY_SCHEMA, optional: true, - format: &schema::ApiStringFormat::PropertyString(&AcmeDomain::API_SCHEMA), }, }, )] @@ -102,23 +97,18 @@ pub struct NodeConfig { #[serde(skip_serializing_if = "Updater::is_empty")] acme: Option, - /// ACME domain to get a certificate for for this node. #[serde(skip_serializing_if = "Updater::is_empty")] acmedomain0: Option, - /// ACME domain to get a certificate for for this node. #[serde(skip_serializing_if = "Updater::is_empty")] acmedomain1: Option, - /// ACME domain to get a certificate for for this node. #[serde(skip_serializing_if = "Updater::is_empty")] acmedomain2: Option, - /// ACME domain to get a certificate for for this node. #[serde(skip_serializing_if = "Updater::is_empty")] acmedomain3: Option, - /// ACME domain to get a certificate for for this node. #[serde(skip_serializing_if = "Updater::is_empty")] acmedomain4: Option, }