Skip to content

Commit 929c0b6

Browse files
committed
chore: update cargo fmt
1 parent 7ff7b77 commit 929c0b6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1571
-772
lines changed

.rustfmt.toml

+2
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
max_width = 80
2+
match_block_trailing_comma = true
13
edition = "2021"

benches/bench.rs

+10-8
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ fn bench_location_rewrite_path(c: &mut Criterion) {
161161

162162
c.bench_function("rewrite path", |b| {
163163
b.iter(|| {
164-
let mut req_header = RequestHeader::build("GET", b"/users/v1/me", None).unwrap();
164+
let mut req_header =
165+
RequestHeader::build("GET", b"/users/v1/me", None).unwrap();
165166
let _ = lo.rewrite(&mut req_header);
166167
})
167168
});
@@ -189,19 +190,19 @@ fn get_logger_session(s: crossbeam_channel::Sender<Option<Session>>) {
189190
"X-Forwarded-For: 1.1.1.1, 2.2.2.2",
190191
]
191192
.join("\r\n");
192-
let input_header =
193-
format!("GET /vicanso/pingap?size=1 HTTP/1.1\r\n{headers}\r\n\r\n");
194-
let mock_io = Builder::new().read(input_header.as_bytes()).build();
193+
let input_header = format!("GET /vicanso/pingap?size=1 HTTP/1.1\r\n{headers}\r\n\r\n");
194+
let mock_io =
195+
Builder::new().read(input_header.as_bytes()).build();
195196

196197
let mut session = Session::new_h1(Box::new(mock_io));
197198
session.read_request().await.unwrap();
198199
let _ = s.send(Some(session));
199200
};
200201
rt.block_on(send);
201-
}
202+
},
202203
Err(_e) => {
203204
let _ = s.send(None);
204-
}
205+
},
205206
};
206207
});
207208
}
@@ -211,7 +212,8 @@ fn bench_logger_format(c: &mut Criterion) {
211212
get_logger_session(s);
212213
let session = r.recv().unwrap().unwrap();
213214
c.bench_function("logger format", |b| {
214-
let p: Parser = "{host} {method} {path} {proto} {query} {remote} {client_ip} \
215+
let p: Parser =
216+
"{host} {method} {path} {proto} {query} {remote} {client_ip} \
215217
{scheme} {uri} {referer} {user_agent} {when} {when_utc_iso} \
216218
{when_unix} {size} {size_human} {status} {latency} \
217219
{payload_size} {latency_human} {payload_size} \
@@ -221,7 +223,7 @@ fn bench_logger_format(c: &mut Criterion) {
221223
{:location} {:established} {:tls_version} {:compression_time} \
222224
{:compression_ratio} {:cache_lookup_time} {:cache_lock_time} \
223225
{~deviceId} {>accept} {:reused}"
224-
.into();
226+
.into();
225227
let ctx = State {
226228
response_body_size: 1024,
227229
payload_size: 512,

clippy.toml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
allow-unwrap-in-tests = true
2+
cognitive-complexity-threshold = 10
3+
msrv = "1.74.0"

src/acme/lets_encrypt.rs

+38-24
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ use async_trait::async_trait;
2222
use base64::{engine::general_purpose::STANDARD, Engine};
2323
use http::StatusCode;
2424
use instant_acme::{
25-
Account, ChallengeType, Identifier, LetsEncrypt, NewAccount, NewOrder, OrderStatus,
25+
Account, ChallengeType, Identifier, LetsEncrypt, NewAccount, NewOrder,
26+
OrderStatus,
2627
};
2728
use once_cell::sync::OnceCell;
2829
use pingora::proxy::Session;
@@ -71,11 +72,12 @@ pub fn new_lets_encrypt_service(
7172
impl ServiceTask for LetsEncryptService {
7273
async fn run(&self) -> Option<bool> {
7374
let domains = &self.domains;
74-
let should_renew_now = if let Ok(cert) = get_lets_encrypt_cert(&self.certificate_file) {
75-
!cert.valid() || domains.join(",") != cert.domains.join(",")
76-
} else {
77-
true
78-
};
75+
let should_renew_now =
76+
if let Ok(cert) = get_lets_encrypt_cert(&self.certificate_file) {
77+
!cert.valid() || domains.join(",") != cert.domains.join(",")
78+
} else {
79+
true
80+
};
7981
if should_renew_now {
8082
info!(domains = domains.join(","), "renew cert from let's encrypt");
8183
match new_lets_encrypt(&self.certificate_file, domains).await {
@@ -88,7 +90,7 @@ impl ServiceTask for LetsEncryptService {
8890
"restart fail"
8991
);
9092
}
91-
}
93+
},
9294
Err(e) => error!(
9395
error = e.to_string(),
9496
domains = domains.join(","),
@@ -111,20 +113,23 @@ pub fn get_lets_encrypt_cert(path: &PathBuf) -> Result<Certificate> {
111113
});
112114
}
113115
let buf = std::fs::read(path).map_err(|e| Error::Io { source: e })?;
114-
let cert: Certificate =
115-
serde_json::from_slice(&buf).map_err(|e| Error::SerdeJson { source: e })?;
116+
let cert: Certificate = serde_json::from_slice(&buf)
117+
.map_err(|e| Error::SerdeJson { source: e })?;
116118
Ok(cert)
117119
}
118120

119121
/// The proxy plugin for lets encrypt http-01.
120-
pub async fn handle_lets_encrypt(session: &mut Session, ctx: &mut State) -> pingora::Result<bool> {
122+
pub async fn handle_lets_encrypt(
123+
session: &mut Session,
124+
ctx: &mut State,
125+
) -> pingora::Result<bool> {
121126
let path = session.req_header().uri.path();
122127
if path.starts_with("/.well-known/acme-challenge/") {
123128
let value = {
124129
let data = get_lets_encrypt().lock().await;
125-
let v = data
126-
.get(path)
127-
.ok_or_else(|| util::new_internal_error(400, "token not found".to_string()))?;
130+
let v = data.get(path).ok_or_else(|| {
131+
util::new_internal_error(400, "token not found".to_string())
132+
})?;
128133
v.clone()
129134
};
130135
ctx.response_body_size = HttpResponse {
@@ -141,7 +146,10 @@ pub async fn handle_lets_encrypt(session: &mut Session, ctx: &mut State) -> ping
141146

142147
/// Get the new cert from lets encrypt for all domains.
143148
/// The cert will be saved if success.
144-
async fn new_lets_encrypt(certificate_file: &PathBuf, domains: &[String]) -> Result<()> {
149+
async fn new_lets_encrypt(
150+
certificate_file: &PathBuf,
151+
domains: &[String],
152+
) -> Result<()> {
145153
let mut domains: Vec<String> = domains.to_vec();
146154
domains.sort();
147155
info!(domains = domains.join(","), "acme form let's encrypt");
@@ -187,7 +195,7 @@ async fn new_lets_encrypt(certificate_file: &PathBuf, domains: &[String]) -> Res
187195
"acme from let's encrypt"
188196
);
189197
match authz.status {
190-
instant_acme::AuthorizationStatus::Pending => {}
198+
instant_acme::AuthorizationStatus::Pending => {},
191199
instant_acme::AuthorizationStatus::Valid => continue,
192200
_ => todo!(),
193201
}
@@ -205,7 +213,8 @@ async fn new_lets_encrypt(certificate_file: &PathBuf, domains: &[String]) -> Res
205213
let key_auth = order.key_authorization(challenge);
206214

207215
// http://<你的域名>/.well-known/acme-challenge/<TOKEN>
208-
let well_known_path = format!("/.well-known/acme-challenge/{}", challenge.token);
216+
let well_known_path =
217+
format!("/.well-known/acme-challenge/{}", challenge.token);
209218
info!(well_known_path, "let's encrypt well known path",);
210219

211220
let mut map = get_lets_encrypt().lock().await;
@@ -228,7 +237,9 @@ async fn new_lets_encrypt(certificate_file: &PathBuf, domains: &[String]) -> Res
228237
let state = loop {
229238
let state = order.state();
230239
info!(status = format!("{:?}", state.status), "get order status");
231-
if let OrderStatus::Ready | OrderStatus::Invalid | OrderStatus::Valid = state.status {
240+
if let OrderStatus::Ready | OrderStatus::Invalid | OrderStatus::Valid =
241+
state.status
242+
{
232243
break state;
233244
}
234245
order
@@ -239,14 +250,15 @@ async fn new_lets_encrypt(certificate_file: &PathBuf, domains: &[String]) -> Res
239250
delay *= 2;
240251
tries += 1;
241252
match tries < 10 {
242-
true => info!(delay = format!("{delay:?}"), "Order is not ready, waiting"),
253+
true => info!(
254+
delay = format!("{delay:?}"),
255+
"Order is not ready, waiting"
256+
),
243257
false => {
244258
return Err(Error::Fail {
245-
message: format!(
246-
"Giving up: order is not ready. For details, see the url: {detail_url:?}"
247-
),
259+
message: format!("Giving up: order is not ready. For details, see the url: {detail_url:?}"),
248260
});
249-
}
261+
},
250262
}
251263
tokio::time::sleep(delay).await;
252264
};
@@ -262,7 +274,8 @@ async fn new_lets_encrypt(certificate_file: &PathBuf, domains: &[String]) -> Res
262274

263275
let mut params = CertificateParams::new(names.clone());
264276
params.distinguished_name = DistinguishedName::new();
265-
let cert = rcgen::Certificate::from_params(params).map_err(|e| Error::Rcgen { source: e })?;
277+
let cert = rcgen::Certificate::from_params(params)
278+
.map_err(|e| Error::Rcgen { source: e })?;
266279
let csr = cert
267280
.serialize_request_der()
268281
.map_err(|e| Error::Rcgen { source: e })?;
@@ -304,7 +317,8 @@ async fn new_lets_encrypt(certificate_file: &PathBuf, domains: &[String]) -> Res
304317
pem: STANDARD.encode(cert_chain_pem.as_bytes()),
305318
key: STANDARD.encode(cert.serialize_private_key_pem().as_bytes()),
306319
};
307-
let buf = serde_json::to_vec(&info).map_err(|e| Error::SerdeJson { source: e })?;
320+
let buf = serde_json::to_vec(&info)
321+
.map_err(|e| Error::SerdeJson { source: e })?;
308322
f.write(&buf).await.map_err(|e| Error::Io { source: e })?;
309323
info!(
310324
certificate_file = format!("{certificate_file:?}"),

src/acme/mod.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,10 @@ impl CertificateInfo {
5656

5757
/// Get the information of certificate.
5858
pub fn get_certificate_info(data: &[u8]) -> Result<CertificateInfo> {
59-
let (_, pem) = x509_parser::pem::parse_x509_pem(data).map_err(|e| Error::X509 {
60-
message: e.to_string(),
61-
})?;
59+
let (_, pem) =
60+
x509_parser::pem::parse_x509_pem(data).map_err(|e| Error::X509 {
61+
message: e.to_string(),
62+
})?;
6263
let x509 = pem.parse_x509().map_err(|e| Error::X509 {
6364
message: e.to_string(),
6465
})?;
@@ -102,7 +103,9 @@ impl Certificate {
102103
mod lets_encrypt;
103104
mod validity_checker;
104105

105-
pub use lets_encrypt::{get_lets_encrypt_cert, handle_lets_encrypt, new_lets_encrypt_service};
106+
pub use lets_encrypt::{
107+
get_lets_encrypt_cert, handle_lets_encrypt, new_lets_encrypt_service,
108+
};
106109
pub use validity_checker::new_tls_validity_service;
107110

108111
#[cfg(test)]

src/acme/validity_checker.rs

+33-11
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ struct ValidityChecker {
2727

2828
// Verify the validity period of tls certificate,
2929
// include not after and not before.
30-
fn validity_check(validity_list: &[(String, CertificateInfo)], time_offset: i64) -> Option<String> {
30+
fn validity_check(
31+
validity_list: &[(String, CertificateInfo)],
32+
time_offset: i64,
33+
) -> Option<String> {
3134
let now = util::now().as_secs() as i64;
3235
for (name, cert) in validity_list.iter() {
3336
// will expire check
@@ -53,7 +56,9 @@ fn validity_check(validity_list: &[(String, CertificateInfo)], time_offset: i64)
5356
#[async_trait]
5457
impl ServiceTask for ValidityChecker {
5558
async fn run(&self) -> Option<bool> {
56-
if let Some(message) = validity_check(&self.tls_cert_info_list, self.time_offset) {
59+
if let Some(message) =
60+
validity_check(&self.tls_cert_info_list, self.time_offset)
61+
{
5762
warn!(message);
5863
webhook::send(webhook::SendNotificationParams {
5964
level: webhook::NotificationLevel::Warn,
@@ -64,7 +69,8 @@ impl ServiceTask for ValidityChecker {
6469
None
6570
}
6671
fn description(&self) -> String {
67-
let offset_human: humantime::Duration = Duration::from_secs(self.time_offset as u64).into();
72+
let offset_human: humantime::Duration =
73+
Duration::from_secs(self.time_offset as u64).into();
6874
format!(
6975
"offset: {offset_human}, tls_cert_info_list: {:?}",
7076
self.tls_cert_info_list
@@ -104,8 +110,12 @@ mod tests {
104110
&[(
105111
"Pingap".to_string(),
106112
CertificateInfo {
107-
not_after: ASN1Time::from_timestamp(2651852800).unwrap().timestamp(),
108-
not_before: ASN1Time::from_timestamp(2651852800).unwrap().timestamp(),
113+
not_after: ASN1Time::from_timestamp(2651852800)
114+
.unwrap()
115+
.timestamp(),
116+
not_before: ASN1Time::from_timestamp(2651852800)
117+
.unwrap()
118+
.timestamp(),
109119
issuer: "pingap".to_string(),
110120
},
111121
)],
@@ -120,8 +130,12 @@ mod tests {
120130
&[(
121131
"Pingap".to_string(),
122132
CertificateInfo {
123-
not_after: ASN1Time::from_timestamp(2651852800).unwrap().timestamp(),
124-
not_before: ASN1Time::from_timestamp(2651852800).unwrap().timestamp(),
133+
not_after: ASN1Time::from_timestamp(2651852800)
134+
.unwrap()
135+
.timestamp(),
136+
not_before: ASN1Time::from_timestamp(2651852800)
137+
.unwrap()
138+
.timestamp(),
125139
issuer: "pingap".to_string(),
126140
},
127141
)],
@@ -137,17 +151,25 @@ mod tests {
137151
let _ = new_tls_validity_service(vec![(
138152
"Pingap".to_string(),
139153
CertificateInfo {
140-
not_after: ASN1Time::from_timestamp(2651852800).unwrap().timestamp(),
141-
not_before: ASN1Time::from_timestamp(2651852800).unwrap().timestamp(),
154+
not_after: ASN1Time::from_timestamp(2651852800)
155+
.unwrap()
156+
.timestamp(),
157+
not_before: ASN1Time::from_timestamp(2651852800)
158+
.unwrap()
159+
.timestamp(),
142160
issuer: "".to_string(),
143161
},
144162
)]);
145163
let checker = ValidityChecker {
146164
tls_cert_info_list: vec![(
147165
"Pingap".to_string(),
148166
CertificateInfo {
149-
not_after: ASN1Time::from_timestamp(2651852800).unwrap().timestamp(),
150-
not_before: ASN1Time::from_timestamp(2651852800).unwrap().timestamp(),
167+
not_after: ASN1Time::from_timestamp(2651852800)
168+
.unwrap()
169+
.timestamp(),
170+
not_before: ASN1Time::from_timestamp(2651852800)
171+
.unwrap()
172+
.timestamp(),
151173
issuer: "".to_string(),
152174
},
153175
)],

0 commit comments

Comments
 (0)