add sync_cert method to domain manager

This commit is contained in:
Brian Picciano 2023-06-18 14:46:52 +02:00
parent 6da68dc042
commit dbc912a9d3
2 changed files with 24 additions and 10 deletions

View File

@ -125,6 +125,11 @@ pub trait Manager: Sync + Send {
domain: &domain::Name, domain: &domain::Name,
) -> Result<sync::Arc<dyn origin::Origin>, GetOriginError>; ) -> Result<sync::Arc<dyn origin::Origin>, GetOriginError>;
fn sync_cert<'mgr>(
&'mgr self,
domain: domain::Name,
) -> pin::Pin<Box<dyn future::Future<Output = Result<(), unexpected::Error>> + Send + 'mgr>>;
fn sync_with_config<'mgr>( fn sync_with_config<'mgr>(
&'mgr self, &'mgr self,
domain: domain::Name, domain: domain::Name,
@ -223,6 +228,20 @@ impl Manager for ManagerImpl {
Ok(origin) Ok(origin)
} }
fn sync_cert<'mgr>(
&'mgr self,
domain: domain::Name,
) -> pin::Pin<Box<dyn future::Future<Output = Result<(), unexpected::Error>> + Send + 'mgr>>
{
Box::pin(async move {
if let Some(ref acme_manager) = self.acme_manager {
acme_manager.sync_domain(domain.clone()).await?;
}
Ok(())
})
}
fn sync_with_config<'mgr>( fn sync_with_config<'mgr>(
&'mgr self, &'mgr self,
domain: domain::Name, domain: domain::Name,
@ -243,9 +262,7 @@ impl Manager for ManagerImpl {
self.domain_config_store.set(&domain, &config)?; self.domain_config_store.set(&domain, &config)?;
if let Some(ref acme_manager) = self.acme_manager { self.sync_cert(domain).await?;
acme_manager.sync_domain(domain.clone()).await?;
}
Ok(()) Ok(())
}) })

View File

@ -205,7 +205,6 @@ async fn main() {
if let Some(https_params) = https_params { if let Some(https_params) = https_params {
// Periodically refresh all domain certs, including the http_domain passed in the Cli opts // Periodically refresh all domain certs, including the http_domain passed in the Cli opts
wait_group.push({ wait_group.push({
let https_params = https_params.clone();
let domain_manager = domain_manager.clone(); let domain_manager = domain_manager.clone();
let http_domain = config.http_domain.clone(); let http_domain = config.http_domain.clone();
let canceller = canceller.clone(); let canceller = canceller.clone();
@ -219,9 +218,8 @@ async fn main() {
_ = canceller.cancelled() => return, _ = canceller.cancelled() => return,
} }
_ = https_params _ = domain_manager
.domain_acme_manager .sync_cert(http_domain.clone())
.sync_domain(http_domain.clone())
.await .await
.inspect_err(|err| { .inspect_err(|err| {
log::error!( log::error!(
@ -238,9 +236,8 @@ async fn main() {
} }
for domain in domains_iter.unwrap().into_iter() { for domain in domains_iter.unwrap().into_iter() {
let _ = https_params let _ = domain_manager
.domain_acme_manager .sync_cert(domain.clone())
.sync_domain(domain.clone())
.await .await
.inspect_err(|err| { .inspect_err(|err| {
log::error!( log::error!(