-
Notifications
You must be signed in to change notification settings - Fork 610
Changelog
shikhar edited this page Sep 18, 2014
·
47 revisions
- Throw
IllegalStateExceptionfor sanity-checking instead of assert statements insideSSHClient. (GH-89) - Use debug rather than info logging when failing to load keys from a location in
sshClient.authPublickey(user, locations...). (GH-84) - Possibility of
ArrayIndexOutOfBoundsExceptiononchannelOutputStream.write(). (GH-99, GH-104) - Add 'unconfirmed writes' feature to
RemoteFileOutputStream, allowing for major speedups in SFTP upload (should be at least 2x, ymmv). This is brought to you by a new parameter in theRemoteFileOutputStreamconstructor calledmaxUnconfirmedWrites, which is utilised bysftpFileTransfer.upload()with a default value of 16. (GH-97) - We were missing a socket flush during the initial SSH banner exchange.
- Transport/Connection/SFTP layer timeout methods are now millisecond granularity.
getTimeout()/setTimeout()are calledgetTimeoutMs()/setTimeoutMs()respectively. - Simplified the
UserAuth.authenticate(..)interface by making it one-method-at-time, with the trial and error business happening inSSHClient. - Added
UserAuth.getAllowedMethods(). (GH-106) -
StatefulSFTPClient.cd()should not update internal cwd state if stat fails. (GH-90) - Potential visibility issue on some channel request info received from server like exit status. (GH-114)
- Dependency version updates.
- Made logs less chatty by changing some info logging to be debug logging. (GH-80)
- Regex pattern matching for password prompt in
PasswordResponseProvider. (GH-77) -
AbstractChannel.close()should be no-op if the channel is already closed. (GH-53?)
- Make
sshClient.disconnect()no-op if already disconnected / never connected (GH-67). - Set default tty to
vt100for shell sessions. - Much improved
TransferListenerinterface that supports immutable implementation, however as it is signfiicantly different any overridden impl will break. - Fix for remote max packet size when greater than MAX_INT being treated as -1. (GH-57)
- Avoid string concat in various logging statements.
-
sftpClient.mkdirs()will not attempt to create the rightmost child 2x if there was a trailing separator in path. - Fix for infinite loop in buffer allocation. (GH-72)
-
SFTPFileTransfernow has a preference for whether attributes should be preserved. (GH-42)
-
OpenSSHKnownHostsre-implemented to better support the format seen in the wild, e.g. optional markers. (GH-41) -
SocketClientmade public so that SSHClient can be mocked for testing. - Publish sources jar. (GH-37)
- Fixed typo on
SFTPClient.getFileTansfer() - Removed deprecated methods on
Session.Command,getOutputAsString()andgetErrorAsString(). - Window adjustments were being logged incorrectly, fixed.
- Fix a condition where
ChannelOutputStreamwrites or flushes may wrongly block sitting around waiting for window adjustments where none was required. Issue was observed with non-OpenSSH servers like dropbear and WinSSHD. (GH-47) - Fix for using sshj in OSGi. (GH-50)
- Local port forwarding - there was no way to cleanly close the server socket. (GH-26)
- Race condition in
AbstractChannelchannel requests (0.6.0 regression). (GH-36)
- Fixed deadlock condition in
AbstractChannel. (GH-27) -
StatefulSFTPClientdoesn't cwdify all commands. (GH-28) - Fixed bug in SFTP
FileModefor AIX/Unix directory mask. (GH-31) - The option to use an 'upload filter' is back in
SCPUploadClient. (GH-34)
- In case of
publickeyauthentication using a string rather than a file, prevent private key data from leaking in logs / on authentication exception. (GH-20) - SessionChannel#changeWindowDimensions was broken. (GH-21)
- Prevent occasional spurious NPE when disconnecting at AbstractDirectChannel#notifyError.
- SSHClient implements Closeable.
- OSGi-fication. (GH-22)
- Intermittent key exchange failures. (GH-18)
- Support for
publickeyauthentication from strings. (GH-16)
-
DisconnectListenercallback. -
FileTransferinterface refactored. Local source and destination paths can be any implementation ofLocalSourceFileandLocalDestFile, respectively. - Bug in case of SCP remote path having spaces fixed.
- Deprecated
Command#getOutputAsString()andCommand#getErrorAsString()-- recommend usingIOUtils#pipeStream(..)instead. -
StreamCopierinterface updated, now uses builder pattern.start()to spawn,copy()to do it in current thread and block. - Possible to specify an alternate path separator (for Windows SFTP servers).
- Several internal refactorings that make the library nicer...
- stderr
ChannelInputStreamgets correctly notified of errors e.g. at the transport layer. - Added a
channel.join(timeout)variant. - An alternate
AndroidConfigto initializeSSHClientwith on Android 2.3+ was added, which usesJCERandominstead ofBouncyCastleRandom. - In SCP upload, detect when destination directory does not exist. This was previously detected as a warning (well, technically it is sent as one...) but should truly be an error. All SCP 'warnings' now treated as errors.
- Bug with
StatefulSFTPClient#putfixed - was doing a get instead of a put! -
SessionChannelreuse now gets an explicit runtime error.
-
channel.close()method no longer called implicitly on disconnecting, because this is error prone. See updated examples. - Logging fix: enable filtering, previously due to misconfiguration this was hard to do.
- Don't barf when a server sends more
CHANNEL_DATAthan announced. Now there is no exception in this case, but still only as much data as announced is consumed. - Client was still identifying as
SSHJ_0_1-- changed toSSHJ_0_3. - Support for SFTP versions less than 3.
- Host based authentication - see
net.schmizz.sshj.userauth.method.AuthHostbased; pass an instance toSSHClient.auth()to use. - Added
Channel.join()to allow blocking on channel close event. Useful e.g. when waiting for a command to exit. - Various code cleanups.
- In 0.2.0
DefaultModeGetterandDeaultModeSetterstarted throwing exception when permissions couldn't be retrieved/assigned, and this was problematic on windows so the exception has been replaced with a log message.
- Now compiled with compiler source and target level = 6 -- JRE 6+ is required! Always was, just more explicit now.
- New methods in
SFTPClient: checking if a file/directory exists (statExistence()-- returnsnullon file not found); recursively create directories (mkdirs()). - Bug with SFTP directory listing being truncated fixed.
- Timestamps and permissions are now preserved by default when transferring with SCP or SFTP. A bug which prevented even using the
ModeGetterorModeSetterinterface for this purpose has been quashed. -
keyboard-interactiveauthentication now supported.SSHClient#authPassword()attempts to use it as a fallback by default. - An interface has been introduced for observing progress of file transfers (
TransferListener) which can be registered with anyFileTransferimplementation (i.e.SCPFileTransfer;SFTPFileTransfer). - Various bugfixes and improvements.