//*****************************************************************************
//*
//* (c) Copyright 2003. Glub Tech, Incorporated. All Rights Reserved.
//*
//* $Id: OpenCommand.java 142 2009-12-16 04:23:16Z gary $
//*
//*****************************************************************************
package com.glub.secureftp.client.gui;
import com.glub.secureftp.client.framework.*;
import com.glub.util.*;
import java.io.*;
import java.util.*;
public class OpenCommand extends LocalCommand {
public OpenCommand() {
super("open", CommandID.OPEN_COMMAND_ID, 0, 1, "bookmark",
"open ftp session");
}
public SecureFTPError doIt() throws CommandException {
SecureFTPError result = super.doIt();
// if we have an update available, this we may suppress this dialog
if ( Client.getSuppressOpenDialog() ) {
Client.setSuppressOpenDialog( false );
return result;
}
Bookmark bookmark = null;
short ocdResult = OpenConnectionDialog.CANCEL;
if ( null != getArgs() ) {
bookmark = (Bookmark)getArgs().get(0);
ocdResult = OpenConnectionDialog.OK;
}
String stashedPassword = "";
if ( null == bookmark ) {
bookmark = new Bookmark();
ocdResult =
OpenConnectionDialog.showDialog( SecureFTP.getBaseFrame(), bookmark );
stashedPassword = bookmark.getPassword();
}
if ( OpenConnectionDialog.CANCEL != ocdResult ) {
final FTPSession session = bookmarkToSession( bookmark );
FTPSessionManager.getInstance().addSession( session );
if ( OpenConnectionDialog.SAVE_BOOKMARK == ocdResult ) {
try {
if ( !OpenConnectionDialog.getSavePasswordCheckBox().isSelected() &&
!bookmark.isAnonymous() ) {
bookmark.setPassword("");
}
//System.out.println(bookmark);
BookmarkManager.getInstance().addBookmark( bookmark );
BookmarkManager.getInstance().writeBookmarks();
Client.getMenus().updateBookmarks();
bookmark.setPassword( stashedPassword );
}
catch ( IOException ioe ) {
LString lmsg =
new LString( "AddBookmarkDialog.saveBookmarkError",
"There was a problem saving the bookmarks: [^0]" );
lmsg.replace( 0, ioe.getMessage() );
ErrorDialog.showDialog( lmsg );
}
}
ConnectCommand connectCmd = new ConnectCommand();
ArrayList args = new ArrayList( 1 );
args.add( bookmark );
connectCmd.setArgs( args );
result = SecureFTP.getCommandDispatcher().fireCommand( this, connectCmd );
}
// at this point if there were any request to suppress, clear it out
Client.setSuppressOpenDialog( false );
return result;
}
public FTPSession bookmarkToSession( Bookmark bookmark ) {
FTPSession session = new FTPSession();
session.setDebugOn( SecureFTP.debug );
session.setCertHandler( new GUISSLCertificateHandler() );
session.setUserName( bookmark.getUserName() );
session.setPassword( bookmark.getPassword() );
session.setHostName( bookmark.getHostName() );
session.setPort( bookmark.getPort() );
int secMode = bookmark.getSecurityMode();
session.setSecurityMode( (short)secMode );
boolean isSecure = ConnectionDialog.EXPLICIT_SSL == secMode ||
ConnectionDialog.IMPLICIT_SSL == secMode;
session.setIsSecure( isSecure );
session.setUseProxy( bookmark.usesProxy() );
session.setUseCCC( bookmark.isCCCEnabled() );
return session;
}
}