Author: sebb
Date: Thu Mar 17 02:48:26 2011
New Revision: 1082380

URL: http://svn.apache.org/viewvc?rev=1082380&view=rev
Log:
Merge with FTPS code

Modified:
    commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java

Modified: 
commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java
URL: 
http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java?rev=1082380&r1=1082379&r2=1082380&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java 
(original)
+++ commons/proper/net/trunk/src/main/java/examples/ftp/FTPClientExample.java 
Thu Mar 17 02:48:26 2011
@@ -31,6 +31,7 @@ import org.apache.commons.net.ftp.FTPCli
 import org.apache.commons.net.ftp.FTPConnectionClosedException;
 import org.apache.commons.net.ftp.FTPFile;
 import org.apache.commons.net.ftp.FTPReply;
+import org.apache.commons.net.ftp.FTPSClient;
 import org.apache.commons.net.io.CopyStreamEvent;
 import org.apache.commons.net.io.CopyStreamListener;
 
@@ -41,14 +42,14 @@ import org.apache.commons.net.io.CopyStr
  * Just so you can see what's happening, all reply strings are printed.
  * If the -b flag is used, a binary transfer is assumed (default is ASCII).
  * <p>
- * Usage: ftp [-s] [-b] [-l] [-#] [-k nnn] <hostname> <username> <password> 
<remote file> <local file>
+ * Usage: ftp [-s] [-b] [-l] [-#] [-k nnn] <hostname> <username> <password> 
<remote file> <local file> [<SSLprotocol>]
  * <p>
  ***/
 public final class FTPClientExample
 {
 
     public static final String USAGE =
-        "Usage: ftp [-s] [-b] [-l|-f] [-a] [-e] [-k secs [-w msec]] [-#] 
<hostname> <username> <password> <remote file> <local file>\n" +
+        "Usage: ftp [-s] [-b] [-l|-f] [-a] [-e] [-k secs [-w msec]] [-#] 
<hostname> <username> <password> <remote file> <local file> [TLS|etc.]\n" +
         "\nDefault behavior is to download a file and use ASCII transfer 
mode.\n" +
         "\t-s store file on server (upload)\n" +
         "\t-l list files (local file is ignored)\n" +
@@ -67,8 +68,9 @@ public final class FTPClientExample
         boolean localActive = false;
         boolean useEpsvWithIPv4 = false;
         boolean feat = false;
-        String server, username, password, remote, local;
-        final FTPClient ftp = new FTPClient();
+        boolean printHash = false;
+        long keepAliveTimeout = -1;
+        int controlKeepAliveReplyTimeout = -1;
 
         for (base = 0; base < args.length; base++)
         {
@@ -91,45 +93,69 @@ public final class FTPClientExample
                 listFiles = true;
             }
             else if (args[base].equals("-#")) {
-                ftp.setCopyStreamListener(createListener());
+                printHash = true;
             }
             else if (args[base].equals("-k")) {
-                ftp.setControlKeepAliveTimeout(Long.parseLong(args[++base]));
+                keepAliveTimeout = Long.parseLong(args[++base]);
             }
             else if (args[base].equals("-w")) {
-                
ftp.setControlKeepAliveReplyTimeout(Integer.parseInt(args[++base]));
+                controlKeepAliveReplyTimeout = Integer.parseInt(args[++base]);
             }
             else {
                 break;
             }
         }
 
-        if ((args.length - base) != 5) // server, user, pass, remote, local
+        if ((args.length - base) < 5) // server, user, pass, remote, local 
[protocol]
         {
             System.err.println(USAGE);
             System.exit(1);
         }
 
-        server = args[base++];
-        int port = 21;
+        String server = args[base++];
+        int port = 0;
         String parts[] = server.split(":");
         if (parts.length == 2){
             server=parts[0];
             port=Integer.parseInt(parts[1]);
         }
-        username = args[base++];
-        password = args[base++];
-        remote = args[base++];
-        local = args[base];
+        String username = args[base++];
+        String password = args[base++];
+        String remote = args[base++];
+        String local = args[base++];
+        String protocol = null;
+        if (args.length - base > 0) {
+            protocol = args[base++];
+        }
+
+        final FTPClient ftp;
+        if (protocol == null ) {
+            ftp = new FTPClient();            
+        } else {
+            ftp = new FTPSClient(protocol);
+        }
 
+        if (printHash) {
+            ftp.setCopyStreamListener(createListener());
+        }
+        if (keepAliveTimeout >= 0) {
+            ftp.setControlKeepAliveTimeout(keepAliveTimeout);
+        }
+        if (controlKeepAliveReplyTimeout >= 0) {
+            ftp.setControlKeepAliveReplyTimeout(controlKeepAliveReplyTimeout);
+        }
         ftp.addProtocolCommandListener(new PrintCommandListener(
                                            new PrintWriter(System.out)));
 
         try
         {
             int reply;
-            ftp.connect(server, port);
-            System.out.println("Connected to " + server + ".");
+            if (port > 0) {
+                ftp.connect(server, port);                
+            } else {
+                ftp.connect(server);
+            }
+            System.out.println("Connected to " + server + " on 
"+ftp.getRemotePort());
 
             // After connection attempt, you should check the reply code to 
verify
             // success.


Reply via email to