From e1faf0c7d842a6283fdd6b2a94b97b938dfdbc8d Mon Sep 17 00:00:00 2001 From: Robert Pack Date: Sun, 28 Jan 2024 23:30:35 +0100 Subject: [PATCH] chore: update axum and related --- Cargo.lock | 492 +++++++++++------------------ Cargo.toml | 14 +- src/server/middlewares/jwt.rs | 41 +-- src/server/routers/mod.rs | 16 +- src/server/utilities/signed_url.rs | 5 +- 5 files changed, 222 insertions(+), 346 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3110ae3..58c4b87 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,12 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "RustyXML" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5ace29ee3216de37c0546865ad08edef58b0f9e76838ed8959a84a990e58c5" - [[package]] name = "addr2line" version = "0.19.0" @@ -29,7 +23,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.12", + "getrandom", "once_cell", "version_check", ] @@ -42,7 +36,7 @@ checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if 1.0.0", "const-random", - "getrandom 0.2.12", + "getrandom", "once_cell", "version_check", ] @@ -398,7 +392,7 @@ dependencies = [ "parking", "polling", "slab", - "socket2", + "socket2 0.4.9", "waker-fn", "windows-sys 0.42.0", ] @@ -427,7 +421,7 @@ dependencies = [ "chrono", "hmac 0.11.0", "log", - "rand 0.8.5", + "rand", "serde", "serde_json", "sha2 0.9.9", @@ -511,19 +505,19 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.20" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", "bytes", "futures-util", - "headers", - "http", - "http-body", - "hyper", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.1.0", + "hyper-util", "itoa", "matchit", "memchr", @@ -540,37 +534,43 @@ dependencies = [ "tower", "tower-layer", "tower-service", + "tracing", ] [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" dependencies = [ "async-trait", "bytes", "futures-util", - "http", - "http-body", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper", "tower-layer", "tower-service", + "tracing", ] [[package]] name = "axum-extra" -version = "0.8.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab90e7b70bea63a153137162affb6a0bce26b584c24a4c7885509783e2cf30b" +checksum = "895ff42f72016617773af68fb90da2a9677d89c62338ec09162d4909d86fdd8f" dependencies = [ "axum", "axum-core", "bytes", "futures-util", - "http", - "http-body", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", "mime", "pin-project-lite", "serde", @@ -583,75 +583,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "azure_core" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ccd63c07d1fbfb3d4543d7ea800941bf5a30db1911b9b9e4db3b2c4210a434f" -dependencies = [ - "async-trait", - "base64 0.21.0", - "bytes", - "dyn-clone", - "futures", - "getrandom 0.2.12", - "http-types", - "log", - "paste", - "pin-project", - "quick-xml 0.31.0", - "rand 0.8.5", - "reqwest", - "rustc_version", - "serde", - "serde_json", - "time", - "url", - "uuid", -] - -[[package]] -name = "azure_storage" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ca0a07f89fd72a006da4713e93af3d6c44a693e61a1c3c2e7985de39c182e8" -dependencies = [ - "RustyXML", - "async-trait", - "azure_core", - "bytes", - "futures", - "hmac 0.12.1", - "log", - "serde", - "serde_derive", - "serde_json", - "sha2 0.10.6", - "time", - "url", - "uuid", -] - -[[package]] -name = "azure_storage_blobs" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8096c04d370118323c42b2752aa1883e4880a56ef65239f317b359f263b6e194" -dependencies = [ - "RustyXML", - "azure_core", - "azure_storage", - "bytes", - "futures", - "log", - "serde", - "serde_derive", - "serde_json", - "time", - "url", - "uuid", -] - [[package]] name = "backtrace" version = "0.3.67" @@ -945,7 +876,7 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" dependencies = [ - "getrandom 0.2.12", + "getrandom", "once_cell", "proc-macro-hack", "tiny-keccak", @@ -1214,9 +1145,6 @@ dependencies = [ "async-trait", "axum", "axum-extra", - "azure_core", - "azure_storage", - "azure_storage_blobs", "chrono", "clap", "colored", @@ -1229,11 +1157,12 @@ dependencies = [ "getset", "git-version", "glob", + "hyper 0.14.25", "jsonwebtoken", "md5", "object_store 0.9.0", "once_cell", - "rand 0.8.5", + "rand", "rusoto_core 0.48.0", "rusoto_credential 0.48.0", "rusoto_s3", @@ -1241,7 +1170,7 @@ dependencies = [ "serde_json", "serde_yaml", "serial_test", - "shellexpand 3.1.0", + "shellexpand", "sqlx", "strum", "strum_macros", @@ -1295,7 +1224,7 @@ dependencies = [ "parking_lot", "parquet", "percent-encoding", - "rand 0.8.5", + "rand", "regex", "rusoto_core 0.47.0", "rusoto_credential 0.47.0", @@ -1327,7 +1256,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" dependencies = [ "powerfmt", - "serde", ] [[package]] @@ -1416,12 +1344,6 @@ version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0" -[[package]] -name = "dyn-clone" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" - [[package]] name = "dynamodb_lock" version = "0.6.1" @@ -1707,17 +1629,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.12" @@ -1727,7 +1638,7 @@ dependencies = [ "cfg-if 1.0.0", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] @@ -1800,7 +1711,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.9", "indexmap 1.9.2", "slab", "tokio", @@ -1808,6 +1719,25 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 1.0.0", + "indexmap 2.0.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "half" version = "2.2.1" @@ -1842,31 +1772,6 @@ dependencies = [ "hashbrown 0.12.3", ] -[[package]] -name = "headers" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" -dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", - "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 = "heck" version = "0.4.1" @@ -1954,6 +1859,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.5" @@ -1961,34 +1877,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", - "http", + "http 0.2.9", "pin-project-lite", ] [[package]] -name = "http-range-header" -version = "0.3.0" +name = "http-body" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.0.0", +] [[package]] -name = "http-types" -version = "2.12.0" +name = "http-body-util" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" +checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" dependencies = [ - "anyhow", - "async-channel", - "base64 0.13.1", - "futures-lite", - "infer", + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", "pin-project-lite", - "rand 0.7.3", - "serde", - "serde_json", - "serde_qs", - "serde_urlencoded", - "url", ] [[package]] @@ -2019,20 +1932,39 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.16", + "http 0.2.9", + "http-body 0.4.5", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", "want", ] +[[package]] +name = "hyper" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.2", + "http 1.0.0", + "http-body 1.0.0", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "tokio", +] + [[package]] name = "hyper-rustls" version = "0.22.1" @@ -2041,7 +1973,7 @@ checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" dependencies = [ "ct-logs", "futures-util", - "hyper", + "hyper 0.14.25", "log", "rustls 0.19.1", "rustls-native-certs 0.5.0", @@ -2056,8 +1988,8 @@ version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" dependencies = [ - "http", - "hyper", + "http 0.2.9", + "hyper 0.14.25", "rustls 0.20.8", "tokio", "tokio-rustls 0.23.4", @@ -2070,12 +2002,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper", + "hyper 0.14.25", "native-tls", "tokio", "tokio-native-tls", ] +[[package]] +name = "hyper-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdea9aac0dbe5a9240d68cfd9501e2db94222c6dc06843e06640b9e07f0fdc67" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "hyper 1.1.0", + "pin-project-lite", + "socket2 0.5.5", + "tokio", + "tracing", +] + [[package]] name = "iana-time-zone" version = "0.1.53" @@ -2154,12 +2104,6 @@ dependencies = [ "serde", ] -[[package]] -name = "infer" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" - [[package]] name = "instant" version = "0.1.12" @@ -2544,7 +2488,7 @@ checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.45.0", ] @@ -2623,7 +2567,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand", "smallvec", "zeroize", ] @@ -2720,12 +2664,12 @@ dependencies = [ "chrono", "futures", "humantime", - "hyper", + "hyper 0.14.25", "itertools 0.11.0", "parking_lot", "percent-encoding", "quick-xml 0.30.0", - "rand 0.8.5", + "rand", "reqwest", "ring 0.16.20", "rustls-pemfile 1.0.2", @@ -2750,12 +2694,12 @@ dependencies = [ "chrono", "futures", "humantime", - "hyper", + "hyper 0.14.25", "itertools 0.12.0", "parking_lot", "percent-encoding", "quick-xml 0.31.0", - "rand 0.8.5", + "rand", "reqwest", "ring 0.17.7", "rustls-pemfile 2.0.0", @@ -2926,7 +2870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ "base64ct", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -3166,19 +3110,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.5" @@ -3186,18 +3117,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", ] [[package]] @@ -3207,16 +3128,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -3225,16 +3137,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.12", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", + "getrandom", ] [[package]] @@ -3252,7 +3155,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.12", + "getrandom", "redox_syscall", "thiserror", ] @@ -3300,17 +3203,15 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", - "http", - "http-body", - "hyper", + "h2 0.3.16", + "http 0.2.9", + "http-body 0.4.5", + "hyper 0.14.25", "hyper-rustls 0.23.2", - "hyper-tls", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", @@ -3321,7 +3222,6 @@ dependencies = [ "serde_json", "serde_urlencoded", "tokio", - "tokio-native-tls", "tokio-rustls 0.23.4", "tokio-util", "tower-service", @@ -3356,7 +3256,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", - "getrandom 0.2.12", + "getrandom", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -3389,7 +3289,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core 0.6.4", + "rand_core", "signature", "spki", "subtle", @@ -3407,8 +3307,8 @@ dependencies = [ "bytes", "crc32fast", "futures", - "http", - "hyper", + "http 0.2.9", + "hyper 0.14.25", "hyper-rustls 0.22.1", "lazy_static", "log", @@ -3432,8 +3332,8 @@ dependencies = [ "bytes", "crc32fast", "futures", - "http", - "hyper", + "http 0.2.9", + "hyper 0.14.25", "hyper-tls", "lazy_static", "log", @@ -3456,7 +3356,7 @@ dependencies = [ "chrono", "dirs-next", "futures", - "hyper", + "hyper 0.14.25", "serde", "serde_json", "shlex", @@ -3474,7 +3374,7 @@ dependencies = [ "chrono", "dirs-next", "futures", - "hyper", + "hyper 0.14.25", "serde", "serde_json", "shlex", @@ -3522,8 +3422,8 @@ dependencies = [ "futures", "hex", "hmac 0.11.0", - "http", - "hyper", + "http 0.2.9", + "hyper 0.14.25", "log", "md-5 0.9.1", "percent-encoding", @@ -3548,8 +3448,8 @@ dependencies = [ "futures", "hex", "hmac 0.11.0", - "http", - "hyper", + "http 0.2.9", + "hyper 0.14.25", "log", "md-5 0.9.1", "percent-encoding", @@ -3578,9 +3478,9 @@ dependencies = [ [[package]] name = "rust-embed" -version = "6.8.1" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a36224c3276f8c4ebc8c20f158eca7ca4359c8db89991c4925132aaaf6702661" +checksum = "a82c0bbc10308ed323529fd3c1dce8badda635aa319a5ff0e6466f33b8101e3f" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -3589,23 +3489,22 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "6.8.1" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b94b81e5b2c284684141a2fb9e2a31be90638caf040bf9afbc5a0416afe1ac" +checksum = "6227c01b1783cdfee1bcf844eb44594cd16ec71c35305bf1c9fb5aade2735e16" dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "shellexpand 2.1.2", "syn 2.0.28", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "7.8.1" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d38ff6bf570dc3bb7100fce9f7b60c33fa71d80e88da3f2580df4ff2bdded74" +checksum = "8cb0a25bfbb2d4b4402179c2cf030387d9990857ce08a32592c6238db9fa8665" dependencies = [ "sha2 0.10.6", "walkdir", @@ -3882,17 +3781,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_qs" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" -dependencies = [ - "percent-encoding", - "serde", - "thiserror", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4009,15 +3897,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shellexpand" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4" -dependencies = [ - "dirs", -] - [[package]] name = "shellexpand" version = "3.1.0" @@ -4049,7 +3928,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" dependencies = [ "digest 0.10.6", - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -4117,6 +3996,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" version = "0.5.2" @@ -4280,7 +4169,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand 0.8.5", + "rand", "rsa", "serde", "sha1", @@ -4321,7 +4210,7 @@ dependencies = [ "md-5 0.10.5", "memchr", "once_cell", - "rand 0.8.5", + "rand", "serde", "serde_json", "sha1", @@ -4445,7 +4334,7 @@ checksum = "5cdfeedde818bd60d0475ca2081f55a0e4567aad05f774b2733a7c3e02245ea4" dependencies = [ "base64 0.13.1", "bytes", - "http", + "http 0.2.9", "percent-encoding", "ring 0.16.20", "serde", @@ -4489,7 +4378,7 @@ dependencies = [ "hex", "hmac 0.12.1", "log", - "rand 0.8.5", + "rand", "serde", "serde_json", "sha2 0.10.6", @@ -4500,7 +4389,7 @@ name = "testutils" version = "1.0.0" dependencies = [ "chrono", - "rand 0.8.5", + "rand", "regex", "tempfile", "uuid", @@ -4555,7 +4444,6 @@ checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ "deranged", "itoa", - "js-sys", "libc", "num_threads", "powerfmt", @@ -4618,7 +4506,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.4.9", "tokio-macros", "windows-sys 0.45.0", ] @@ -4719,17 +4607,15 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1d42a9b3f3ec46ba828e8d376aec14592ea199f70a06a548587ecd1c4ab658" +checksum = "0da193277a4e2c33e59e09b5861580c33dd0a637c3883d0fa74ba40c0374af2e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-range-header", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", "pin-project-lite", "tower-layer", "tower-service", @@ -4942,9 +4828,9 @@ dependencies = [ [[package]] name = "utoipa" -version = "3.5.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82b1bc5417102a73e8464c686eef947bdfb99fcdfc0a4f228e81afa9526470a" +checksum = "272ebdfbc99111033031d2f10e018836056e4d2c8e2acda76450ec7974269fa7" dependencies = [ "indexmap 2.0.0", "serde", @@ -4954,9 +4840,9 @@ dependencies = [ [[package]] name = "utoipa-gen" -version = "3.5.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d96dcd6fc96f3df9b3280ef480770af1b7c5d14bc55192baa9b067976d920c" +checksum = "d3c9f4d08338c1bfa70dde39412a040a884c6f318b3d09aaaf3437a1e52027fc" dependencies = [ "proc-macro-error", "proc-macro2", @@ -4967,9 +4853,9 @@ dependencies = [ [[package]] name = "utoipa-swagger-ui" -version = "3.1.5" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84614caa239fb25b2bb373a52859ffd94605ceb256eeb1d63436325cf81e3653" +checksum = "0b39868d43c011961e04b41623e050aedf2cc93652562ff7935ce0f819aaf2da" dependencies = [ "axum", "mime_guess", @@ -4987,7 +4873,7 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" dependencies = [ - "getrandom 0.2.12", + "getrandom", "serde", ] @@ -5087,12 +4973,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index 9961244..2218af6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,15 +10,13 @@ argon2 = "0.5.0" anyhow = { version = "1.0.69", features = ["backtrace"] } async-session = "3.0.0" async-trait = "0.1.64" -axum = { version = "0.6.20", features = ["headers"] } -axum-extra = { version = "0.8", features = ["json-lines"] } -azure_core = "0.17.0" -azure_storage = "0.17.0" -azure_storage_blobs = "0.17.0" +axum = { version = "0.7.4" } +axum-extra = { version = "0.9.2", features = ["json-lines"] } clap = "4.1.4" deltalake = { version = "0.16", features = ["s3", "azure", "gcs"] } futures = "0.3.28" futures-util = "0.3.28" +hyper = { version = "0.14.13" } tokio = { version = "1.25.0", features = ["full", "rt-multi-thread"] } tower = { version = "0.4.13", features = ["limit", "filter", "util"] } config = "0.13.3" @@ -55,10 +53,10 @@ time = { version = "0.3.30", features = ["local-offset"] } tracing = "0.1.37" tracing-log = "0.2" tracing-subscriber = { version = "0.3.16", features = ["env-filter", "json"] } -tower-http = { version = "0.4", features = ["cors"] } +tower-http = { version = "0.5", features = ["cors"] } url = { version = "2.3.1", features = ["serde"] } -utoipa = { version = "3.1.1", features = ["axum_extras"] } -utoipa-swagger-ui = { version = "3.1.1", features = ["axum"] } +utoipa = { version = "4", features = ["axum_extras"] } +utoipa-swagger-ui = { version = "6", features = ["axum"] } uuid = { version = "1.3.0", features = ["v4", "serde"] } validator = { version = "0.16.0", features = ["derive"] } diff --git a/src/server/middlewares/jwt.rs b/src/server/middlewares/jwt.rs index 9eace89..f54af82 100644 --- a/src/server/middlewares/jwt.rs +++ b/src/server/middlewares/jwt.rs @@ -1,6 +1,5 @@ -use anyhow::anyhow; -use axum::headers::authorization::Bearer; -use axum::headers::{Authorization, HeaderMapExt}; +use anyhow::{anyhow, Context}; +use axum::body::Body; use axum::http::Request; use axum::middleware::Next; use axum::response::Response; @@ -72,19 +71,29 @@ impl Keys { } } +fn extract_auth(request: &Request) -> Result { + let Some(auth) = request.headers().get("authorization") else { + tracing::error!("bearer token is missing"); + return Err(Error::BadRequest); + }; + let token = auth + .to_str() + .context("failed to read bearer token")? + .splitn(2, ' ') + .collect::>()[1] + .to_owned(); + Ok(token) +} + #[tracing::instrument(skip(next))] -pub async fn as_admin( - mut request: Request, - next: Next, -) -> std::result::Result -where - T: std::fmt::Debug, -{ - let Some(auth) = request.headers().typed_get::>() else { +pub async fn as_admin( + mut request: Request, + next: Next, +) -> std::result::Result { + let Ok(token) = extract_auth(&request) else { tracing::error!("bearer token is missing"); return Err(Error::BadRequest); }; - let token = auth.token().to_owned(); let Ok(jwt) = decode::(&token, &JWT_SECRET.decoding, &Validation::default()) else { tracing::error!("bearer token cannot be decoded"); return Err(Error::Unauthorized); @@ -118,15 +127,11 @@ where } #[tracing::instrument(skip(next))] -pub async fn as_guest(request: Request, next: Next) -> std::result::Result -where - T: std::fmt::Debug, -{ - let Some(auth) = request.headers().typed_get::>() else { +pub async fn as_guest(request: Request, next: Next) -> std::result::Result { + let Ok(token) = extract_auth(&request) else { tracing::error!("bearer token is missing"); return Err(Error::BadRequest); }; - let token = auth.token().to_owned(); let Ok(_) = decode::(&token, &JWT_SECRET.decoding, &Validation::default()) else { tracing::error!("bearer token cannot be decoded"); return Err(Error::Unauthorized)?; diff --git a/src/server/routers/mod.rs b/src/server/routers/mod.rs index 9c492c2..75e9659 100644 --- a/src/server/routers/mod.rs +++ b/src/server/routers/mod.rs @@ -13,6 +13,7 @@ use axum::Router; use rusoto_credential::AwsCredentials; use sqlx::PgPool; use tame_gcs::signing::ServiceAccount; +use tokio::net::TcpListener; use tower_http::cors::CorsLayer; use utoipa::OpenApi; use utoipa_swagger_ui::SwaggerUi; @@ -151,18 +152,11 @@ pub async fn bind( ) .await .context("failed to create axum router")?; - let server_bind = config::fetch::("server_bind"); - let addr = server_bind.as_str().parse().context(format!( - r#"failed to parse "{}" to SocketAddr"#, - server_bind - ))?; + let addr = config::fetch::("server_bind"); tracing::info!("delta sharing server listening on {}", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) + let listener = TcpListener::bind(&addr).await?; + axum::serve(listener, app.into_make_service()) .await - .context(format!( - r#"failed to bind "{}" to hyper::Server"#, - server_bind, - ))?; + .context(format!(r#"failed to bind "{}" to hyper::Server"#, addr))?; Ok(()) } diff --git a/src/server/utilities/signed_url.rs b/src/server/utilities/signed_url.rs index 550d39f..38636c2 100644 --- a/src/server/utilities/signed_url.rs +++ b/src/server/utilities/signed_url.rs @@ -2,7 +2,6 @@ use std::str::FromStr; use std::time::Duration; use anyhow::{Context, Result}; -use axum::http::Method; use object_store::azure::MicrosoftAzureBuilder; use object_store::path::Path; use object_store::signer::Signer as ObjectStoreSigner; @@ -85,7 +84,7 @@ impl Signer for dyn ObjectStoreSigner { let path = Path::from(url.path()); let expires_in = Duration::from_secs(crate::config::fetch::("signed_url_ttl")); let signed = self - .signed_url(Method::GET, &path, expires_in) + .signed_url(hyper::http::Method::GET, &path, expires_in) .await .context("failed to sign URL")?; Ok(signed.to_string()) @@ -120,7 +119,7 @@ impl Signer for AzureSigner { let path = Path::parse(url.path().strip_prefix('/').unwrap_or("")) .context("failed to parse blob path")?; let signed = store - .signed_url(Method::GET, &path, self.expiration) + .signed_url(hyper::http::Method::GET, &path, self.expiration) .await .context("failed to sign URL")?;