//****************************************************************************** //* //* (c) Copyright 2002, Glub Tech, Incorporated. All rights reserved. //* //* $Id: SimpleSSLFTP2.java 37 2009-05-11 22:46:15Z gary $ //* //****************************************************************************** import com.glub.secureftp.bean.*; import java.io.File; public class SimpleSSLFTP2 implements SSLSessionManager { private SSLCertificate currentCert = null; public static void main( String[] args ) { // seed as early as possible. SSLFTP.preSeed(); String host = "ftps.glub.com"; String user = "anonymous"; String pass = "guest@"; SimpleSSLFTP2 ftp = new SimpleSSLFTP2(host, user, pass); } /** * This example will make an explicit SSL connection to a server running * Secure FTP Wrapper login, set the connection type to passive, do a dir * list, enable data encryption, change dir to /pub/test, do another dir * list, set the transfer mode to binary, get the file "test.jpg", * abort the download midway, restart the download, and then logout. */ public SimpleSSLFTP2( String host, String user, String pass ) { SSLFTP sslFTP = new SSLFTP( this, host, 21, SSLFTP.EXPLICIT_CONNECTION, System.out, System.out ); try { sslFTP.connect(); sslFTP.login( user, pass, null ); sslFTP.setConnectionType( FTP.PASV_CONNECTION_TYPE ); RemoteFileList rfl = sslFTP.list(); for (int i = 0; i < rfl.size(); i++ ) { System.out.println(rfl.getFile(i).getFileName()); } sslFTP.setDataEncryptionOn( true ); sslFTP.chdir( "/pub/test" ); rfl = sslFTP.list(); for (int i = 0; i < rfl.size(); i++ ) { System.out.println(rfl.getFile(i).getFileName()); } sslFTP.binary(); FTPAbortableTransfer abort = new FTPAbortableTransfer(); String fileName = "test.jpg"; (new FTPAbortThread(sslFTP, abort)).start(); try { sslFTP.retrieve( fileName, new File(fileName), false, abort ); } catch ( FTPAbortException fae ) { System.out.println(fileName + " has been aborted"); } catch ( FTPException fe ) { System.out.println("an unknown download exception has occured."); } sslFTP.retrieve( fileName, new File(fileName), true ); sslFTP.logout(); } catch ( Exception e ) { System.err.println("An error occured: " + e.getMessage()); } } public boolean continueWithCertificateHostMismatch( SSLCertificate cert, String actualHost, String certHost ) { System.out.println("Certificate host mismatch."); return true; } public boolean continueWithExpiredCertificate( SSLCertificate cert ) { System.out.println("Certificate expired."); return true; } public boolean continueWithInvalidCertificate( SSLCertificate cert ) { System.out.println("Certificate invalid."); return true; } public boolean continueWithoutServerCertificate() { System.out.println("Certificate not sent from server."); return true; } public short newCertificateEncountered( SSLCertificate cert ) { System.out.println("New cert found."); return SSLSessionManager.ALLOW_CERTIFICATE; } public short replaceCertificate( SSLCertificate oldCert, SSLCertificate newCert ) { System.out.println("Replace cert."); return SSLSessionManager.ALLOW_CERTIFICATE; } public void randomSeedIsGenerating() { System.out.print("The random seed is generating... "); } public void randomSeedGenerated() { System.out.println("done."); } public void setCurrentCertificate( SSLCertificate currentCert ) { this.currentCert = currentCert; } } class FTPAbortThread extends Thread { private FTP ftp = null; private FTPAbortableTransfer abortTransfer = null; public FTPAbortThread( FTP ftp, FTPAbortableTransfer abortTransfer ) { this.ftp = ftp; this.abortTransfer = abortTransfer; } public void run() { try { sleep(2000); System.out.println("aborting xfer"); ftp.abort( abortTransfer ); } catch ( FTPException fe ) { System.err.println(fe.getMessage()); } catch ( Exception e ) { e.printStackTrace(); } } }