⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 moduleftpoversftp.java

📁 一个非常好的ssh客户端实现
💻 JAVA
字号:
/****************************************************************************** * * Copyright (c) 1999-2003 AppGate Network Security AB. All Rights Reserved. *  * This file contains Original Code and/or Modifications of Original Code as * defined in and that are subject to the MindTerm Public Source License, * Version 2.0, (the 'License'). You may not use this file except in compliance * with the License. *  * You should have received a copy of the MindTerm Public Source License * along with this software; see the file LICENSE.  If not, write to * AppGate Network Security AB, Otterhallegatan 2, SE-41118 Goteborg, SWEDEN * *****************************************************************************/package com.mindbright.application;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;import java.io.IOException;import java.applet.AppletContext;import java.awt.Dialog;import java.awt.TextField;import java.awt.Label;import java.awt.Button;import java.awt.Panel;import java.awt.GridBagConstraints;import java.awt.FlowLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import com.mindbright.gui.AWTConvenience;import com.mindbright.gui.AWTGridBagContainer;public class ModuleFTPOverSFTP implements MindTermModule, ActionListener,					  Runnable{    Dialog ftpdDialog;    TextField ftpHost;    TextField ftpPort;    Label     lblStatus;    Button    startBut, closeBut, browseBut;    ServerSocket ftpdListen;    MindTermApp mindterm;    Thread    ftpd;    public void ftpdDialog() {    }    public void init(MindTermApp mindterm) {	this.mindterm = mindterm;    }    public void activate(MindTermApp mindterm) {	if(ftpdDialog == null) {	    Label  lbl;	    Panel  p;	    ftpdDialog = new Dialog(mindterm.getParentFrame(),				    mindterm.getAppName() +				    " - FTP To SFTP Bridge", false);	    AWTGridBagContainer grid = new AWTGridBagContainer(ftpdDialog);	    lbl = new Label("Listen address:");	    grid.add(lbl, 0, 1);	    lbl = new Label("Listen port:");	    grid.add(lbl, 0, 1);	    ftpHost = new TextField("127.0.0.1", 20);	    grid.add(ftpHost, 1, 1);	    ftpPort = new TextField("21", 5);	    grid.add(ftpPort, 1, 1);	    grid.getConstraints().anchor = GridBagConstraints.CENTER;	    lblStatus = new Label("Bridge disabled...", Label.CENTER);	    grid.add(lblStatus, 2, 2);	    p = new Panel(new FlowLayout());	    p.add(startBut = new Button("Enable"));	    startBut.addActionListener(this);	    if(mindterm.isApplet()) {		p.add(browseBut = new Button("Browser..."));		browseBut.addActionListener(this);	    }	    p.add(closeBut = new Button("Close Dialog"));	    closeBut.addActionListener(				       new AWTConvenience.CloseAction(ftpdDialog));	    grid.add(p, 3, GridBagConstraints.REMAINDER);	    ftpdDialog.addWindowListener(new AWTConvenience.CloseAdapter(closeBut));	    AWTConvenience.setBackgroundOfChildren(ftpdDialog);	    AWTConvenience.setKeyListenerOfChildren(ftpdDialog,						    new AWTConvenience.OKCancelAdapter(startBut, closeBut),						    null);	    ftpdDialog.setResizable(true);	    ftpdDialog.pack();	}	String host = mindterm.getProperty("sftpbridge-host");	String port = mindterm.getProperty("sftpbridge-port");	if(host != null && !host.equals("")) {	    ftpHost.setText(host);	}	if(port != null && !port.equals("")) {	    ftpPort.setText(port);	}	updateFtpdDialog(false);	AWTConvenience.placeDialog(ftpdDialog);	ftpdDialog.setVisible(true);    }    public boolean isAvailable(MindTermApp mindterm) {	return (mindterm.isConnected() && (mindterm.getConnection() != null));    }    public void connected(MindTermApp mindterm) {	String ftpdHost = mindterm.getProperty("sftpbridge-host");	String ftpdPort = mindterm.getProperty("sftpbridge-port");	if(ftpdHost != null && ftpdHost.trim().length() > 0) {	    try {		startFtpdLoop(ftpdHost, ftpdPort);		mindterm.alert("Starting ftp to sftp bridge on " +			       ftpdHost + ":" + ftpdPort);	    } catch (Exception e) {		mindterm.alert("Error starting ftp to sftp bridge on " +			       ftpdHost + ":" + ftpdPort + " - " +			       e.getMessage());	    }	}    }    public void disconnected(MindTermApp mindterm) {	stopFtpdLoop();    }    public String description(MindTermApp mindterm) {	return null;    }    private void updateFtpdDialog(boolean preserveMsg) {	if(ftpdListen == null) {	    if(!preserveMsg)		lblStatus.setText("Bridge disabled...");	    ftpPort.setEnabled(true);	    ftpHost.setEnabled(true);	    if(browseBut != null) {		browseBut.setEnabled(false);	    }	    startBut.setLabel("Enable");	} else {	    if(!preserveMsg)		lblStatus.setText("Bridge enabled: " +				  ftpHost.getText() + ":" +				  ftpPort.getText());	    ftpPort.setEnabled(false);	    ftpHost.setEnabled(false);	    if(browseBut != null) {		browseBut.setEnabled(true);	    }	    startBut.setLabel("Disable");	}    }    public void run() {	ftpdLoop(ftpdListen);    }    public void startFtpdLoop(String host, String portStr) throws Exception {        if (com.mindbright.util.Util.isNetscapeJava()) {            try {                netscape.security.PrivilegeManager.enablePrivilege("TerminalEmulator");            } catch (netscape.security.ForbiddenTargetException e) {            }        }        	int port = Integer.parseInt(portStr);	ftpdListen = new ServerSocket(port, 32, InetAddress.getByName(host));	ftpd = new Thread(this, "FTPOverSFTP");	ftpd.start();    }    public void stopFtpdLoop() {	if(ftpdListen != null) {	    try {		ftpdListen.close();	    } catch (IOException e) {		/* don't care */	    } finally {		ftpdListen = null;	    }	}	if(ftpd != null && ftpd.isAlive()) {	    ftpd.stop();	}	ftpd = null;    }    public void ftpdLoop(ServerSocket listen) {        if (com.mindbright.util.Util.isNetscapeJava()) {            try {                netscape.security.PrivilegeManager.enablePrivilege("TerminalEmulator");            } catch (netscape.security.ForbiddenTargetException e) {            }        }                Socket conn = null;	try {	    for(;;) {                conn = null;		conn = listen.accept();                try {                    com.mindbright.ssh2.SSH2FTPOverSFTP ftp =                        new com.mindbright.ssh2.SSH2FTPOverSFTP(mindterm.getConnection(),                                                                conn.getInputStream(),                                                                conn.getOutputStream(),                                                                mindterm.getAppName() +                                                                ", FTP To SFTP Bridge");                } catch (Throwable se) {                    mindterm.alert("Failed to start FTP over SFTP bridge: " + se.getMessage());                    se.printStackTrace();                    try { conn.close(); } catch (Throwable t) { }                }	    }	} catch (Exception e) {            if (conn != null) {                try { conn.close(); } catch (Throwable t) { }            }            e.printStackTrace();	    /* ServerSocket closed (or error...) */	}    }    public void actionPerformed(ActionEvent e) {	if(e.getActionCommand().equals("Browser...")) {	    AppletContext ctx = (AppletContext)mindterm.getAppletContext();	    String host = ftpHost.getText();	    if("0.0.0.0".equals(host)) {		host = "127.0.0.1";	    }	    String url  = "ftp://" + host + ":" + ftpPort.getText();	    try {		ctx.showDocument(new java.net.URL(url), "_blank");	    } catch (Exception ex) {		mindterm.alert("Error running ftp browser: " + ex);	    }	} else {	     if(ftpd != null) {		 startBut.setLabel("Enable");		 stopFtpdLoop();		 updateFtpdDialog(false);		 mindterm.setProperty("sftpbridge-host", "");		 mindterm.setProperty("sftpbridge-port", "");	     } else {		 boolean err = false;		 lblStatus.setText("");		 try {		     String host = ftpHost.getText();		     String port = ftpPort.getText();		     startFtpdLoop(host, port);		     mindterm.setProperty("sftpbridge-host", host);		     mindterm.setProperty("sftpbridge-port", port);		 } catch (Exception ex) {		     err = true;		     ftpdListen = null;		     lblStatus.setText("Error: " + ex.getMessage());		 }		 updateFtpdDialog(err);	     }	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -