feat: fix typo
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -4,7 +4,7 @@ version = 3
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "acme-client"
|
name = "acme-client"
|
||||||
version = "1.3.2"
|
version = "1.3.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"acme-lib",
|
"acme-lib",
|
||||||
"aliyun-openapi-core-rust-sdk",
|
"aliyun-openapi-core-rust-sdk",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "acme-client"
|
name = "acme-client"
|
||||||
version = "1.3.2"
|
version = "1.3.3"
|
||||||
authors = ["Hatter Jiang <jht5945@gmail.com>"]
|
authors = ["Hatter Jiang <jht5945@gmail.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
description = "Acme auto challenge client, acme-client can issue certificates from Let's encrypt"
|
description = "Acme auto challenge client, acme-client can issue certificates from Let's encrypt"
|
||||||
|
|||||||
26
src/main.rs
26
src/main.rs
@@ -8,7 +8,7 @@ mod util;
|
|||||||
mod config;
|
mod config;
|
||||||
mod x509;
|
mod x509;
|
||||||
mod network;
|
mod network;
|
||||||
mod statics;
|
mod statistics;
|
||||||
mod dingtalk;
|
mod dingtalk;
|
||||||
mod dns;
|
mod dns;
|
||||||
mod ali_dns;
|
mod ali_dns;
|
||||||
@@ -27,7 +27,7 @@ use rust_util::util_cmd::run_command_and_wait;
|
|||||||
use crate::config::{AcmeMode, AcmeChallenge, CertConfig, CERT_NAME, KEY_NAME};
|
use crate::config::{AcmeMode, AcmeChallenge, CertConfig, CERT_NAME, KEY_NAME};
|
||||||
use crate::x509::{X509PublicKeyAlgo};
|
use crate::x509::{X509PublicKeyAlgo};
|
||||||
use crate::dingtalk::send_dingtalk_message;
|
use crate::dingtalk::send_dingtalk_message;
|
||||||
use crate::statics::{AcmeStatics, AcmeStatus};
|
use crate::statistics::{AcmeStatistics, AcmeStatus};
|
||||||
use crate::acme::{AcmeRequest, request_acme_certificate};
|
use crate::acme::{AcmeRequest, request_acme_certificate};
|
||||||
use crate::network::get_local_public_ip;
|
use crate::network::get_local_public_ip;
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ async fn main() -> tide::Result<()> {
|
|||||||
check_cert_config(&cert_config);
|
check_cert_config(&cert_config);
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
let mut acme_statics = AcmeStatics::start();
|
let mut acme_statistics = AcmeStatistics::start();
|
||||||
let filtered_cert_config = cert_config.filter_cert_config_items(30);
|
let filtered_cert_config = cert_config.filter_cert_config_items(30);
|
||||||
for item in &filtered_cert_config.cert_items {
|
for item in &filtered_cert_config.cert_items {
|
||||||
if item.common_name.as_ref().map(|n| n.contains('*')).unwrap_or(false)
|
if item.common_name.as_ref().map(|n| n.contains('*')).unwrap_or(false)
|
||||||
@@ -293,24 +293,24 @@ async fn main() -> tide::Result<()> {
|
|||||||
dns_names.iter().for_each(|dns_name| domains.push(dns_name.clone()));
|
dns_names.iter().for_each(|dns_name| domains.push(dns_name.clone()));
|
||||||
if let Err(e) = request_acme_certificate(acme_request, &mut dns_cleaned_domains) {
|
if let Err(e) = request_acme_certificate(acme_request, &mut dns_cleaned_domains) {
|
||||||
failure!("Request certificate: {}, by acme failed: {}", item.path, e);
|
failure!("Request certificate: {}, by acme failed: {}", item.path, e);
|
||||||
acme_statics.add_item(domains, AcmeStatus::Fail(format!("{}", e)));
|
acme_statistics.add_item(domains, AcmeStatus::Fail(format!("{}", e)));
|
||||||
} else {
|
} else {
|
||||||
acme_statics.add_item(domains, AcmeStatus::Success);
|
acme_statistics.add_item(domains, AcmeStatus::Success);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
acme_statics.end();
|
acme_statistics.end();
|
||||||
|
|
||||||
let mut success_count = 0;
|
let mut success_count = 0;
|
||||||
for acme_static in &acme_statics.items {
|
for acme_statistic in &acme_statistics.items {
|
||||||
if let AcmeStatus::Success = acme_static.status {
|
if let AcmeStatus::Success = acme_statistic.status {
|
||||||
success_count += 1;
|
success_count += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
success!("Statics: \n{}", acme_statics);
|
success!("Statistics: \n{}", acme_statistics);
|
||||||
|
|
||||||
let mut dingtalk_message = format!("Statics: \n{}", acme_statics);
|
let mut dingtalk_message = format!("Statistics: \n{}", acme_statistics);
|
||||||
if success_count > 0 {
|
if success_count > 0 {
|
||||||
if let Some(trigger_after_update) = &filtered_cert_config.trigger_after_update {
|
if let Some(trigger_after_update) = &filtered_cert_config.trigger_after_update {
|
||||||
if trigger_after_update.len() > 0 {
|
if trigger_after_update.len() > 0 {
|
||||||
@@ -338,7 +338,7 @@ async fn main() -> tide::Result<()> {
|
|||||||
|
|
||||||
let mut success_domains = vec![];
|
let mut success_domains = vec![];
|
||||||
let mut failed_domains = vec![];
|
let mut failed_domains = vec![];
|
||||||
for acme_item in &acme_statics.items {
|
for acme_item in &acme_statistics.items {
|
||||||
if let AcmeStatus::Success = acme_item.status {
|
if let AcmeStatus::Success = acme_item.status {
|
||||||
success_domains.push(format!("* {}", acme_item.domains.join(", ")));
|
success_domains.push(format!("* {}", acme_item.domains.join(", ")));
|
||||||
}
|
}
|
||||||
@@ -356,12 +356,12 @@ async fn main() -> tide::Result<()> {
|
|||||||
dingtalk_message.push_str(&failed_domains.join("\n"));
|
dingtalk_message.push_str(&failed_domains.join("\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if !acme_statics.items.is_empty() && filtered_cert_config.notify_token.is_some() {
|
if !acme_statistics.items.is_empty() && filtered_cert_config.notify_token.is_some() {
|
||||||
if let Err(err) = send_dingtalk_message(&filtered_cert_config, &dingtalk_message) {
|
if let Err(err) = send_dingtalk_message(&filtered_cert_config, &dingtalk_message) {
|
||||||
failure!("Send notification message failed: {:?}", err);
|
failure!("Send notification message failed: {:?}", err);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
information!("No notification message need to send, or not configed notification token");
|
information!("No notification message sent, or no configured notification token");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use std::time::SystemTime;
|
|||||||
use std::fmt::{Display, Formatter, Result};
|
use std::fmt::{Display, Formatter, Result};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct AcmeStatics {
|
pub struct AcmeStatistics {
|
||||||
pub started: SystemTime,
|
pub started: SystemTime,
|
||||||
pub ended: Option<SystemTime>,
|
pub ended: Option<SystemTime>,
|
||||||
pub items: Vec<AcmeItem>,
|
pub items: Vec<AcmeItem>,
|
||||||
@@ -36,7 +36,7 @@ impl Display for AcmeItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Display for AcmeStatics {
|
impl Display for AcmeStatistics {
|
||||||
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
|
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
|
||||||
let mut sb = String::with_capacity(512);
|
let mut sb = String::with_capacity(512);
|
||||||
let df = simpledateformat::fmt("yyyy-MM-dd HH:mm:ss z").unwrap();
|
let df = simpledateformat::fmt("yyyy-MM-dd HH:mm:ss z").unwrap();
|
||||||
@@ -72,9 +72,9 @@ impl Display for AcmeStatics {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AcmeStatics {
|
impl AcmeStatistics {
|
||||||
pub fn start() -> AcmeStatics {
|
pub fn start() -> AcmeStatistics {
|
||||||
AcmeStatics {
|
AcmeStatistics {
|
||||||
started: SystemTime::now(),
|
started: SystemTime::now(),
|
||||||
ended: None,
|
ended: None,
|
||||||
items: Vec::new(),
|
items: Vec::new(),
|
||||||
Reference in New Issue
Block a user