diff --git a/src/main.rs b/src/main.rs index 9a56bfa..27037f9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,6 +10,8 @@ use clap::{App, Arg}; use std::sync::{Arc, RwLock}; use std::collections::BTreeMap; use tide::Request; +use std::process::exit; +use std::time::Duration; const NAME: &str = env!("CARGO_PKG_NAME"); const VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -56,8 +58,8 @@ async fn main() -> tide::Result<()> { }; let domains: Vec<&str> = domains_val.collect::>(); - information!("Domains: {:?}", domains); + let (s, r) = async_std::channel::bounded(1); async_std::task::spawn(async move { information!("Listen at 0.0.0.0:{}", port); let mut app = tide::new(); @@ -81,13 +83,18 @@ async fn main() -> tide::Result<()> { } } }); + s.send(1).await.ok(); if let Err(e) = app.listen(&format!("0.0.0.0:{}", port)).await { failure!("Failed to listen 0.0.0.0:{}, error: {}", port, e); + exit(1); } }); + r.recv().await.ok(); + async_std::task::sleep(Duration::from_secs(1)).await; let primary_name = domains[0]; let alt_names: Vec<&str> = domains.into_iter().skip(1).collect(); + information!("Domains, main: {}, alt: {:?}", primary_name, alt_names); request_domains(email, primary_name, &alt_names).expect("Request domain failed"); Ok(()) @@ -96,7 +103,7 @@ async fn main() -> tide::Result<()> { fn request_domains(contract_email: &str, primary_name: &str, alt_names: &[&str]) -> XResult<()> { let url = DirectoryUrl::LetsEncrypt; - std::fs::create_dir("__temp_dir").expect("Create temp dir failed!"); + std::fs::create_dir("__temp_dir").ok(); let persist = FilePersist::new("__temp_dir"); let dir = Directory::from_url(persist, url)?; let acc = dir.account(contract_email)?;