From 17828ec2a8acac7f374d7b1931adecc9b6df3ab8 Mon Sep 17 00:00:00 2001 From: houseme Date: Tue, 16 Dec 2025 21:21:43 +0800 Subject: [PATCH] Dependabot/cargo/s3s df2434d 1216 (#1170) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 84 ++++++++++++++++---------------------- Cargo.toml | 8 ++-- crates/crypto/Cargo.toml | 2 +- rust-toolchain.toml | 2 +- rustfs/src/storage/ecfs.rs | 78 ++++++++++++++++++++++------------- scripts/run.sh | 12 ++++++ 6 files changed, 103 insertions(+), 83 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index db11c6cc..33c05ca5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -233,15 +233,14 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "argon2" -version = "0.6.0-rc.4" +version = "0.6.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2318b1fbcb6d8ebe255091dce62990be001b47711191a9400225de50a208fec8" +checksum = "a26e88a084142953a0415c47ddf4081eddf9a6d310012bbe92e9827d03e447f0" dependencies = [ "base64ct", "blake2 0.11.0-rc.3", "cpufeatures", "password-hash", - "phc", ] [[package]] @@ -703,9 +702,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.117.0" +version = "1.118.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c134e2d1ad1ad23a8cf88ceccf39d515914f385e670ffc12226013bd16dfe825" +checksum = "d3e6b7079f85d9ea9a70643c9f89f50db70f5ada868fa9cfe08c1ffdf51abc13" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1429,9 +1428,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" dependencies = [ "serde_core", ] @@ -1645,9 +1644,9 @@ checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmake" -version = "0.1.54" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +checksum = "b042e5d8a74ae91bb0961acd039822472ec99f8ab0948cbf6d1369588f8be586" dependencies = [ "cc", ] @@ -3009,7 +3008,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -3279,7 +3278,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -3465,9 +3464,9 @@ dependencies = [ [[package]] name = "fs-err" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d91fd049c123429b018c47887d3f75a265540dd3c30ba9cb7bae9197edb03a" +checksum = "824f08d01d0f496b3eca4f001a13cf17690a6ee930043d20817f547455fd98f8" dependencies = [ "autocfg", "tokio", @@ -4307,7 +4306,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.1", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -4327,7 +4326,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -4587,7 +4586,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -4879,9 +4878,9 @@ dependencies = [ [[package]] name = "local-ip-address" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970fba174cc6a56a865d966e0930414ed6959ef207d53c5406069f4f433dd738" +checksum = "0a60bf300a990b2d1ebdde4228e873e8e4da40d834adbf5265f3da1457ede652" dependencies = [ "libc", "neli", @@ -5284,7 +5283,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -5766,10 +5765,11 @@ dependencies = [ [[package]] name = "password-hash" -version = "0.6.0-rc.4" +version = "0.6.0-rc.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4087c2ea1e1d8a217af92740e5d49eb3ee0e6d8f0df513b375140d6f6265ee" +checksum = "383d290055c99f2dd7dece082088d89494dff6d79277fbac4a7da21c1bf2ab6b" dependencies = [ + "getrandom 0.3.4", "phc", ] @@ -5893,7 +5893,6 @@ checksum = "c61f960577aaac5c259bc0866d685ba315c0ed30793c602d7287f54980913863" dependencies = [ "base64ct", "getrandom 0.3.4", - "rand_core 0.10.0-rc-2", "subtle", ] @@ -6440,7 +6439,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.35", - "socket2 0.6.1", + "socket2 0.5.10", "thiserror 2.0.17", "tokio", "tracing", @@ -6477,9 +6476,9 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.1", + "socket2 0.5.10", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.52.0", ] [[package]] @@ -6718,9 +6717,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.25" +version = "0.12.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" +checksum = "3b4c14b2d9afca6a60277086b0cc6a6ae0b568f6f7916c943a8cdc79f8be240f" dependencies = [ "base64", "bytes", @@ -7746,7 +7745,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -7855,8 +7854,8 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "s3s" -version = "0.12.0-rc.5" -source = "git+https://github.com/s3s-project/s3s.git?branch=main#0d6fe98f06d91eb86c07c13823b037fec64ae683" +version = "0.12.0-rc.6" +source = "git+https://github.com/s3s-project/s3s.git?branch=main#df2434d7ad2f0b774e68f25cae90c053dcb84f24" dependencies = [ "arrayvec", "async-trait", @@ -8866,7 +8865,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix 1.1.2", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -9882,7 +9881,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -9898,7 +9897,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core 0.61.2", + "windows-core", "windows-future", "windows-link 0.1.3", "windows-numerics", @@ -9910,7 +9909,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core 0.61.2", + "windows-core", ] [[package]] @@ -9926,26 +9925,13 @@ dependencies = [ "windows-strings 0.4.2", ] -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - [[package]] name = "windows-future" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core 0.61.2", + "windows-core", "windows-link 0.1.3", "windows-threading", ] @@ -9990,7 +9976,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core 0.61.2", + "windows-core", "windows-link 0.1.3", ] diff --git a/Cargo.toml b/Cargo.toml index 3e18ede3..914fb4bb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -108,7 +108,7 @@ hyper-rustls = { version = "0.27.7", default-features = false, features = ["nati hyper-util = { version = "0.1.19", features = ["tokio", "server-auto", "server-graceful"] } http = "1.4.0" http-body = "1.0.1" -reqwest = { version = "0.12.25", default-features = false, features = ["rustls-tls-webpki-roots", "charset", "http2", "system-proxy", "stream", "json", "blocking"] } +reqwest = { version = "0.12.26", default-features = false, features = ["rustls-tls-webpki-roots", "charset", "http2", "system-proxy", "stream", "json", "blocking"] } socket2 = "0.6.1" tokio = { version = "1.48.0", features = ["fs", "rt-multi-thread"] } tokio-rustls = { version = "0.26.4", default-features = false, features = ["logging", "tls12", "ring"] } @@ -139,7 +139,7 @@ schemars = "1.1.0" # Cryptography and Security aes-gcm = { version = "0.11.0-rc.2", features = ["rand_core"] } -argon2 = { version = "0.6.0-rc.4", features = ["std"] } +argon2 = { version = "0.6.0-rc.5" } blake3 = { version = "1.8.2", features = ["rayon", "mmap"] } chacha20poly1305 = { version = "0.11.0-rc.2" } crc-fast = "1.6.0" @@ -196,7 +196,7 @@ ipnetwork = { version = "0.21.1", features = ["serde"] } lazy_static = "1.5.0" libc = "0.2.178" libsystemd = "0.7.2" -local-ip-address = "0.6.7" +local-ip-address = "0.6.8" lz4 = "1.28.1" matchit = "0.9.0" md-5 = "0.11.0-rc.3" @@ -221,7 +221,7 @@ regex = { version = "1.12.2" } rumqttc = { version = "0.25.1" } rust-embed = { version = "8.9.0" } rustc-hash = { version = "2.1.1" } -s3s = { version = "0.12.0-rc.5", features = ["minio"], git = "https://github.com/s3s-project/s3s.git", branch = "main" } +s3s = { version = "0.12.0-rc.6", features = ["minio"], git = "https://github.com/s3s-project/s3s.git", branch = "main" } serial_test = "3.2.0" shadow-rs = { version = "1.4.0", default-features = false } siphasher = "1.0.1" diff --git a/crates/crypto/Cargo.toml b/crates/crypto/Cargo.toml index f29fee53..b5e47cf5 100644 --- a/crates/crypto/Cargo.toml +++ b/crates/crypto/Cargo.toml @@ -30,7 +30,7 @@ workspace = true [dependencies] aes-gcm = { workspace = true, optional = true } -argon2 = { workspace = true, features = ["std"], optional = true } +argon2 = { workspace = true, optional = true } cfg-if = { workspace = true } chacha20poly1305 = { workspace = true, optional = true } jsonwebtoken = { workspace = true } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 348f24f9..86cba4f7 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -13,5 +13,5 @@ # limitations under the License. [toolchain] -channel = "1.88" +channel = "stable" components = ["rustfmt", "clippy", "rust-src", "rust-analyzer"] diff --git a/rustfs/src/storage/ecfs.rs b/rustfs/src/storage/ecfs.rs index fce10a0b..da069ad9 100644 --- a/rustfs/src/storage/ecfs.rs +++ b/rustfs/src/storage/ecfs.rs @@ -1798,12 +1798,12 @@ impl S3 for FS { mod_time: cached .last_modified .as_ref() - .and_then(|s| time::OffsetDateTime::parse(s, &time::format_description::well_known::Rfc3339).ok()), + .and_then(|s| OffsetDateTime::parse(s, &Rfc3339).ok()), size: cached.content_length, actual_size: cached.content_length, is_dir: false, user_defined: cached.user_metadata.clone(), - version_id: cached.version_id.as_ref().and_then(|v| uuid::Uuid::parse_str(v).ok()), + version_id: cached.version_id.as_ref().and_then(|v| Uuid::parse_str(v).ok()), delete_marker: cached.delete_marker, content_type: cached.content_type.clone(), content_encoding: cached.content_encoding.clone(), @@ -2165,17 +2165,15 @@ impl S3 for FS { } // Build CachedGetObject with full metadata for cache writeback - let last_modified_str = info - .mod_time - .and_then(|t| match t.format(&time::format_description::well_known::Rfc3339) { - Ok(s) => Some(s), - Err(e) => { - warn!("Failed to format last_modified for cache writeback: {}", e); - None - } - }); + let last_modified_str = info.mod_time.and_then(|t| match t.format(&Rfc3339) { + Ok(s) => Some(s), + Err(e) => { + warn!("Failed to format last_modified for cache writeback: {}", e); + None + } + }); - let cached_response = CachedGetObject::new(bytes::Bytes::from(buf.clone()), response_content_length) + let cached_response = CachedGetObject::new(Bytes::from(buf.clone()), response_content_length) .with_content_type(info.content_type.clone().unwrap_or_default()) .with_e_tag(info.etag.clone().unwrap_or_default()) .with_last_modified(last_modified_str.unwrap_or_default()); @@ -2389,8 +2387,12 @@ impl S3 for FS { let info = store.get_object_info(&bucket, &key, &opts).await.map_err(ApiError::from)?; if let Some(match_etag) = if_none_match { - if let Some(strong_etag) = match_etag.as_strong() { - if info.etag.as_ref().is_some_and(|etag| etag == strong_etag) { + if let Some(strong_etag) = match_etag.into_etag() { + if info + .etag + .as_ref() + .is_some_and(|etag| ETag::Strong(etag.clone()) == strong_etag) + { return Err(S3Error::new(S3ErrorCode::NotModified)); } } @@ -2407,8 +2409,12 @@ impl S3 for FS { } if let Some(match_etag) = if_match { - if let Some(strong_etag) = match_etag.as_strong() { - if info.etag.as_ref().is_some_and(|etag| etag != strong_etag) { + if let Some(strong_etag) = match_etag.into_etag() { + if info + .etag + .as_ref() + .is_some_and(|etag| ETag::Strong(etag.clone()) != strong_etag) + { return Err(S3Error::new(S3ErrorCode::PreconditionFailed)); } } @@ -2869,15 +2875,23 @@ impl S3 for FS { Ok(info) => { if !info.delete_marker { if let Some(ifmatch) = if_match { - if let Some(strong_etag) = ifmatch.as_strong() { - if info.etag.as_ref().is_some_and(|etag| etag != strong_etag) { + if let Some(strong_etag) = ifmatch.into_etag() { + if info + .etag + .as_ref() + .is_some_and(|etag| ETag::Strong(etag.clone()) != strong_etag) + { return Err(s3_error!(PreconditionFailed)); } } } if let Some(ifnonematch) = if_none_match { - if let Some(strong_etag) = ifnonematch.as_strong() { - if info.etag.as_ref().is_some_and(|etag| etag == strong_etag) { + if let Some(strong_etag) = ifnonematch.into_etag() { + if info + .etag + .as_ref() + .is_some_and(|etag| ETag::Strong(etag.clone()) == strong_etag) + { return Err(s3_error!(PreconditionFailed)); } } @@ -3678,8 +3692,8 @@ impl S3 for FS { // Validate copy conditions (simplified for now) if let Some(if_match) = copy_source_if_match { if let Some(ref etag) = src_info.etag { - if let Some(strong_etag) = if_match.as_strong() { - if etag != strong_etag { + if let Some(strong_etag) = if_match.into_etag() { + if ETag::Strong(etag.clone()) != strong_etag { return Err(s3_error!(PreconditionFailed)); } } else { @@ -3693,8 +3707,8 @@ impl S3 for FS { if let Some(if_none_match) = copy_source_if_none_match { if let Some(ref etag) = src_info.etag { - if let Some(strong_etag) = if_none_match.as_strong() { - if etag == strong_etag { + if let Some(strong_etag) = if_none_match.into_etag() { + if ETag::Strong(etag.clone()) == strong_etag { return Err(s3_error!(PreconditionFailed)); } } @@ -3970,15 +3984,23 @@ impl S3 for FS { Ok(info) => { if !info.delete_marker { if let Some(ifmatch) = if_match { - if let Some(strong_etag) = ifmatch.as_strong() { - if info.etag.as_ref().is_some_and(|etag| etag != strong_etag) { + if let Some(strong_etag) = ifmatch.into_etag() { + if info + .etag + .as_ref() + .is_some_and(|etag| ETag::Strong(etag.clone()) != strong_etag) + { return Err(s3_error!(PreconditionFailed)); } } } if let Some(ifnonematch) = if_none_match { - if let Some(strong_etag) = ifnonematch.as_strong() { - if info.etag.as_ref().is_some_and(|etag| etag == strong_etag) { + if let Some(strong_etag) = ifnonematch.into_etag() { + if info + .etag + .as_ref() + .is_some_and(|etag| ETag::Strong(etag.clone()) == strong_etag) + { return Err(s3_error!(PreconditionFailed)); } } diff --git a/scripts/run.sh b/scripts/run.sh index a4329132..0dc3a32a 100755 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -101,6 +101,18 @@ export RUSTFS_NOTIFY_WEBHOOK_ENABLE_MASTER="on" # Whether to enable webhook noti export RUSTFS_NOTIFY_WEBHOOK_ENDPOINT_MASTER="http://[::]:3020/webhook" # Webhook notification address export RUSTFS_NOTIFY_WEBHOOK_QUEUE_DIR_MASTER="$current_dir/deploy/logs/notify" +export RUSTFS_AUDIT_WEBHOOK_ENABLE="on" # Whether to enable webhook audit +export RUSTFS_AUDIT_WEBHOOK_ENDPOINT="http://[::]:3020/webhook" # Webhook audit address +export RUSTFS_AUDIT_WEBHOOK_QUEUE_DIR="$current_dir/deploy/logs/audit" + +export RUSTFS_AUDIT_WEBHOOK_ENABLE_PRIMARY="on" # Whether to enable webhook audit +export RUSTFS_AUDIT_WEBHOOK_ENDPOINT_PRIMARY="http://[::]:3020/webhook" # Webhook audit address +export RUSTFS_AUDIT_WEBHOOK_QUEUE_DIR_PRIMARY="$current_dir/deploy/logs/audit" + +export RUSTFS_AUDIT_WEBHOOK_ENABLE_MASTER="on" # Whether to enable webhook audit +export RUSTFS_AUDIT_WEBHOOK_ENDPOINT_MASTER="http://[::]:3020/webhook" # Webhook audit address +export RUSTFS_AUDIT_WEBHOOK_QUEUE_DIR_MASTER="$current_dir/deploy/logs/audit" + # export RUSTFS_POLICY_PLUGIN_URL="http://localhost:8181/v1/data/rustfs/authz/allow" # The URL of the OPA system # export RUSTFS_POLICY_PLUGIN_AUTH_TOKEN="your-opa-token" # The authentication token for the OPA system is optional