attempting better logging
This commit is contained in:
parent
d984fd8dce
commit
1cf56055cb
3 changed files with 150 additions and 4 deletions
98
Cargo.lock
generated
98
Cargo.lock
generated
|
@ -89,6 +89,7 @@ dependencies = [
|
|||
"bitflags",
|
||||
"bytes",
|
||||
"futures-util",
|
||||
"headers",
|
||||
"http",
|
||||
"http-body",
|
||||
"hyper",
|
||||
|
@ -128,6 +129,12 @@ dependencies = [
|
|||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
|
||||
|
||||
[[package]]
|
||||
name = "bincode"
|
||||
version = "1.3.3"
|
||||
|
@ -143,6 +150,15 @@ version = "1.3.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.10.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.12.0"
|
||||
|
@ -225,6 +241,15 @@ version = "0.8.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crc32fast"
|
||||
version = "1.3.2"
|
||||
|
@ -234,6 +259,16 @@ dependencies = [
|
|||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crypto-common"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"typenum",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cxx"
|
||||
version = "1.0.94"
|
||||
|
@ -278,6 +313,16 @@ dependencies = [
|
|||
"syn 2.0.13",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
|
||||
dependencies = [
|
||||
"block-buffer",
|
||||
"crypto-common",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.32"
|
||||
|
@ -401,6 +446,16 @@ dependencies = [
|
|||
"slab",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "generic-array"
|
||||
version = "0.14.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
||||
dependencies = [
|
||||
"typenum",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.9"
|
||||
|
@ -437,6 +492,31 @@ version = "0.12.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||
|
||||
[[package]]
|
||||
name = "headers"
|
||||
version = "0.3.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"bitflags",
|
||||
"bytes",
|
||||
"headers-core",
|
||||
"http",
|
||||
"httpdate",
|
||||
"mime",
|
||||
"sha1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "headers-core"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
|
||||
dependencies = [
|
||||
"http",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.2.6"
|
||||
|
@ -724,6 +804,7 @@ dependencies = [
|
|||
"bincode",
|
||||
"chrono",
|
||||
"futures",
|
||||
"headers",
|
||||
"rand",
|
||||
"sanitize-filename-reader-friendly",
|
||||
"serde",
|
||||
|
@ -981,6 +1062,17 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.10.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sharded-slab"
|
||||
version = "0.1.4"
|
||||
|
@ -1275,6 +1367,12 @@ version = "0.2.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
|
||||
|
||||
[[package]]
|
||||
name = "typenum"
|
||||
version = "1.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
|
||||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "2.6.0"
|
||||
|
|
|
@ -8,10 +8,11 @@ edition = "2021"
|
|||
[dependencies]
|
||||
async-bincode = { version = "0.7.0", features = ["tokio"] }
|
||||
async_zip = { version = "0.0.13", features = ["deflate", "tokio", "tokio-fs", "async-compression"] }
|
||||
axum = { version = "0.6.12", features = ["multipart", "http2"] }
|
||||
axum = { version = "0.6.12", features = ["multipart", "http2", "headers"] }
|
||||
bincode = "1.3.3"
|
||||
chrono = { version = "0.4.24", features = ["serde"] }
|
||||
futures = "0.3.28"
|
||||
headers = "0.3.8"
|
||||
rand = { version = "0.8.5", features = ["small_rng"] }
|
||||
sanitize-filename-reader-friendly = "2.2.1"
|
||||
serde = { version = "1.0.160", features = ["serde_derive", "derive"] }
|
||||
|
|
53
src/main.rs
53
src/main.rs
|
@ -4,9 +4,10 @@ use async_zip::{Compression, ZipEntryBuilder};
|
|||
use axum::body::StreamBody;
|
||||
use axum::extract::{ConnectInfo, State};
|
||||
use axum::http::{Request, StatusCode};
|
||||
use axum::middleware::{Next, self};
|
||||
use axum::middleware::{self, Next};
|
||||
use axum::response::{IntoResponse, Response};
|
||||
use axum::routing::{get, post};
|
||||
use axum::TypedHeader;
|
||||
use axum::{
|
||||
extract::{DefaultBodyLimit, Multipart},
|
||||
response::Redirect,
|
||||
|
@ -15,6 +16,7 @@ use axum::{
|
|||
|
||||
use futures::TryStreamExt;
|
||||
|
||||
use headers::{Header, HeaderName, HeaderValue};
|
||||
use rand::distributions::{Alphanumeric, DistString};
|
||||
use rand::rngs::SmallRng;
|
||||
use rand::SeedableRng;
|
||||
|
@ -89,8 +91,23 @@ async fn main() -> io::Result<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
async fn log_source<B>(ConnectInfo(addr): ConnectInfo<SocketAddr>, req: Request<B>, next: Next<B>) -> Response {
|
||||
tracing::info!("{}", addr);
|
||||
// async fn log_source<B>(
|
||||
// ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
||||
// req: Request<B>,
|
||||
// next: Next<B>,
|
||||
// ) -> Response {
|
||||
// tracing::info!("{}", addr);
|
||||
//
|
||||
// next.run(req).await
|
||||
// }
|
||||
|
||||
async fn log_source<B>(
|
||||
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
||||
TypedHeader(ForwardedFor(forwarded_for)): TypedHeader<ForwardedFor>,
|
||||
req: Request<B>,
|
||||
next: Next<B>,
|
||||
) -> Response {
|
||||
tracing::info!("{} : {}", addr, forwarded_for);
|
||||
|
||||
next.run(req).await
|
||||
}
|
||||
|
@ -252,3 +269,33 @@ fn _bytes_to_human_readable(bytes: u64) -> String {
|
|||
|
||||
format!("{:.2} {}", running, UNITS[count - 1])
|
||||
}
|
||||
|
||||
struct ForwardedFor(String);
|
||||
|
||||
static FF_TEXT: &str = "f-forwarded-for";
|
||||
static FF_NAME: HeaderName = HeaderName::from_static(FF_TEXT);
|
||||
|
||||
impl Header for ForwardedFor {
|
||||
fn name() -> &'static HeaderName {
|
||||
&FF_NAME
|
||||
}
|
||||
|
||||
fn decode<'i, I>(values: &mut I) -> Result<Self, headers::Error>
|
||||
where
|
||||
Self: Sized,
|
||||
I: Iterator<Item = &'i headers::HeaderValue>,
|
||||
{
|
||||
let value = values
|
||||
.next()
|
||||
.ok_or_else(headers::Error::invalid)?
|
||||
.to_str()
|
||||
.map_err(|_| headers::Error::invalid())?
|
||||
.to_owned();
|
||||
|
||||
Ok(ForwardedFor(value))
|
||||
}
|
||||
|
||||
fn encode<E: Extend<headers::HeaderValue>>(&self, values: &mut E) {
|
||||
values.extend(std::iter::once(HeaderValue::from_str(&self.0).unwrap()));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue