Class SftpStreamProxy

java.lang.Object
org.apache.commons.vfs2.provider.sftp.SftpStreamProxy
All Implemented Interfaces:
com.jcraft.jsch.Proxy

public class SftpStreamProxy extends Object implements com.jcraft.jsch.Proxy
Stream based proxy for JSch.

Use a command on the proxy that will forward the SSH stream to the target host and port.

Since:
2.1
  • Field Details

    • BASH_TCP_COMMAND

      public static final String BASH_TCP_COMMAND
      Command format using bash built-in TCP stream.
      See Also:
    • NETCAT_COMMAND

      public static final String NETCAT_COMMAND
      Command format using netcat command.
      See Also:
    • channel

      private com.jcraft.jsch.ChannelExec channel
    • commandFormat

      private final String commandFormat
      Command pattern to execute on the proxy host.

      When run, the command output should be forwarded to the target host and port, and its input should be forwarded from the target host and port.

      The command will be created for each host/port pair by using String.format(String, Object...) with two objects: the target host name (String) and the target port (Integer).

      Here are two examples (that can be easily used by using the static members of this class):

      • nc -q 0 %s %d to use the netcat command (NETCAT_COMMAND)
      • /bin/bash -c 'exec 3<>/dev/tcp/%s/%d; cat <&3 & cat >&3; kill $! will use bash built-in TCP stream, which can be useful when there is no netcat available. (BASH_TCP_COMMAND)
    • proxyHost

      private final String proxyHost
      Hostname used to connect to the proxy host.
    • proxyOptions

      private final FileSystemOptions proxyOptions
      The options for connection.
    • proxyPassword

      private final String proxyPassword
      The password to be used for connection.
    • proxyPort

      private final int proxyPort
      Port used to connect to the proxy host.
    • proxyUser

      private final String proxyUser
      Username used to connect to the proxy host.
    • session

      private com.jcraft.jsch.Session session
  • Constructor Details

    • SftpStreamProxy

      public SftpStreamProxy(String commandFormat, String proxyUser, String proxyHost, int proxyPort, String proxyPassword, FileSystemOptions proxyOptions)
      Creates a stream proxy.
      Parameters:
      commandFormat - A format string that will be used to create the command to execute on the proxy host using String.format(String, Object...). Two parameters are given to the format command, the target host name (String) and port (Integer).
      proxyUser - The proxy user
      proxyHost - The proxy host
      proxyPort - The port to connect to on the proxy
      proxyPassword - The proxy password
      proxyOptions - Options used when connecting to the proxy
  • Method Details

    • close

      public void close()
      Specified by:
      close in interface com.jcraft.jsch.Proxy
    • connect

      public void connect(com.jcraft.jsch.SocketFactory socketFactory, String targetHost, int targetPort, int timeout) throws Exception
      Specified by:
      connect in interface com.jcraft.jsch.Proxy
      Throws:
      Exception
    • getInputStream

      public InputStream getInputStream()
      Specified by:
      getInputStream in interface com.jcraft.jsch.Proxy
    • getOutputStream

      public OutputStream getOutputStream()
      Specified by:
      getOutputStream in interface com.jcraft.jsch.Proxy
    • getSocket

      public Socket getSocket()
      Specified by:
      getSocket in interface com.jcraft.jsch.Proxy