Rebex .NET components R6.0: Support for .NET 6.0, improvements in SSH, TLS, ZIP and VFS API
This is a major release, the first one in R6.x series. It adds a lot of new features - see below for details.
We tried very hard to make migration from R5.x as simple as possible, and we believe that the majority of our users won't encounter any issues during the upgrade at all. However, there are several possible breaking changes. In any case, you don't have to upgrade yet - R5.x will be supported until 2023-10-10.
Full support for .NET 6.0
This release adds a new set of binaries targeting the new .NET 6.0. It supports all .NET 6.0 platforms:
- Windows (x64, x86, ARM64)
- Linux (x64, ARM32, ARM64)
- macOS (x64)
Please note that support for Android and iOS/tvOS in .NET 6.0 is still in preview mode. We will fully support these platforms as soon as the corresponding .NET 6.0 update is published.
Removed deprecated APIs
In this major release, we removed some APIs that have been deprecated for a very long time and seldom used. We will publish an article soon detailing these changes. In the meantime, if this affects you, please keep using version R5.7, and let us know.
Support for reverse SSH tunnels
Finally, Rebex File Server supports incoming tunnels via SSH, also known as reverse port forwarding.
Use EnableReverseTunneling
property in FileServer.Settings
to enable this feature.
New Rebex.IO API
We added a set of new classes to Rebex.IO
namespace that make it possible to access
files and directories in custom file system providers
using a simple API that resembles System.IO
. The new classes are VFile
, VFileInfo
, VDirectory
,
VDirectoryInfo
, VFileSystemInfo
, VDriveInfo
and VFileStream
,
and they are provided by Rebex.FileSystem
assembly.
Support for ECDSA X.509 certificates in SSH
Added support for x509v3-ecdsa-sha2-nistp256
, x509v3-ecdsa-sha2-nistp384
and x509v3-ecdsa-sha2-nistp521
SSH host key and client key algorithms (as specified by RFC 6187).
Changes in Rebex.Terminal assembly
Due to Microsoft's decision to drop support for most of System.Drawing
on non-Windows platforms in .NET 6.0,
we decided to slightly restructure our Rebex.Terminal
assembly to accommodate for this.
Therefore, TerminalControl
, TerminalFont
and related classes were moved to a separate
assembly called Rebex.Terminal.Control
, along with image-based or font-based functionality previously
available in ITerminal
and VirtualTerminal
classes (these are now available via VirtualTerminalExtensions
class with a slightly modified API with TerminalImageFormat
instead of TerminalCaptureFormat
).
We also split seldom-used SerialPortChannel
class to a dedicated Rebex.Terminal.SerialPort
assembly.
Additionally, we removed SshTerminalControl
and TelnetTerminalControl
classes, which extend
TerminalControl
. If you use these classes, just add the replacement SshTerminalControl.cs
or TelnetTerminalControl.cs
files to your application - these are available as part of SshSimpleWinFormClient/TelnetSimpleWinFormClient
sample apps (VB.NET versions are available as well).
If these changes prevent you from upgrading, please keep using version R5.7 and let us know.
Updated default settings
We changed default values of some settings. For example, UTF-8 is now ubiquitous, so it makes sense to prefer it by default. Of course, you can still revert the corresponding settings to previous values. See the release history for details.
Async methods in WebClient
We added *Async
variants of WebClient
methods. (Please note that these are still implemented synchronously internally.)
TlsStream(Stream) constructor
TlsStream
class now features a new Stream
-based constructor, making it possible to implement TLS 1.3/1.2
on top of any suitable (readable/writable) Stream
.
New ZipReader class
The new ZipReader
class makes it possible to process ZIP files on-the-fly, without having to parse
the ZIP file's items first. You can now read ZIP files and extract items sequentially.
Non-seekable streams are supported as well.
And more...
For a detailed list of changes, see the release history.