Class DefaultSftpSessionFactory

java.lang.Object
org.springframework.integration.sftp.session.DefaultSftpSessionFactory
All Implemented Interfaces:
SessionFactory<org.apache.sshd.sftp.client.SftpClient.DirEntry>, SharedSessionCapable

public class DefaultSftpSessionFactory extends Object implements SessionFactory<org.apache.sshd.sftp.client.SftpClient.DirEntry>, SharedSessionCapable
Factory for creating SftpSession instances.

The createSftpClient(ClientSession, SftpVersionSelector, SftpErrorDataHandler) can be overridden to provide a custom SftpClient. The DefaultSftpSessionFactory.ConcurrentSftpClient is used by default.

Since:
2.0
Author:
Josh Long, Mario Gray, Oleg Zhurakousky, Gunnar Hillert, Gary Russell, David Liu, Pat Turner, Artem Bilan, Krzysztof Debski, Auke Zaaiman, Christian Tzolov, Adama Sorho
  • Constructor Details

    • DefaultSftpSessionFactory

      public DefaultSftpSessionFactory()
    • DefaultSftpSessionFactory

      public DefaultSftpSessionFactory(boolean isSharedSession)
      Parameters:
      isSharedSession - true if the session is to be shared.
    • DefaultSftpSessionFactory

      public DefaultSftpSessionFactory(org.apache.sshd.client.SshClient sshClient, boolean isSharedSession)
      Instantiate based on the provided SshClient, e.g. some extension for HTTP/SOCKS.
      Parameters:
      sshClient - the SshClient instance.
      isSharedSession - true if the session is to be shared.
  • Method Details

    • setHost

      public void setHost(String host)
      The url of the host you want to connect to. This is a mandatory property.
      Parameters:
      host - The host.
      See Also:
      • ClientSessionCreator.connect(String, String, int)
    • setPort

      public void setPort(int port)
      The port over which the SFTP connection shall be established. If not specified, this value defaults to 22. If specified, this properties must be a positive number.
      Parameters:
      port - The port.
      See Also:
      • ClientSessionCreator.connect(String, String, int)
    • setUser

      public void setUser(String user)
      The remote user to use. This is a mandatory property.
      Parameters:
      user - The user.
      See Also:
      • ClientSessionCreator.connect(String, String, int)
    • setPassword

      public void setPassword(String password)
      The password to authenticate against the remote host. If a password is not provided, then a privateKey is mandatory.
      Parameters:
      password - The password.
      See Also:
      • SshClient.setPasswordIdentityProvider(PasswordIdentityProvider)
    • setHostConfig

      public void setHostConfig(org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig)
      Provide a HostConfigEntry as an alternative for the user/host/port options. Can be configured with a proxy jump property.
      Parameters:
      hostConfig - the HostConfigEntry for connection.
      Since:
      6.0
      See Also:
      • ClientSessionCreator.connect(HostConfigEntry)
    • setKnownHostsResource

      public void setKnownHostsResource(Resource knownHosts)
      Specifies a Resource that will be used for a host key repository. The data has to have the same format as OpenSSH's known_hosts file.
      Parameters:
      knownHosts - the resource for known hosts.
      Since:
      5.2.5
      See Also:
      • SshClient.setServerKeyVerifier(ServerKeyVerifier)
    • setPrivateKey

      public void setPrivateKey(Resource privateKey)
      Allows you to set a Resource, which represents the location of the private key used for authenticating against the remote host. If the privateKey is not provided, then the password property is mandatory.
      Parameters:
      privateKey - The private key.
      See Also:
      • SshClient.setKeyIdentityProvider(KeyIdentityProvider)
    • setPrivateKeyPassphrase

      public void setPrivateKeyPassphrase(String privateKeyPassphrase)
      The password for the private key. Optional.
      Parameters:
      privateKeyPassphrase - The private key passphrase.
      See Also:
      • SshClient.setKeyIdentityProvider(KeyIdentityProvider)
    • setUserInteraction

      public void setUserInteraction(org.apache.sshd.client.auth.keyboard.UserInteraction userInteraction)
      Provide a UserInteraction which exposes control over dealing with new keys or key changes. As Spring Integration will not normally allow user interaction, the implementation must respond to SSH protocol calls in a suitable way.
      Parameters:
      userInteraction - the UserInteraction.
      Since:
      4.1.7
      See Also:
      • SshClient.setUserInteraction(UserInteraction)
    • setAllowUnknownKeys

      public void setAllowUnknownKeys(boolean allowUnknownKeys)
      When no knownHosts has been provided, set to true to unconditionally allow connecting to an unknown host or when a host's key has changed (see knownHosts). Default false (since 4.2). Set to true if a knownHosts file is not provided.
      Parameters:
      allowUnknownKeys - true to allow connecting to unknown hosts.
      Since:
      4.1.7
    • setTimeout

      public void setTimeout(Integer timeout)
      The timeout property is used as the socket timeout parameter, as well as the default connection timeout. Defaults to 0, which means, that no timeout will occur.
      Parameters:
      timeout - The timeout.
      See Also:
      • VerifiableFuture.verify(Duration, org.apache.sshd.common.future.CancelOption...)
    • setSftpVersionSelector

      public void setSftpVersionSelector(org.apache.sshd.sftp.client.SftpVersionSelector sftpVersionSelector)
    • getSession

      public SftpSession getSession()
      Specified by:
      getSession in interface SessionFactory<org.apache.sshd.sftp.client.SftpClient.DirEntry>
    • isSharedSession

      public final boolean isSharedSession()
      Specified by:
      isSharedSession in interface SharedSessionCapable
      Returns:
      true if this factory uses a shared session.
    • resetSharedSession

      public void resetSharedSession()
      Description copied from interface: SharedSessionCapable
      Resets the shared session so the next #getSession() will return a session using a new connection.
      Specified by:
      resetSharedSession in interface SharedSessionCapable
    • createSftpClient

      protected org.apache.sshd.sftp.client.SftpClient createSftpClient(org.apache.sshd.client.session.ClientSession clientSession, org.apache.sshd.sftp.client.SftpVersionSelector initialVersionSelector, org.apache.sshd.sftp.client.SftpErrorDataHandler errorDataHandler) throws IOException
      Can be overridden to provide a custom SftpClient to getSession().
      Parameters:
      clientSession - the ClientSession
      initialVersionSelector - the initial SftpVersionSelector
      errorDataHandler - the SftpErrorDataHandler to handle incoming data through the error stream.
      Returns:
      SftpClient
      Throws:
      IOException - if failed to initialize
      Since:
      6.1.3