📄 startconnection.java
字号:
/* * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *///TODO: Add SFTP port number here (convert potmp to a string and pass itpackage net.sf.jftp.net;import net.sf.jftp.*;import net.sf.jftp.config.*;import net.sf.jftp.gui.*;//*** I DON'T KNOW IF THESE ARE ALL NECESSARYimport net.sf.jftp.gui.framework.*;import net.sf.jftp.net.*;import net.sf.jftp.util.*;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;// This class is used to initiate connections of all types (FTP, SFTP, SMB, NFS// are currently supported.) Any time the user tries to open a connection using// any protocol, this class is the intermediary between the GUI and the actual// connection establishing classes. This puts much common functionality into// one method (so in creating this I did some code cleanup.)public class StartConnection{ public static FtpConnection con = null; //data sent to startCon: protocol: (ie. FTP, SFTP, etc.) // htmp: hostname // utmp: username // ptmp: password // potmp: port // dtmp: domain // (null data is sent if it is ever not applicable) //maybe it should just take an array of strings instead? (What's //stored in the array can then be determined by reading the 1st //entry, which is the protocol name) public static boolean startCon(String protocol, String htmp, String utmp, String ptmp, int potmp, String dtmp, boolean useLocal) { // I may need a series of If statements following this one // declaring con for each of the possible types of connections //FtpConnection con = null; // ie.: if (protocol=="SFTP) SftpConnection con = null; //NfsConnection con = null; String conType; // this is for error msgs: may not be needed String[] searchValue = new String[JFtp.CONNECTION_DATA_LENGTH]; Integer potmpInt = new Integer(potmp); String potmpString = potmpInt.toString(); String useLocalString = new String("false"); if(useLocal) { useLocalString = "true"; } //*** FTP section: deprecated if(protocol.equals("FTP")) { /* */ } else if(protocol.equals("SFTP")) { SftpConnection con; con = new SftpConnection(htmp, potmp); //con.setLocalPath(JFtp.localDir.getCon().getPWD()); //con.addConnectionListener((ConnectionListener) JFtp.localDir); //con.addConnectionListener((ConnectionListener) JFtp.remoteDir); //JFtp.statusP.jftp.addConnection(htmp, con); if(con.login(utmp, ptmp)) { if(useLocal) { JFtp.statusP.jftp.addLocalConnection(htmp, con); } else { JFtp.statusP.jftp.addConnection(htmp, con); } //JFtp.remoteDir.setCon(con); if(con.chdir(con.getPWD()) || con.chdir("/")) { ; } //BUGFIX searchValue[0] = "SFTP"; searchValue[1] = htmp; searchValue[2] = utmp; if(Settings.getStorePasswords()) { searchValue[3] = ptmp; } else { searchValue[3] = ""; } //BUGFIX 1.40: now accepts string //for port number searchValue[4] = potmpString; searchValue[5] = useLocalString; searchValue[6] = LastConnections.SENTINEL; //searchValue = "SFTP " + htmp + " " + utmp + " " + // ptmp + " " + useLocalString; updateFileMenu(searchValue); return true; } //if } else if(protocol.equals("SMB")) { SmbConnection con = null; try { con = new SmbConnection(htmp, dtmp, utmp, ptmp, ((ConnectionListener) JFtp.remoteDir)); //JFtp.statusP.jftp.addConnection(htmp, con); if(useLocal) { JFtp.statusP.jftp.addLocalConnection(htmp, con); JFtp.localDir.fresh(); } else { JFtp.statusP.jftp.addConnection(htmp, con); JFtp.remoteDir.fresh(); } //JFtp.remoteDir.setCon(con); //con.setLocalPath(JFtp.localDir.getCon().getPWD()); //con.addConnectionListener((ConnectionListener) JFtp.localDir); //con.addConnectionListener((ConnectionListener) JFtp.remoteDir); //JFtp.remoteDir.fresh(); //BUGFIX searchValue[0] = "SMB"; searchValue[1] = htmp; searchValue[2] = utmp; if(Settings.getStorePasswords()) { searchValue[3] = ptmp; } else { searchValue[3] = ""; } searchValue[4] = dtmp; searchValue[5] = useLocalString; searchValue[6] = LastConnections.SENTINEL; //searchValue = "SMB " + htmp + " " + utmp + " " + // ptmp + " " + dtmp + " " + useLocalString; updateFileMenu(searchValue); return true; } catch(Exception ex) { Log.debug("Could not create SMBConnection, does this distribution come with jcifs?"); } } //can assume any other connection is NFS for now else { NfsConnection con; //*** boolean status = true; //*** con = new NfsConnection(htmp); //JFtp.remoteDir.setCon(con); //con.addConnectionListener(((ConnectionListener)JFtp.remoteDir)); //JFtp.statusP.jftp.addConnection(htmp, con); if(!utmp.equals("<anonymous>")) { status = ((NfsConnection) con).login(utmp, ptmp); } if(useLocal) { con.setLocalPath("/"); JFtp.statusP.jftp.addLocalConnection(htmp, con); } else { JFtp.statusP.jftp.addConnection(htmp, con); } con.chdir(htmp); //con.setLocalPath(JFtp.localDir.getCon().getPWD()); //con.addConnectionListener((ConnectionListener) JFtp.localDir); //BUGFIX searchValue[0] = "NFS"; searchValue[1] = htmp; searchValue[2] = utmp; if(Settings.getStorePasswords()) { searchValue[3] = ptmp; } else { searchValue[3] = ""; } searchValue[4] = useLocalString; searchValue[5] = LastConnections.SENTINEL; //searchValue = "NFS " + htmp + " " + utmp + " " + // ptmp + " " + useLocalString; /* searchValue = "NFS " + htmp + " " + utmp + " " + ptmp + " " + potmpString + " " + dtmp + " " + useLocalString; */ updateFileMenu(searchValue); return status; } /* //Common functionality goes here try { //if statement here, select connection type (or should // a superclass be used?) con = new NfsConnection(htmp); JFtp.statusP.jftp.addConnection(htmp, con); } catch (Exception ex) { Log.debug("Could not create " + protocol + "Connection!"); } */ //return true only if all has executed as expected return true; } //startCon public static int startFtpCon(String htmp, String utmp, String ptmp, int potmp, String dtmp, boolean useLocal) { boolean pasv = Settings.getFtpPasvMode(); boolean threads = Settings.getEnableMultiThreading(); //BUGFIX: this is now an array //String searchValue = new String(""); String[] searchValue = new String[JFtp.CONNECTION_DATA_LENGTH]; //BELOW IS GUI-related stuff... should put in separate //method in GUI dir? if(!pasv && threads) { // only passive ftp threading works Settings.setProperty("jftp.enableMultiThreading", false); JDialog j = new JDialog(); j.setTitle("Warning"); j.setLocation(150, 150); j.setSize(450, 100); j.getContentPane().add(new JLabel(" Multithreading does not work with active ftp yet, disabled it...")); j.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); j.setModal(true); j.show(); } //***also need to get max connections!! con = new FtpConnection(htmp, potmp, dtmp); //con.addConnectionListener((ConnectionListener) JFtp.localDir); //con.addConnectionListener((ConnectionListener) JFtp.remoteDir); //JFtp.remoteDir.setCon(con); if(useLocal) { JFtp.statusP.jftp.addLocalConnection(htmp, con); } else { JFtp.statusP.jftp.addConnection(htmp, con); } //System.out.println("**" + htmp + potmp + dtmp); //System.out.println("**" + utmp + ptmp); int response = con.login(utmp, ptmp); //boolean isConnected = false; if(response == FtpConnection.LOGIN_OK) { //System.out.println(htmp + " " + potmp + " " + dtmp); /* if (useLocal) JFtp.statusP.jftp.addLocalConnection( htmp, con); else JFtp.statusP.jftp.addConnection(htmp, con); */ //String searchValue = new String(""); Integer potmpInt = new Integer(potmp); String potmpString = potmpInt.toString(); String useLocalString = new String("false"); if(useLocal) { useLocalString = "true"; } //BUGFIX /* searchValue = "FTP " + htmp + " " + utmp + " " + ptmp + " " + potmpString + " " + dtmp + " " + useLocalString; */ searchValue[0] = "FTP"; searchValue[1] = htmp; searchValue[2] = utmp; if(Settings.getStorePasswords()) { searchValue[3] = ptmp; } else { searchValue[3] = ""; } searchValue[4] = potmpString; searchValue[5] = dtmp; searchValue[6] = useLocalString; searchValue[7] = LastConnections.SENTINEL; updateFileMenu(searchValue); } //*** JUST FOR NOW: if not connected, take out the tabs else { if(useLocal) { JFtp.statusP.jftp.closeCurrentLocalTab(); } else { JFtp.statusP.jftp.closeCurrentTab(); } } return response; //*** code that indicates successful connection } //startFtpCon private static void updateFileMenu(String[] searchValue) { int position; position = LastConnections.findString(searchValue, JFtp.CAPACITY); //bugfix: now a 2D array String[][] newVals = new String[JFtp.CAPACITY][JFtp.CONNECTION_DATA_LENGTH]; if(position >= 0) { //System.out.println(JFtp.CAPACITY); //System.out.println("IT WAS FOUND"); //System.out.println(position); newVals = LastConnections.moveToFront(position, JFtp.CAPACITY); } else { //System.out.println("IT WASN'T FOUND"); newVals = LastConnections.prepend(searchValue, JFtp.CAPACITY, true); } } //updateFileMenu}//StartConnection
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -