//******************************************************************************
//*
//* (c) Copyright 2002, Glub Tech, Incorporated. All rights reserved.
//*
//* $Id: SimpleSSLFTP.java 37 2009-05-11 22:46:15Z gary $
//*
//******************************************************************************
import com.glub.secureftp.bean.*;
import java.io.File;
public class SimpleSSLFTP implements SSLSessionManager {
private SSLCertificate currentCert = null;
public static void main( String[] args ) {
// seed as early as possible.
SSLFTP.preSeed();
String host = null;
String user = null;
String pass = null;
if ( args.length < 3 ) {
host = "localhost";
user = "anonymous";
pass = "guest@";
}
else {
host = args[0];
user = args[1];
pass = args[2];
}
SimpleSSLFTP ftp = new SimpleSSLFTP(host, user, pass);
}
/**
* This example will make an implicit SSL connection to a secure FTP
* server, login, set the connection type to active, do a dir list,
* enable data encryption, change dir to /etc, set the connection type to
* passive, do another dir list, set the transfer mode to ascii, get
* the file "motd", and then logout.
*/
public SimpleSSLFTP( String host, String user, String pass ) {
SSLFTP sslFTP = new SSLFTP( this, host, 990, SSLFTP.IMPLICIT_CONNECTION,
System.out, System.out );
try {
sslFTP.connect();
sslFTP.login( user, pass, null );
sslFTP.setConnectionType( FTP.ACTIVE_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( "/etc" );
sslFTP.setConnectionType( FTP.PASV_CONNECTION_TYPE );
rfl = sslFTP.list();
for (int i = 0; i < rfl.size(); i++ ) {
System.out.println(rfl.getFile(i).getFileName());
}
sslFTP.ascii();
sslFTP.retrieve( "motd", new File("motd"), false );
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;
}
}