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.