Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork176
Releases: FubarDevelopment/FtpServer
Preparation for Overhaul
Assets2
Uh oh!
There was an error while loading.Please reload this page.
QOL imrpovements
New
- Shell for the test FTP server
- Connection timeout configurable through the
FtpConnectionOptions
Fixed
- Issue#82
Assets2
Uh oh!
There was an error while loading.Please reload this page.
Implicit TLS and nullable reference types
New
- Support for nullable reference types
- Support for .NET Core 3.0
- Configurable maximum number of connections
- Async connection initialization
- Switch to ClaimsPrincipal
Fixed
- Implicit TLS
- EPSV ALL
Assets2
Uh oh!
There was an error while loading.Please reload this page.
Race conditions are bad
Assets2
Uh oh!
There was an error while loading.Please reload this page.
Shiny, more extension points
TL/DR:
New
- Authorization/authentication as per RFC 2228
- Account directories queryable (for an authmatic CWD to home directory)
- PAM authentication
- Unix file system support
- Usage of feature collections
- Middlewares for requests
- Middlewares for commands
- Concept of server commands
Changed
- Non-background upload for Google Drive is the default
- Big parts of the API are now obsolete in favor of the new feature collections
- Breaking API changes for:
- File system
- User information
Fixed
AUTH TLSfails gracefully- Increased compatibility with
GnuTLS-based applications SITE BLSTworks again- Fixed deadlock in
MultiBindingTcpListener - Thread safe increment/decrement for connection counter (fixes#68)
- The
.directory will be returned again (fixes#56)
Future
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
andnet461.
Detailed information
An exhaustiveupgrade guide can be found in the documentation.
Assets2
Uh oh!
There was an error while loading.Please reload this page.
Quick fix
TL/DR: Make it work!
- Make IFtpCommandHandlerExtensionScanner scoped, fixes issue#72
Assets2
Uh oh!
There was an error while loading.Please reload this page.
Test FTP Server Shell, fixes and finalization
Test FTP server
- Dockerfile, image availabe onDocker Hub
- Integrated shell
- Generic .NET Host
Fixes
- Issue#55 (Local port is queryable)
- Issue#56 (Better LIST output)
- File system UID/GID changes
- Fixed several causes of FTP client connection that stayed open
EPSV 2: The2isn't the port, it's the address family (2=IPv6)
Changed
- Completed transition to piplines/channels
- Switch to/from TLS works again
- Pausable services (FTP server, reading from network stream, etc....)
- PAM authentication module doesn't need .NET Core 3.0 any more
- It'll only work on Linux for now
Assets2
Uh oh!
There was an error while loading.Please reload this page.
Continued refactoring
Test FTP Server
- Configuration file
umasksupport
Changed
- Continued restructuring
- Dispatcher for FTP commands
- Background commands are now handled the same way as foreground commands
- Non configured FTPS results in 500 instead of 421
- Data connection factory
- Transparent creation of a data connection (active or passive)
New
- Accept
AUTH SSL, alias forAUTH TLS - FTP command middleware
Fixes
- TELNET: "Interrupt Process" will be interpreted as "ABOR"
- TELNET: "DATA MARK" support
SYSTallowed without login
Assets2
Uh oh!
There was an error while loading.Please reload this page.
Preparation for switch to Kestrel
The 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.
New
- Feature interfaces to be queried through
IFtpConnection.Features - Lazy instantiation of FTP command handlers
- Using attributes for FTP command handlers and extensions
IFtpCommandActivatorthat sets the FTP command handlers context- Quickstart sample
Fixed
- Fixed deadlock in
MultiBindingTcpListener - MLST now returining areal list (bug introduced with v3.0.0-beta.5)
- Thread safe increment/decrement for connection counter (fixes#68)
Removed
IAccountInformation.AuthenticatedBy: There's no reason for this
Breaking changes
MovedPromiscuousPasv intoPasvCommandOptions
The new location is a better fit.
FTP command handler not registgered in DI container
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:
IFtpCommandHandlerScannerwhich scans for types that may implement FTP command handlersIFtpCommandHandlerProviderwhich 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:
IFtpCommandHandlerExtensionScannerIFtpCommandHandlerExtensionProvider
FTP command handlers require attributes
We're now able to write constructor-less FTP command handlers, but we now require new attributes.
FtpCommandHandlerAttributewhich gives the FTP command handler a name and defines if it needs a successful login or if it's abortableFtpCommandHandlerExtensionAttributeis the equivalent ofFtpCommandHandlerAttributefor FTP command handler extensions, likeOptsUtf8CommandExtensionforOPTS UTF8FtpFeatureTextAttributedefines the text to be returned by theFEATcommandFtpFeatureFunctionAttributedefines the function that returns the text to be returned by theFEATcommand
Assets2
Uh oh!
There was an error while loading.Please reload this page.
PAM authentication and UNIX file system support
New
- Unix file system
- File system root is the users home directory
- PAM authentication
- This allow authentication against Linux users
Improvements
GnuSslStreamis used for builds targeting .NET Framework 4.6.1- This avoids problems with clients using GnuTLS
Breaking changes
- The
FileSystemproperty isn't part of theIUnixFileSystemEntryinterface anymore to avoid a chicken/egg problem
Assets2
Uh oh!
There was an error while loading.Please reload this page.