From 1613e38edf5a787a6b9d7157684cf833b35361f2 Mon Sep 17 00:00:00 2001 From: Franky Naidu Date: Thu, 18 May 2023 17:19:08 -0400 Subject: [PATCH] Added Support for FTPS --- .../model/credential/AccountEndpointCredential.java | 5 ++++- .../odstransferservice/pools/FtpConnectionPool.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/onedatashare/transferservice/odstransferservice/model/credential/AccountEndpointCredential.java b/src/main/java/org/onedatashare/transferservice/odstransferservice/model/credential/AccountEndpointCredential.java index 4d87c8ea..b734f074 100644 --- a/src/main/java/org/onedatashare/transferservice/odstransferservice/model/credential/AccountEndpointCredential.java +++ b/src/main/java/org/onedatashare/transferservice/odstransferservice/model/credential/AccountEndpointCredential.java @@ -2,6 +2,7 @@ import lombok.Data; import lombok.ToString; +import org.apache.commons.lang.StringUtils; import org.onedatashare.transferservice.odstransferservice.Enum.EndpointType; @Data @@ -17,7 +18,9 @@ public static String[] uriFormat(AccountEndpointCredential credential, EndpointT if(type.equals(EndpointType.sftp)){ noTypeUri = credential.getUri().replaceFirst("sftp://", ""); }else if(type.equals(EndpointType.ftp)){ - noTypeUri = credential.getUri().replaceFirst("ftp://", ""); + noTypeUri = credential.getUri().startsWith("ftps://") ? + credential.getUri().replaceFirst("ftps://", "") + : credential.getUri().replaceFirst("ftp://", ""); } else{ noTypeUri = credential.getUri().replaceFirst("http://", ""); diff --git a/src/main/java/org/onedatashare/transferservice/odstransferservice/pools/FtpConnectionPool.java b/src/main/java/org/onedatashare/transferservice/odstransferservice/pools/FtpConnectionPool.java index 454b83bb..58369938 100644 --- a/src/main/java/org/onedatashare/transferservice/odstransferservice/pools/FtpConnectionPool.java +++ b/src/main/java/org/onedatashare/transferservice/odstransferservice/pools/FtpConnectionPool.java @@ -3,9 +3,13 @@ import lombok.SneakyThrows; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; +import org.apache.commons.net.ftp.FTPSClient; import org.apache.commons.pool2.ObjectPool; import org.onedatashare.transferservice.odstransferservice.Enum.EndpointType; +import org.onedatashare.transferservice.odstransferservice.controller.TransferController; import org.onedatashare.transferservice.odstransferservice.model.credential.AccountEndpointCredential; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.concurrent.LinkedBlockingQueue; @@ -17,6 +21,8 @@ public class FtpConnectionPool implements ObjectPool { private LinkedBlockingQueue connectionPool; private Boolean compression; + Logger logger = LoggerFactory.getLogger(FtpConnectionPool.class); + public FtpConnectionPool(AccountEndpointCredential credential, int bufferSize){ this.credential = credential; this.bufferSize = bufferSize; @@ -26,6 +32,10 @@ public FtpConnectionPool(AccountEndpointCredential credential, int bufferSize){ @Override public void addObject() throws IOException { FTPClient client = new FTPClient(); + if(credential != null && credential.getUri().startsWith("ftps://")){ + client = new FTPSClient(); + logger.info("Using FTPS call"); + } String[] hostAndPort = AccountEndpointCredential.uriFormat(credential, EndpointType.ftp); if(hostAndPort.length >1){ client.connect(hostAndPort[0], Integer.parseInt(hostAndPort[1]));