Rebex .NET components R6.0: Support for .NET 6.0, improvements in SSH, TLS, ZIP and VFS API

  |   Lukas Pokorny

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.