Portable FTP server written in .NET
IMembershipProviderAsync
UseImplicitTls()
FtpConnectionOptions
This release is primarily a fix for issues #75 and #76
It also contains several fixes that should improve the stability of the server.
TL/DR:
AUTH TLS
fails gracefullyGnuTLS
-based applicationsSITE BLST
works againMultiBindingTcpListener
.
directory will be returned again (fixes #56)There are plans to use the same infrastructure as ASP.NET Core 3.0 for
connection management, but this will mean that several target frameworks
will not be supported in version 4.0, like - for example - netstandard1.3
and net461
.
An exhaustive upgrade guide can be found in the documentation.
TL/DR: Make it work!
EPSV 2
: The 2
isn't the port, it's the address family (2=IPv6)umask
supportAUTH SSL
, alias for AUTH TLS
SYST
allowed without loginThe code base was heavily refactored in preparation for a switch to the Kestrel server.
Many properties, methods and classes are now obsolete. The messages are giving hints so that you can fix the warnings yourself. The obsolete API will be removed with 4.0.
IFtpConnection.Features
IFtpCommandActivator
that sets the FTP command handlers contextMultiBindingTcpListener
IAccountInformation.AuthenticatedBy
: There's no reason for thisPromiscuousPasv
into PasvCommandOptions
The new location is a better fit.
The FTP command handlers and extensions aren't registered in the service collection (for dependency injection) any more. We're now using implementations of the following DI services:
IFtpCommandHandlerScanner
which scans for types that may implement FTP command handlersIFtpCommandHandlerProvider
which returns information for all found FTP command handler types.You can still add your FTP command handlers to the DI container, but those will be ignored from version 4.0 and up.
There are equivalent interfaces for FTP command handler extensions:
IFtpCommandHandlerExtensionScanner
IFtpCommandHandlerExtensionProvider
We're now able to write constructor-less FTP command handlers, but we now require new attributes.
FtpCommandHandlerAttribute
which gives the FTP command handler a name and defines if it needs a successful login or if it's abortableFtpCommandHandlerExtensionAttribute
is the equivalent of FtpCommandHandlerAttribute
for FTP command handler extensions, like OptsUtf8CommandExtension
for OPTS UTF8
FtpFeatureTextAttribute
defines the text to be returned by the FEAT
commandFtpFeatureFunctionAttribute
defines the function that returns the text to be returned by the FEAT
commandGnuSslStream
is used for builds targeting .NET Framework 4.6.1
FileSystem
property isn't part of the IUnixFileSystemEntry
interface anymore to avoid a chicken/egg problem