-
Notifications
You must be signed in to change notification settings - Fork 601
Changelog
Shikhar Bhushan edited this page Aug 12, 2013
·
47 revisions
TODO
- Throw
IllegalStateException
for 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
ArrayIndexOutOfBoundsException
onchannelOutputStream.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 theRemoteFileOutputStream
constructor calledmaxUnconfirmedWrites
, which is utilised bysftpFileTransfer.upload()
by default with a 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
vt100
for shell sessions. - Much improved
TransferListener
interface 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)
-
SFTPFileTransfer
now has a preference for whether attributes should be preserved. (GH-42)
-
OpenSSHKnownHosts
re-implemented to better support the format seen in the wild, e.g. optional markers. (GH-41) -
SocketClient
made 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
ChannelOutputStream
writes 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
AbstractChannel
channel requests (0.6.0 regression). (GH-36)
- Fixed deadlock condition in
AbstractChannel
. (GH-27) -
StatefulSFTPClient
doesn't cwdify all commands. (GH-28) - Fixed bug in SFTP
FileMode
for AIX/Unix directory mask. (GH-31) - The option to use an 'upload filter' is back in
SCPUploadClient
. (GH-34)
- In case of
publickey
authentication 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
publickey
authentication from strings. (GH-16)
-
DisconnectListener
callback. -
FileTransfer
interface refactored. Local source and destination paths can be any implementation ofLocalSourceFile
andLocalDestFile
, respectively. - Bug in case of SCP remote path having spaces fixed.
- Deprecated
Command#getOutputAsString()
andCommand#getErrorAsString()
-- recommend usingIOUtils#pipeStream(..)
instead. -
StreamCopier
interface 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
ChannelInputStream
gets correctly notified of errors e.g. at the transport layer. - Added a
channel.join(timeout)
variant. - An alternate
AndroidConfig
to initializeSSHClient
with on Android 2.3+ was added, which usesJCERandom
instead 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#put
fixed - was doing a get instead of a put! -
SessionChannel
reuse 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_DATA
than 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
DefaultModeGetter
andDeaultModeSetter
started 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()
-- returnsnull
on 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
ModeGetter
orModeSetter
interface for this purpose has been quashed. -
keyboard-interactive
authentication 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 anyFileTransfer
implementation (i.e.SCPFileTransfer
;SFTPFileTransfer
). - Various bugfixes and improvements.