From c63c6187c5077a4d53abfc8097f6b555e7650a99 Mon Sep 17 00:00:00 2001 From: weisd Date: Mon, 30 Jun 2025 22:38:29 +0800 Subject: [PATCH] fix: clippy --- crates/signer/src/request_signature_v4.rs | 227 ---------------------- rustfs/src/admin/handlers.rs | 2 - rustfs/src/admin/mod.rs | 9 +- rustfs/src/admin/router.rs | 3 +- rustfs/src/storage/ecfs.rs | 2 +- 5 files changed, 6 insertions(+), 237 deletions(-) diff --git a/crates/signer/src/request_signature_v4.rs b/crates/signer/src/request_signature_v4.rs index 96dfe61e..6ce831da 100644 --- a/crates/signer/src/request_signature_v4.rs +++ b/crates/signer/src/request_signature_v4.rs @@ -480,231 +480,4 @@ mod tests { assert_eq!(signature, "34b48302e7b5fa45bde8084f4b7868a86f0a534bc59db6670ed5711ef69dc6f7"); } - - #[test] - fn example_signature() { - // let access_key_id = "rustfsadmin"; - let secret_access_key = "rustfsadmin"; - let timestamp = "20250505T011054Z"; - let t = datetime!(2025-05-05 01:10:54 UTC); - // let bucket = "mblock2"; - let region = "us-east-1"; - let service = "s3"; - let path = "/mblock2/"; - - let mut req = request::Request::builder() - .method(http::Method::GET) - .uri("http://192.168.1.11:9020/mblock2/?"); - - let mut headers = req.headers_mut().expect("err"); - headers.insert("host", "192.168.1.11:9020".parse().unwrap()); - headers.insert( - "x-amz-content-sha256", - "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - .parse() - .unwrap(), - ); - headers.insert("x-amz-date", timestamp.parse().unwrap()); - - let mut query: Vec<(String, String)> = Vec::new(); - let uri = req.uri_ref().unwrap().clone(); - let mut parts = req.uri_ref().unwrap().clone().into_parts(); - parts.path_and_query = Some( - format!("{}?{}", uri.path(), serde_urlencoded::to_string(&query).unwrap()) - .parse() - .unwrap(), - ); - let req = req.uri(Uri::from_parts(parts).unwrap()); - - let canonical_request = get_canonical_request(&req, &v4_ignored_headers, &get_hashed_payload(&req)); - println!("canonical_request: \n{}\n", canonical_request); - assert_eq!( - canonical_request, - concat!( - "GET\n", - "/mblock2/\n", - "\n", - "host:192.168.1.11:9020\n", - "x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n", - "x-amz-date:", - "20250505T011054Z", - "\n", - "\n", - "host;x-amz-content-sha256;x-amz-date\n", - "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - ) - ); - - let string_to_sign = get_string_to_sign_v4(t, region, &canonical_request, service); - println!("string_to_sign: \n{}\n", string_to_sign); - assert_eq!( - string_to_sign, - concat!( - "AWS4-HMAC-SHA256\n", - "20250505T011054Z", - "\n", - "20250505/us-east-1/s3/aws4_request\n", - "c2960d00cc7de7bed3e2e2d1330ec298ded8f78a231c1d32dedac72ebec7f9b0", - ) - ); - - let signing_key = get_signing_key(secret_access_key, region, t, service); - let signature = get_signature(signing_key, &string_to_sign); - println!("signature: \n{}\n", signature); - assert_eq!(signature, "df4116595e27b0dfd1103358947d9199378cc6386c4657abd8c5f0b11ebb4931"); - } - - #[test] - fn example_signature2() { - // let access_key_id = "rustfsadmin"; - let secret_access_key = "rustfsadmin"; - let timestamp = "20250507T051030Z"; - let t = datetime!(2025-05-07 05:10:30 UTC); - // let bucket = "mblock2"; - let region = "us-east-1"; - let service = "s3"; - let path = "/mblock2/"; - - let mut req = request::Request::builder().method(http::Method::GET).uri("http://192.168.1.11:9020/mblock2/?list-type=2&encoding-type=url&prefix=mypre&delimiter=%2F&fetch-owner=true&max-keys=1"); - - let mut headers = req.headers_mut().expect("err"); - headers.insert("host", "192.168.1.11:9020".parse().unwrap()); - headers.insert( - "x-amz-content-sha256", - "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - .parse() - .unwrap(), - ); - headers.insert("x-amz-date", timestamp.parse().unwrap()); - - println!("{:?}", req.uri_ref().unwrap().query()); - let canonical_request = get_canonical_request(&req, &v4_ignored_headers, &get_hashed_payload(&req)); - println!("canonical_request: \n{}\n", canonical_request); - assert_eq!( - canonical_request, - concat!( - "GET\n", - "/mblock2/\n", - "delimiter=%2F&encoding-type=url&fetch-owner=true&list-type=2&max-keys=1&prefix=mypre\n", - "host:192.168.1.11:9020\n", - "x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n", - "x-amz-date:", - "20250507T051030Z", - "\n", - "\n", - "host;x-amz-content-sha256;x-amz-date\n", - "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - ) - ); - - let string_to_sign = get_string_to_sign_v4(t, region, &canonical_request, service); - println!("string_to_sign: \n{}\n", string_to_sign); - assert_eq!( - string_to_sign, - concat!( - "AWS4-HMAC-SHA256\n", - "20250507T051030Z", - "\n", - "20250507/us-east-1/s3/aws4_request\n", - "e6db9e09e9c873aff0b9ca170998b4753f6a6c36c90bc2dca80613affb47f999", - ) - ); - - let signing_key = get_signing_key(secret_access_key, region, t, service); - let signature = get_signature(signing_key, &string_to_sign); - println!("signature: \n{}\n", signature); - assert_eq!(signature, "760278c9a77d5c245ac83d85917bddc3e3b14343091e8f4ad8edbbf73107d685"); - } - - #[test] - fn example_presigned_url() { - let access_key_id = "AKIAIOSFODNN7EXAMPLE"; - let secret_access_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"; - let timestamp = "20130524T000000Z"; - let t = datetime!(2013-05-24 0:00 UTC); - // let bucket = "mblock2"; - let region = "us-east-1"; - let service = "s3"; - let path = "/"; - let session_token = ""; - - let mut req = request::Request::builder() - .method(http::Method::GET) - .uri("http://examplebucket.s3.amazonaws.com/test.txt"); - - let mut headers = req.headers_mut().expect("err"); - headers.insert("host", "examplebucket.s3.amazonaws.com".parse().unwrap()); - - req = pre_sign_v4(req, access_key_id, secret_access_key, "", region, 86400, t); - - let mut canonical_request = req.method_ref().unwrap().as_str().to_string(); - canonical_request.push('\n'); - canonical_request.push_str(req.uri_ref().unwrap().path()); - canonical_request.push('\n'); - canonical_request.push_str(req.uri_ref().unwrap().query().unwrap()); - canonical_request.push('\n'); - canonical_request.push_str(&get_canonical_headers(&req, &v4_ignored_headers)); - canonical_request.push('\n'); - canonical_request.push_str(&get_signed_headers(&req, &v4_ignored_headers)); - canonical_request.push('\n'); - canonical_request.push_str(&get_hashed_payload(&req)); - //println!("canonical_request: \n{}\n", canonical_request); - assert_eq!( - canonical_request, - concat!( - "GET\n", - "/test.txt\n", - "X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20130524T000000Z&X-Amz-Expires=0000086400&X-Amz-SignedHeaders=host&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20130524%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=98f1c9f47b39a4c40662680a9b029b046b7da5542c2e35d67edb8ff18d2ccf5c\n", - "host:examplebucket.s3.amazonaws.com\n", - "\n", - "host\n", - "UNSIGNED-PAYLOAD", - ) - ); - } - - #[test] - fn example_presigned_url2() { - let access_key_id = "rustfsadmin"; - let secret_access_key = "rustfsadmin"; - let timestamp = "20130524T000000Z"; - let t = datetime!(2013-05-24 0:00 UTC); - // let bucket = "mblock2"; - let region = "us-east-1"; - let service = "s3"; - let path = "/mblock2/"; - let session_token = ""; - - let mut req = request::Request::builder().method(http::Method::GET).uri("http://192.168.1.11:9020/mblock2/test.txt?delimiter=%2F&fetch-owner=true&prefix=mypre&encoding-type=url&max-keys=1&list-type=2"); - - let mut headers = req.headers_mut().expect("err"); - headers.insert("host", "192.168.1.11:9020".parse().unwrap()); - - req = pre_sign_v4(req, access_key_id, secret_access_key, "", region, 86400, t); - - let mut canonical_request = req.method_ref().unwrap().as_str().to_string(); - canonical_request.push('\n'); - canonical_request.push_str(req.uri_ref().unwrap().path()); - canonical_request.push('\n'); - canonical_request.push_str(req.uri_ref().unwrap().query().unwrap()); - canonical_request.push('\n'); - canonical_request.push_str(&get_canonical_headers(&req, &v4_ignored_headers)); - canonical_request.push('\n'); - canonical_request.push_str(&get_signed_headers(&req, &v4_ignored_headers)); - canonical_request.push('\n'); - canonical_request.push_str(&get_hashed_payload(&req)); - //println!("canonical_request: \n{}\n", canonical_request); - assert_eq!( - canonical_request, - concat!( - "GET\n", - "/mblock2/test.txt\n", - "delimiter=%2F&fetch-owner=true&prefix=mypre&encoding-type=url&max-keys=1&list-type=2&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20130524T000000Z&X-Amz-Expires=0000086400&X-Amz-SignedHeaders=host&X-Amz-Credential=rustfsadmin%2F20130524%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=30e6b8c920512f0d12cba77a7c39612bff7f5f8148f4dc35cdd18f4b15a12477\n", - "host:192.168.1.11:9020\n", - "\n", - "host\n", - "UNSIGNED-PAYLOAD", - ) - ); - } } diff --git a/rustfs/src/admin/handlers.rs b/rustfs/src/admin/handlers.rs index fcd2fd6a..fec8d116 100644 --- a/rustfs/src/admin/handlers.rs +++ b/rustfs/src/admin/handlers.rs @@ -769,8 +769,6 @@ fn extract_query_params(uri: &Uri) -> HashMap { params } -//disable encrypto from client because rustfs use len 8 Nonce but rustfs use 12 len Nonce - #[allow(dead_code)] fn is_local_host(_host: String) -> bool { false diff --git a/rustfs/src/admin/mod.rs b/rustfs/src/admin/mod.rs index 86360fb2..3cc5335e 100644 --- a/rustfs/src/admin/mod.rs +++ b/rustfs/src/admin/mod.rs @@ -17,7 +17,6 @@ use rpc::register_rpc_route; use s3s::route::S3Route; const ADMIN_PREFIX: &str = "/rustfs/admin"; -const RUSTFS_ADMIN_PREFIX: &str = "/rustfs/admin"; pub fn make_admin_route() -> std::io::Result { let mut r: S3Router = S3Router::new(); @@ -243,7 +242,7 @@ fn register_user_route(r: &mut S3Router) -> std::io::Result<()> r.insert( Method::GET, - format!("{}{}", RUSTFS_ADMIN_PREFIX, "/v3/list-remote-targets").as_str(), + format!("{}{}", ADMIN_PREFIX, "/v3/list-remote-targets").as_str(), AdminOperation(&ListRemoteTargetHandler {}), )?; @@ -255,7 +254,7 @@ fn register_user_route(r: &mut S3Router) -> std::io::Result<()> r.insert( Method::GET, - format!("{}{}", RUSTFS_ADMIN_PREFIX, "/v3/replicationmetrics").as_str(), + format!("{}{}", ADMIN_PREFIX, "/v3/replicationmetrics").as_str(), AdminOperation(&GetReplicationMetricsHandler {}), )?; @@ -267,7 +266,7 @@ fn register_user_route(r: &mut S3Router) -> std::io::Result<()> r.insert( Method::PUT, - format!("{}{}", RUSTFS_ADMIN_PREFIX, "/v3/set-remote-target").as_str(), + format!("{}{}", ADMIN_PREFIX, "/v3/set-remote-target").as_str(), AdminOperation(&SetRemoteTargetHandler {}), )?; r.insert( @@ -278,7 +277,7 @@ fn register_user_route(r: &mut S3Router) -> std::io::Result<()> r.insert( Method::DELETE, - format!("{}{}", RUSTFS_ADMIN_PREFIX, "/v3/remove-remote-target").as_str(), + format!("{}{}", ADMIN_PREFIX, "/v3/remove-remote-target").as_str(), AdminOperation(&RemoveRemoteTargetHandler {}), )?; diff --git a/rustfs/src/admin/router.rs b/rustfs/src/admin/router.rs index 3fa18b7c..0ebfeb0b 100644 --- a/rustfs/src/admin/router.rs +++ b/rustfs/src/admin/router.rs @@ -16,7 +16,6 @@ use s3s::s3_error; use tracing::error; use super::ADMIN_PREFIX; -use super::RUSTFS_ADMIN_PREFIX; use super::rpc::RPC_PREFIX; pub struct S3Router { @@ -66,7 +65,7 @@ where } } - uri.path().starts_with(ADMIN_PREFIX) || uri.path().starts_with(RPC_PREFIX) || uri.path().starts_with(RUSTFS_ADMIN_PREFIX) + uri.path().starts_with(ADMIN_PREFIX) || uri.path().starts_with(RPC_PREFIX) } async fn call(&self, req: S3Request) -> S3Result> { diff --git a/rustfs/src/storage/ecfs.rs b/rustfs/src/storage/ecfs.rs index 14a2f64b..916a2e1b 100644 --- a/rustfs/src/storage/ecfs.rs +++ b/rustfs/src/storage/ecfs.rs @@ -166,7 +166,7 @@ impl FS { let prefix = req .headers - .get("X-Amz-Meta-RustFs-Snowball-Prefix") + .get("X-Amz-Meta-Rustfs-Snowball-Prefix") .map(|v| v.to_str().unwrap_or_default()) .unwrap_or_default();