feat: fix panic
This commit is contained in:
11
src/main.rs
11
src/main.rs
@@ -10,6 +10,8 @@ use clap::{App, Arg};
|
|||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use tide::Request;
|
use tide::Request;
|
||||||
|
use std::process::exit;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
const NAME: &str = env!("CARGO_PKG_NAME");
|
const NAME: &str = env!("CARGO_PKG_NAME");
|
||||||
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||||
@@ -56,8 +58,8 @@ async fn main() -> tide::Result<()> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let domains: Vec<&str> = domains_val.collect::<Vec<_>>();
|
let domains: Vec<&str> = domains_val.collect::<Vec<_>>();
|
||||||
information!("Domains: {:?}", domains);
|
|
||||||
|
|
||||||
|
let (s, r) = async_std::channel::bounded(1);
|
||||||
async_std::task::spawn(async move {
|
async_std::task::spawn(async move {
|
||||||
information!("Listen at 0.0.0.0:{}", port);
|
information!("Listen at 0.0.0.0:{}", port);
|
||||||
let mut app = tide::new();
|
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 {
|
if let Err(e) = app.listen(&format!("0.0.0.0:{}", port)).await {
|
||||||
failure!("Failed to listen 0.0.0.0:{}, error: {}", port, e);
|
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 primary_name = domains[0];
|
||||||
let alt_names: Vec<&str> = domains.into_iter().skip(1).collect();
|
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");
|
request_domains(email, primary_name, &alt_names).expect("Request domain failed");
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -96,7 +103,7 @@ async fn main() -> tide::Result<()> {
|
|||||||
|
|
||||||
fn request_domains(contract_email: &str, primary_name: &str, alt_names: &[&str]) -> XResult<()> {
|
fn request_domains(contract_email: &str, primary_name: &str, alt_names: &[&str]) -> XResult<()> {
|
||||||
let url = DirectoryUrl::LetsEncrypt;
|
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 persist = FilePersist::new("__temp_dir");
|
||||||
let dir = Directory::from_url(persist, url)?;
|
let dir = Directory::from_url(persist, url)?;
|
||||||
let acc = dir.account(contract_email)?;
|
let acc = dir.account(contract_email)?;
|
||||||
|
|||||||
Reference in New Issue
Block a user