package com.pastdev.jsch.proxy; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.jcraft.jsch.Channel; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Proxy; import com.jcraft.jsch.Session; import com.jcraft.jsch.SocketFactory; import com.pastdev.jsch.SessionFactory; public class SshProxy implements Proxy { private static Logger logger = LoggerFactory.getLogger( SshProxy.class ); private Channel channel; private InputStream inputStream; private OutputStream outputStream; private SessionFactory sessionFactory; private Session session; public SshProxy( SessionFactory sessionFactory ) throws JSchException { this.sessionFactory = sessionFactory; this.session = sessionFactory.newSession(); } public void close() { if ( session != null && session.isConnected() ) { session.disconnect(); } } public void connect( SocketFactory socketFactory, String host, int port, int timeout ) throws Exception { logger.debug( "connecting session" ); session.connect(); channel = session.getStreamForwarder( host, port ); inputStream = channel.getInputStream(); outputStream = channel.getOutputStream(); channel.connect( timeout ); } public InputStream getInputStream() { return inputStream; } public OutputStream getOutputStream() { return outputStream; } public Socket getSocket() { return null; } @Override public String toString() { return "PROXY(" + sessionFactory.toString() + ")"; } }