You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Frits Jalvingh (Jira)" <ji...@apache.org> on 2021/07/06 20:01:00 UTC
[jira] [Commented] (NET-702) FTPSClient fails on listFiles()
[ https://issues.apache.org/jira/browse/NET-702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17375985#comment-17375985 ]
Frits Jalvingh commented on NET-702:
------------------------------------
There seems to be an issue around this with ssl reuse; when I set require_ssl_reuse=NO for vsftpd then listing files does work..
> FTPSClient fails on listFiles()
> -------------------------------
>
> Key: NET-702
> URL: https://issues.apache.org/jira/browse/NET-702
> Project: Commons Net
> Issue Type: Bug
> Components: FTP
> Affects Versions: 3.7.2, 3.8.0
> Reporter: Frits Jalvingh
> Priority: Major
>
> Calling ftpsclient.listFiles() fails in all ways.
> See the program below.
> Not having the "magic incantations" (execPROT("P")) makes it fail because it returns no files without ANY indication of error, even though the remote server answered with a "522 data connections must be encrypted" error. This is silent failure.
> If you do add the execPROC call then listFiles fails with the following exception:
> Exception in thread "main" javax.net.ssl.SSLProtocolException: Received close_notify during handshakeException in thread "main" javax.net.ssl.SSLProtocolException: Received close_notify during handshake at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:129) at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:255) at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:250) at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1155) at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1125) at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:823) at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185) at java.base/java.io.BufferedReader.fill(BufferedReader.java:161) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326) at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392) at org.apache.commons.net.ftp.FTPFileEntryParserImpl.readNextEntry(FTPFileEntryParserImpl.java:53) at org.apache.commons.net.ftp.FTPListParseEngine.read(FTPListParseEngine.java:139) at org.apache.commons.net.ftp.FTPListParseEngine.readServerList(FTPListParseEngine.java:119) at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2264) at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2390) at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2651) at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2595) at nl.skarp.dataloader.datasources.TestFtps.main(TestFtps.java:40)
>
> The program I used:
> {code:java}
> public class TestFtps {
> static public void main(String[] args) throws Exception {
> FTPSClient client = new FTPSClient();
> client.connect("localhost");
> int reply = client.getReplyCode();
> if(!FTPReply.isPositiveCompletion(reply)) {
> throw new DataAccessConfigException("ftp(s) server refused connection");
> }
> client.enterLocalPassiveMode(); // For firewall usage
> System.out.println("ftp: login");
> if(!client.login("jal", "possward")) {
> throw new DataAccessConfigException("ftp(s) login failed");
> }
> client.setFileType(FTP.BINARY_FILE_TYPE);
> client.type(FTP.BINARY_FILE_TYPE);
> System.out.println("ftp: set passive mode");
> //client.enterLocalPassiveMode(); // For firewall usage
> System.out.println("Fixing ftps listing");
> FTPSClient ftpsClient = (FTPSClient) client;
> ftpsClient.execPROT("P");
> ftpsClient.execPBSZ(0);
> FTPFile[] ftpFiles = client.listFiles();
> for(FTPFile ftpFile : ftpFiles) {
> System.out.println("Got file " + ftpFile.getName());
> }
> }
> }
> {code}
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)