This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 27db8da23 chore: bump suppaftp version to 5.2 (#3590)
27db8da23 is described below
commit 27db8da237787cb228604b3d6b9081bc7de727f0
Author: oowl <[email protected]>
AuthorDate: Wed Nov 15 23:09:32 2023 +0800
chore: bump suppaftp version to 5.2 (#3590)
* chore: bump suppaftp version to 5.2
* fix: let ftp service to suppaftp 5.2 API
* fix: fix code
---
Cargo.lock | 129 +++++++++++++++++++++++++++++++--------
core/Cargo.toml | 3 +-
core/src/services/ftp/backend.rs | 16 +++--
3 files changed, 116 insertions(+), 32 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 99f078297..02bf97e81 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -297,6 +297,18 @@ dependencies = [
"event-listener",
]
+[[package]]
+name = "async-native-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9343dc5acf07e79ff82d0c37899f079db3534d99f189a1837c8e549c99405bec"
+dependencies = [
+ "futures-util",
+ "native-tls",
+ "thiserror",
+ "url",
+]
+
[[package]]
name = "async-recursion"
version = "0.3.2"
@@ -382,10 +394,24 @@ dependencies = [
"futures-core",
"futures-io",
"rustls 0.19.1",
- "webpki",
+ "webpki 0.21.4",
"webpki-roots 0.21.1",
]
+[[package]]
+name = "async-tls"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfeefd0ca297cbbb3bd34fd6b228401c2a5177038257afd751bc29f0a2da4795"
+dependencies = [
+ "futures-core",
+ "futures-io",
+ "rustls 0.20.9",
+ "rustls-pemfile",
+ "webpki 0.22.4",
+ "webpki-roots 0.22.6",
+]
+
[[package]]
name = "async-trait"
version = "0.1.74"
@@ -412,7 +438,7 @@ dependencies = [
"base64 0.21.4",
"rand 0.8.5",
"regex",
- "ring",
+ "ring 0.16.20",
"serde",
"serde_json",
"tracing",
@@ -2996,7 +3022,7 @@ checksum =
"6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378"
dependencies = [
"base64 0.21.4",
"pem 1.1.1",
- "ring",
+ "ring 0.16.20",
"serde",
"serde_json",
"simple_asn1",
@@ -3013,9 +3039,9 @@ dependencies = [
[[package]]
name = "lazy-regex"
-version = "2.5.0"
+version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff63c423c68ea6814b7da9e88ce585f793c87ddd9e78f646970891769c8235d4"
+checksum = "5d12be4595afdf58bd19e4a9f4e24187da2a66700786ff660a418e9059937a4c"
dependencies = [
"lazy-regex-proc_macros",
"once_cell",
@@ -3024,14 +3050,14 @@ dependencies = [
[[package]]
name = "lazy-regex-proc_macros"
-version = "2.4.1"
+version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8edfc11b8f56ce85e207e62ea21557cfa09bb24a8f6b04ae181b086ff8611c22"
+checksum = "44bcd58e6c97a7fcbaffcdc95728b393b8d98933bfadad49ed4097845b57ef0b"
dependencies = [
"proc-macro2",
"quote",
"regex",
- "syn 1.0.109",
+ "syn 2.0.38",
]
[[package]]
@@ -4155,7 +4181,7 @@ dependencies = [
"anyhow",
"async-backtrace",
"async-compat",
- "async-tls",
+ "async-tls 0.11.0",
"async-trait",
"atomic_lib",
"await-tree",
@@ -5738,11 +5764,25 @@ dependencies = [
"libc",
"once_cell",
"spin 0.5.2",
- "untrusted",
+ "untrusted 0.7.1",
"web-sys",
"winapi",
]
+[[package]]
+name = "ring"
+version = "0.17.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b"
+dependencies = [
+ "cc",
+ "getrandom 0.2.10",
+ "libc",
+ "spin 0.9.8",
+ "untrusted 0.9.0",
+ "windows-sys 0.48.0",
+]
+
[[package]]
name = "rkyv"
version = "0.7.42"
@@ -5941,9 +5981,21 @@ checksum =
"35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7"
dependencies = [
"base64 0.13.1",
"log",
- "ring",
+ "ring 0.16.20",
"sct 0.6.1",
- "webpki",
+ "webpki 0.21.4",
+]
+
+[[package]]
+name = "rustls"
+version = "0.20.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99"
+dependencies = [
+ "log",
+ "ring 0.16.20",
+ "sct 0.7.0",
+ "webpki 0.22.4",
]
[[package]]
@@ -5953,7 +6005,7 @@ source =
"registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8"
dependencies = [
"log",
- "ring",
+ "ring 0.16.20",
"rustls-webpki",
"sct 0.7.0",
]
@@ -5985,8 +6037,8 @@ version = "0.101.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe"
dependencies = [
- "ring",
- "untrusted",
+ "ring 0.16.20",
+ "untrusted 0.7.1",
]
[[package]]
@@ -6058,8 +6110,8 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce"
dependencies = [
- "ring",
- "untrusted",
+ "ring 0.16.20",
+ "untrusted 0.7.1",
]
[[package]]
@@ -6068,8 +6120,8 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
dependencies = [
- "ring",
- "untrusted",
+ "ring 0.16.20",
+ "untrusted 0.7.1",
]
[[package]]
@@ -6542,12 +6594,14 @@ checksum =
"81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
[[package]]
name = "suppaftp"
-version = "4.7.0"
+version = "5.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d865bcb2d4bfea8c0ab4ca6c3f79d011ad04db5ef1fc693e720299bb60c58018"
+checksum = "653aa9a6ebc0446a2d5c2be5b698b48a3192c7a098d0ed9a7c232e3a6340f091"
dependencies = [
+ "async-native-tls",
"async-std",
- "async-tls",
+ "async-tls 0.12.0",
+ "async-trait",
"chrono",
"lazy-regex",
"log",
@@ -7424,6 +7478,12 @@ version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
[[package]]
name = "ureq"
version = "2.8.0"
@@ -7663,8 +7723,18 @@ version = "0.21.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea"
dependencies = [
- "ring",
- "untrusted",
+ "ring 0.16.20",
+ "untrusted 0.7.1",
+]
+
+[[package]]
+name = "webpki"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53"
+dependencies = [
+ "ring 0.17.5",
+ "untrusted 0.9.0",
]
[[package]]
@@ -7673,7 +7743,16 @@ version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940"
dependencies = [
- "webpki",
+ "webpki 0.21.4",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.22.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"
+dependencies = [
+ "webpki 0.22.4",
]
[[package]]
diff --git a/core/Cargo.toml b/core/Cargo.toml
index d4572ded4..9b74ff691 100644
--- a/core/Cargo.toml
+++ b/core/Cargo.toml
@@ -288,9 +288,10 @@ serde = { version = "1", features = ["derive"] }
serde_json = "1"
sha2 = { version = "0.10", optional = true }
sled = { version = "0.34.7", optional = true }
-suppaftp = { version = "4.5", default-features = false, features = [
+suppaftp = { version = "5.2", default-features = false, features = [
"async-secure",
"async-rustls",
+ "async-native-tls",
], optional = true }
tikv-client = { version = "0.2.0", optional = true }
tokio = "1.27"
diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs
index 787da112f..27d94f3b9 100644
--- a/core/src/services/ftp/backend.rs
+++ b/core/src/services/ftp/backend.rs
@@ -21,7 +21,6 @@ use std::fmt::Formatter;
use std::str;
use std::str::FromStr;
-use async_tls::TlsConnector;
use async_trait::async_trait;
use bb8::PooledConnection;
use bb8::RunError;
@@ -29,11 +28,14 @@ use futures::AsyncRead;
use futures::AsyncReadExt;
use http::Uri;
use log::debug;
+use suppaftp::async_native_tls::TlsConnector;
use suppaftp::list::File;
use suppaftp::types::FileType;
use suppaftp::types::Response;
+use suppaftp::AsyncNativeTlsConnector;
+use suppaftp::AsyncNativeTlsFtpStream;
use suppaftp::FtpError;
-use suppaftp::FtpStream;
+use suppaftp::ImplAsyncFtpStream;
use suppaftp::Status;
use tokio::sync::OnceCell;
@@ -213,16 +215,18 @@ pub struct Manager {
#[async_trait]
impl bb8::ManageConnection for Manager {
- type Connection = FtpStream;
+ type Connection = AsyncNativeTlsFtpStream;
type Error = FtpError;
async fn connect(&self) -> std::result::Result<Self::Connection,
Self::Error> {
- let stream = FtpStream::connect(&self.endpoint).await?;
-
+ let stream = ImplAsyncFtpStream::connect(&self.endpoint).await?;
// switch to secure mode if ssl/tls is on.
let mut ftp_stream = if self.enable_secure {
stream
- .into_secure(TlsConnector::default().into(), &self.endpoint)
+ .into_secure(
+ AsyncNativeTlsConnector::from(TlsConnector::new()),
+ &self.endpoint,
+ )
.await?
} else {
stream