Class SshdSession

java.lang.Object
org.eclipse.jgit.transport.sshd.SshdSession
All Implemented Interfaces:
RemoteSession, RemoteSession2

public class SshdSession extends Object implements RemoteSession2
An implementation of RemoteSession based on Apache MINA sshd.
Since:
5.2
  • Field Details

    • LOG

      private static final org.slf4j.Logger LOG
    • SHORT_SSH_FORMAT

      private static final Pattern SHORT_SSH_FORMAT
    • MAX_DEPTH

      private static final int MAX_DEPTH
      See Also:
    • listeners

      private final CopyOnWriteArrayList<SessionCloseListener> listeners
    • uri

      private final URIish uri
    • client

      private org.apache.sshd.client.SshClient client
    • session

      private org.apache.sshd.client.session.ClientSession session
  • Constructor Details

    • SshdSession

      SshdSession(URIish uri, Supplier<org.apache.sshd.client.SshClient> clientFactory)
  • Method Details

    • connect

      void connect(Duration timeout) throws IOException
      Throws:
      IOException
    • connect

      private org.apache.sshd.client.session.ClientSession connect(URIish target, List<URIish> jumps, org.apache.sshd.common.future.SshFutureListener<org.apache.sshd.common.future.CloseFuture> listener, Duration timeout, int depth) throws IOException
      Throws:
      IOException
    • connect

      private org.apache.sshd.client.session.ClientSession connect(org.apache.sshd.client.config.hosts.HostConfigEntry config, org.apache.sshd.common.AttributeRepository context, Duration timeout) throws IOException
      Throws:
      IOException
    • close

      private void close(Closeable toClose, Throwable error)
    • getHostConfig

      private org.apache.sshd.client.config.hosts.HostConfigEntry getHostConfig(String username, String host, int port) throws IOException
      Throws:
      IOException
    • determineHops

      private List<URIish> determineHops(List<URIish> currentHops, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, String host) throws IOException
      Throws:
      IOException
    • parseProxyJump

      private List<URIish> parseProxyJump(String proxyJump) throws URISyntaxException
      Throws:
      URISyntaxException
    • addCloseListener

      public void addCloseListener(@NonNull SessionCloseListener listener)
      Adds a SessionCloseListener to this session. Has no effect if the given listener is already registered with this session.
      Parameters:
      listener - to add
    • removeCloseListener

      public void removeCloseListener(@NonNull SessionCloseListener listener)
      Removes the given listener; has no effect if the listener is not currently registered with this session.
      Parameters:
      listener - to remove
    • notifyCloseListeners

      private void notifyCloseListeners()
    • exec

      public Process exec(String commandName, int timeout) throws IOException
      Description copied from interface: RemoteSession
      Creates a new remote Process to execute the given command. The returned process's streams exist and are connected, and execution of the process is already started.
      Specified by:
      exec in interface RemoteSession
      Parameters:
      commandName - command to execute
      timeout - timeout value, in seconds, for creating the remote process
      Returns:
      a new remote process, already started
      Throws:
      IOException - may be thrown in several cases. For example, on problems opening input or output streams or on problems connecting or communicating with the remote host. For the latter two cases, a TransportException may be thrown (a subclass of java.io.IOException).
    • exec

      public Process exec(String commandName, Map<String,String> environment, int timeout) throws IOException
      Description copied from interface: RemoteSession2
      Creates a new remote Process to execute the given command. The returned process's streams exist and are connected, and execution of the process is already started.
      Specified by:
      exec in interface RemoteSession2
      Parameters:
      commandName - command to execute
      environment - environment variables to pass on
      timeout - timeout value, in seconds, for creating the remote process
      Returns:
      a new remote process, already started
      Throws:
      IOException - may be thrown in several cases. For example, on problems opening input or output streams or on problems connecting or communicating with the remote host. For the latter two cases, a TransportException may be thrown (a subclass of java.io.IOException).
    • getFtpChannel

      @NonNull public FtpChannel getFtpChannel()
      Obtain an FtpChannel to perform SFTP operations in this SshdSession.
      Specified by:
      getFtpChannel in interface RemoteSession
      Returns:
      the FtpChannel
    • disconnect

      public void disconnect()
      Description copied from interface: RemoteSession
      Disconnects the remote session.
      Specified by:
      disconnect in interface RemoteSession
    • disconnect

      private void disconnect(Throwable reason)