Uploaded image for project: 'Commons Net'
  1. Commons Net
  2. NET-578

FTPS client through http proxy

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Cannot Reproduce
    • 3.3
    • None
    • FTP
    • None
    • Linux 3.0.101-0.21-default x86_64
      Java 1.8 update 45 64-bit

    Description

      I'm trying to develop a Java FTPS client using Apache Commons Net library. To run de code I'm using Java 8, update 45.

      The exception occurs when I'm invoking the method "retrieveFile". I'm not sure, but I belive the connection used to tranfer the file is not using the HTTP proxy specified in code.

      With FileZilla client I can tranfer files using the same configurations.

      How can I fix this problem?

      My code
      // client with explicit security
      FTPSClient ftps = new FTPSClient(false);
      // HTTP proxy configuration
      Proxy proxy = new Proxy(Type.HTTP, new InetSocketAddress("<REMOVED_FOR_SERCURITY>", <REMOVED_FOR_SERCURITY>));
      ftps.setProxy(proxy);
      // to show FTP commands in prompt
      ftps.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true));
      // disable remote host verification
      ftps.setRemoteVerificationEnabled(false);
      // trust in ALL
      ftps.setTrustManager(TrustManagerUtils.getAcceptAllTrustManager());
      // send keepAlive every 30 seconds
      ftps.setControlKeepAliveTimeout(10l);
      // data transfer timeout
      ftps.setDataTimeout(30000);
      
      // connect
      ftps.connect("<REMOVED_FOR_SERCURITY>", <REMOVED_FOR_SERCURITY>);
      ftps.login("<REMOVED_FOR_SERCURITY>", "<REMOVED_FOR_SERCURITY>");
      
      // config
      ftps.setCharset(Charset.forName("UTF-8"));
      ftps.setBufferSize(0);
      ftps.setFileType(FTP.BINARY_FILE_TYPE);
      ftps.enterLocalPassiveMode();
      ftps.execPROT("P");
      
      // ... do some operations
      ftps.retrieveFile("/dir1/dir2/fileX.zip", new ByteArrayOutputStream());
      
      // close
      ftps.logout();
      ftps.disconnect();
      

      The output:

      220 (vsFTPd 2.2.2)
      AUTH TLS
      234 Proceed with negotiation.
      USER *******
      331 Please specify the password.
      PASS *******
      230 Login successful.
      TYPE I
      200 Switching to Binary mode.
      PROT P
      200 PROT now Private.
      PASV
      227 Entering Passive Mode (<REMOVED_FOR_SERCURITY>).
      Exception in thread "main" java.net.ConnectException: Connection timed out: connect
          at java.net.DualStackPlainSocketImpl.connect0(Native Method)
          at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
          at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
          at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
          at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
          at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
          at java.net.Socket.connect(Socket.java:589)
          at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:656)
          at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:894)
          at org.apache.commons.net.ftp.FTPSClient._openDataConnection_(FTPSClient.java:600)
          at org.apache.commons.net.ftp.FTPClient._retrieveFile(FTPClient.java:1854)
          at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1845)
          at br.com.bat.crm.test.util.FTPSClientTest.main(FTPSClientTest.java:57)
      

      Attachments

        1. FTPSHTTPClient_source_code.zip
          4 kB
          Jefferson Madalena

        Activity

          People

            Unassigned Unassigned
            jeffemada Jefferson Madalena
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: