From d706e7c614ab20d1149daee16f5be53fffffc0cb Mon Sep 17 00:00:00 2001 From: Slatian Date: Sat, 9 Dec 2023 23:21:19 +0100 Subject: [PATCH] Update to axum 0.7 --- Cargo.lock | 215 +++++++++++++++++++++++++---------------------- Cargo.toml | 11 +-- src/main.rs | 17 ++-- src/ratelimit.rs | 7 +- src/view.rs | 4 +- 5 files changed, 135 insertions(+), 119 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17e08c0..3e9dd7e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -108,20 +108,20 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.20" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "202651474fe73c62d9e0a56c6133f7a0ff1dc1c8cf7a5b03381af2a26553ac9d" dependencies = [ "async-trait", "axum-core", "axum-macros", - "bitflags 1.3.2", "bytes", "futures-util", - "headers", - "http", + "http 1.0.0", "http-body", + "http-body-util", "hyper", + "hyper-util", "itoa", "matchit", "memchr", @@ -142,9 +142,9 @@ dependencies = [ [[package]] name = "axum-client-ip" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ef117890a418b7832678d9ea1e1c08456dd7b2fd1dadb9676cd6f0fe7eb4b21" +checksum = "0f5ffe4637708b326c621d5494ab6c91dcf62ee440fa6ee967d289315a9c6f81" dependencies = [ "axum", "forwarded-header-value", @@ -153,38 +153,42 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "77cb22c689c44d4c07b0ab44ebc25d69d8ae601a2f28fb8d672d344178fa17aa" dependencies = [ "async-trait", "bytes", "futures-util", - "http", + "http 1.0.0", "http-body", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper", "tower-layer", "tower-service", ] [[package]] name = "axum-extra" -version = "0.7.7" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93e433be9382c737320af3924f7d5fc6f89c155cf2bf88949d8f5126fab283f" +checksum = "523ae92256049a3b02d3bb4df80152386cd97ddba0c8c5077619bdc8c4b1859b" dependencies = [ "axum", "axum-core", "bytes", "cookie", "futures-util", - "http", + "headers", + "http 1.0.0", "http-body", + "http-body-util", "mime", "pin-project-lite", "serde", - "tokio", "tower", "tower-layer", "tower-service", @@ -192,9 +196,9 @@ dependencies = [ [[package]] name = "axum-macros" -version = "0.3.8" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdca6a10ecad987bda04e95606ef85a5417dcaac1a78455242d72e031e2b6b62" +checksum = "5a2edad600410b905404c594e2523549f1bcd4bded1e252c8f74524ccce0b867" dependencies = [ "heck", "proc-macro2", @@ -363,9 +367,9 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "cookie" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" dependencies = [ "percent-encoding", "time", @@ -483,6 +487,7 @@ dependencies = [ "axum-extra", "clap", "governor", + "http 1.0.0", "idna 0.4.0", "lazy_static", "lib-humus", @@ -493,7 +498,7 @@ dependencies = [ "serde", "tera", "tokio", - "toml 0.8.8", + "toml", "tower", "tower-http", "trust-dns-proto", @@ -718,7 +723,26 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.11", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d308f63daf4181410c242d34c11f928dcb3aa105852019e043c9d1f4e4368a" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 1.0.0", "indexmap", "slab", "tokio", @@ -734,14 +758,14 @@ checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "headers" -version = "0.3.9" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" dependencies = [ "base64", "bytes", "headers-core", - "http", + "http 1.0.0", "httpdate", "mime", "sha1", @@ -749,11 +773,11 @@ dependencies = [ [[package]] name = "headers-core" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http", + "http 1.0.0", ] [[package]] @@ -791,21 +815,44 @@ dependencies = [ ] [[package]] -name = "http-body" -version = "0.4.6" +name = "http" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" dependencies = [ "bytes", - "http", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.0.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +dependencies = [ + "bytes", + "futures-util", + "http 1.0.0", + "http-body", "pin-project-lite", ] [[package]] name = "http-range-header" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" +checksum = "3ce4ef31cda248bbdb6e6820603b82dfcd9e833db65a43e997a0ccec777d11fe" [[package]] name = "httparse" @@ -830,25 +877,41 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.27" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "403f9214f3e703236b221f1a9cd88ec8b4adfa5296de01ab96216361f4692f56" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", - "http", + "h2 0.4.0", + "http 1.0.0", "http-body", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca339002caeb0d159cc6e023dff48e199f081e42fa039895c7c6f38b37f2e9d" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.0.0", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower", "tower-service", "tracing", - "want", ] [[package]] @@ -926,7 +989,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.5", + "socket2", "widestring", "windows-sys 0.48.0", "winreg", @@ -970,15 +1033,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lib-humus" -version = "0.1.0" -source = "git+https://codeberg.org/slatian/lib-humus.git#e168516793b4d93aec45142cce379ec5454be166" +version = "0.2.0" +source = "git+https://codeberg.org/slatian/lib-humus.git#c4cb7facd6d0455a97a417c016dd4a7ca34bda3b" dependencies = [ "axum", "axum-extra", "mime", "serde", "tera", - "toml 0.7.8", + "toml", ] [[package]] @@ -1398,7 +1461,7 @@ checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", - "socket2 0.5.5", + "socket2", "tracing", "windows-sys 0.48.0", ] @@ -1732,16 +1795,6 @@ version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.5" @@ -1886,7 +1939,7 @@ dependencies = [ "num_cpus", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] @@ -1926,18 +1979,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "toml" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.19.15", -] - [[package]] name = "toml" version = "0.8.8" @@ -1947,7 +1988,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.21.0", + "toml_edit", ] [[package]] @@ -1959,19 +2000,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - [[package]] name = "toml_edit" version = "0.21.0" @@ -2003,16 +2031,16 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.4.4" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +checksum = "09e12e6351354851911bdf8c2b8f2ab15050c567d70a8b9a37ae7b8301a4080d" dependencies = [ "bitflags 2.4.1", "bytes", - "futures-core", "futures-util", - "http", + "http 1.0.0", "http-body", + "http-body-util", "http-range-header", "httpdate", "mime", @@ -2084,8 +2112,8 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "h2", - "http", + "h2 0.3.22", + "http 0.2.11", "idna 0.4.0", "ipnet", "once_cell", @@ -2128,12 +2156,6 @@ dependencies = [ "webpki-roots", ] -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "typenum" version = "1.17.0" @@ -2271,15 +2293,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index e414d3b..c0aefc9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,11 +7,11 @@ authors = ["Slatian "] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -lib-humus = { version="0.1", features=["axum-view+cookie"], git="https://codeberg.org/slatian/lib-humus.git" } +lib-humus = { version="0.2", features=["axum-view+cookie"], git="https://codeberg.org/slatian/lib-humus.git" } -axum = { version = "0.6", features = ["macros", "headers"] } -axum-extra = { version = "0.7", features = ["cookie"] } -axum-client-ip = "0.4" +axum = { version = "0.7", features = ["macros"] } +axum-extra = { version = "0.9", features = ["cookie", "typed-header"] } +axum-client-ip = "0.5" clap = { version = "4", features = ["derive"] } governor = "0.6" idna = "0.4" @@ -23,8 +23,9 @@ tokio = { version = "1", features = ["macros","signal"] } tera = "1" toml = "0.8" tower = "0.4" -tower-http = { version = "0.4", features = ["fs"] } +tower-http = { version = "0.5", features = ["fs"] } trust-dns-proto = "0.23" trust-dns-resolver = { version = "0.23", features = ["dns-over-rustls","dns-over-https","dns-over-quic"] } maxminddb = "0.23" mime = "0.3" +http = "1.0" diff --git a/src/main.rs b/src/main.rs index 3a6d6b5..e24fe0d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,20 +1,21 @@ use axum::{ + body::Body, extract::{ self, Query, State, Extension, }, - headers, - http::Request, handler::Handler, + http::Request, middleware::{self, Next}, response::Response, Router, routing::get, - TypedHeader, }; use axum_client_ip::SecureClientIp; +use axum_extra::headers; +use axum_extra::TypedHeader; use clap::Parser; use lazy_static::lazy_static; use regex::Regex; @@ -311,21 +312,21 @@ async fn main() { println!("Starting Server on {} ...",listen_on); - axum::Server::bind(&listen_on) - .serve(app.into_make_service_with_connect_info::()) + let listener = tokio::net::TcpListener::bind(&listen_on).await.unwrap(); + axum::serve(listener, app.into_make_service_with_connect_info::()) .await .unwrap(); } -async fn settings_query_middleware( +async fn settings_query_middleware( Query(query): Query, Extension(config): Extension, Extension(derived_config): Extension, cookie_header: Option>, user_agent_header: Option>, - mut req: Request, - next: Next + mut req: Request, + next: Next ) -> Response { let mut format = query.format; let mut dns_resolver_id = derived_config.default_resolver; diff --git a/src/ratelimit.rs b/src/ratelimit.rs index 065dbb9..b92bd43 100644 --- a/src/ratelimit.rs +++ b/src/ratelimit.rs @@ -1,5 +1,6 @@ use axum_client_ip::SecureClientIp; use axum::{ + body::Body, extract::Extension, http::{ Request, @@ -40,11 +41,11 @@ pub fn build_rate_limiting_state( Extension(arc_limiter) } -pub async fn rate_limit_middleware( +pub async fn rate_limit_middleware( SecureClientIp(address): SecureClientIp, Extension(arc_limiter): Extension>>, - req: Request, - next: Next + req: Request, + next: Next ) -> Response { let limiter = Arc::clone(&arc_limiter); diff --git a/src/view.rs b/src/view.rs index 148fe4f..6349395 100644 --- a/src/view.rs +++ b/src/view.rs @@ -51,10 +51,10 @@ impl HumusView for View { fn get_cookie_header(&self, settings: &QuerySettings) -> Option { Some( - Cookie::build("dns_resolver",settings.dns_resolver_id.to_string()) + Cookie::build(Cookie::new("dns_resolver",settings.dns_resolver_id.to_string())) .path("/") .same_site(cookie::SameSite::Strict) - .finish() + .build() .to_string() ) }