Releases: FubarDevelopment/FtpServer
Hotfix to ensure that logging is optional
Logging is an optional component Fixes #63
Restructuring and SSL factory fixes
SSL factory fixes (GnuTLS, #49)
Clients using GnuTLS should now work too - as soon as the FTP server is used in a .NET Core app (2.0 or higher). The example application shows how to register your own ISslStreamWrapperFactory
, which (in the example application) uses a fixed version of the GnuSslStream.
Restructuring (BREAKING CHANGE)
We now have an IFtpResponse
interface, which will allow us to use IAsyncEnumerable
to return file lists from file systems with many files as soon as they're available (e.g. Google Drive).
Google Drive improvements and connection limits
Initial support for virtual hosts
New
- Support for
HOST
andREIN
commands - Support for
ADAT
command
Fixed
OPTS UTF8
can be used without login
Changed
IFtpConnection.Data.IsLoggedIn
is obsolete (use the newIFtpLoginStateMachine.Status
instead)- Server may now listen on port 0 (fixes #55)
Better RFC 2228 support
Summary
New
- New
IFtpLoginStateMachine
interface and implementation - Localizable FTP server
Fixed
SYST
returns now status code 215
Changed
AuthTlsOptions
was moved toFubarDev.FtpServer
package
Details
Better RFC 2228 support
This version supports better support as described in the RFC 2228 - FTP Security Extensions. This means that AUTH TLS
is implemented as IAuthenticationMechanism
and USER
/PASS
is implemented as IAuthorizationMechanism
. This move will allow support for other commands like ACCT
, ADAT
, etc... and more authentication mechanisms like - for example - NTLM/Kerberos and others.
Localizable FTP server
A new interface IFtpCatalogLoader
was introduces to allow loading of translations for the FTP status messages by utilizing the NGettext package. This automatically results in the support of the LANG
command as specified in the RFC 2640 - Internationalization of the File Transfer Protocol.
Last big release before going all-in on ASP.NET Core
Upgrade guide: http://fubardevelopment.github.io/FtpServer/articles/upgrade-3.0.html
What's new?
- In-memory file system
- Passive data connection port range (contribution from 40three GmbH)
- New
IFtpServerHost
interface - New
IFtpService
interface which allows easy integration into ASP.NET Core - New
IAccountInformation
interface - New
IAnonymousFtpUser
interface
What's changed?
- Google drive upload without background uploader
- BREAKING: The FTP commands are now registered as singletons to improve performance
- BREAKING: Usage of
ReadOnlySpan
in the FTP command collector - BREAKING:
IFileSystemClassFactory.Create
takes anIAccountInformation
- BREAKING: The
IMembershipProvider
is now asynchronous - BREAKING:
FtpConnectionData.IsAnonymous
is obsolete, the anonymous user is now of typeIAnonymousFtpUser
- The
IFtpCommandHandler.GetExtensions()
is now deprecated as all extensions that were previously returned here have their own implementation now
What's fixed?
- AUTH TLS fails gracefully when no SSL certificate is configured
SITE BLST
works again
A look into the future
The 4.x version will drop support for .NET Standard 1.3 and - eventually - .NET 4.6.1 as
the FTP Server will be reimplemented as ConnectionHandler
which will result into the following
improvements:
- Easy hosting in an ASP.NET Core application
- Usage of pipelines when possible (
AUTH TLS
might cause problems) - Using the ASP.NET Core connection state management
Configurable passive port range
Increase Telnet protocol compatibility and reduce CPU load
Fixes
Additional information
The problem with issue #32 is, that the client needs to send the 0xFF twice to escape it, because the FTP protocol uses Telnet strings and those escape sequences are part of the Telnet specification. The FTP server now recognices the 0xFF 0xFF character sequence and handles it properly.
Explicitly add Options service
Fixes
- #29: Unable to resolve IOptions service
Transition to .NET Standard and Dependency Injection
This release contains the following changes:
- Everything is instantiated using Dependency Injection (Microsoft.Extensions.DependencyInjection)
- Standard logging (Microsoft.Extensions.Logging)
- Finally a documentation (http://fubardevelopment.github.io/FtpServer/)
- Support for .NET Standard 1.3/2.0 and .NET Framework 4.6.1
- ... and several other things I probably forgot