This is an automated email from the ASF dual-hosted git repository.

junouyang pushed a commit to branch bump/suppaftp
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git


The following commit(s) were added to refs/heads/bump/suppaftp by this push:
     new 77b239dcb fix: let ftp service to suppaftp 5.2 API
77b239dcb is described below

commit 77b239dcb79d0c32d967d068b2b0df993ca4c629
Author: owl <[email protected]>
AuthorDate: Wed Nov 15 22:38:17 2023 +0800

    fix: let ftp service to suppaftp 5.2 API
---
 Cargo.lock                       | 13 +++++++++++++
 core/Cargo.toml                  |  2 ++
 core/src/services/ftp/backend.rs | 13 +++++++------
 3 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index ce7263709..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"
@@ -6586,6 +6598,7 @@ version = "5.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "653aa9a6ebc0446a2d5c2be5b698b48a3192c7a098d0ed9a7c232e3a6340f091"
 dependencies = [
+ "async-native-tls",
  "async-std",
  "async-tls 0.12.0",
  "async-trait",
diff --git a/core/Cargo.toml b/core/Cargo.toml
index 10bbd2485..85aa539b4 100644
--- a/core/Cargo.toml
+++ b/core/Cargo.toml
@@ -51,6 +51,7 @@ default = [
   "services-webdav",
   "services-webhdfs",
   "services-azfile",
+  "services-ftp",
 ]
 
 # Build docs or not.
@@ -291,6 +292,7 @@ sled = { version = "0.34.7", optional = true }
 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..d0d9d9bb9 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::AsyncNativeTlsFtpStream;
 use suppaftp::list::File;
 use suppaftp::types::FileType;
 use suppaftp::types::Response;
 use suppaftp::FtpError;
-use suppaftp::FtpStream;
+use suppaftp::ImplAsyncFtpStream;
+use suppaftp::async_native_tls::TlsConnector;
+use suppaftp::AsyncNativeTlsConnector;
 use suppaftp::Status;
 use tokio::sync::OnceCell;
 
@@ -213,16 +215,15 @@ 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

Reply via email to