FtpServer Versions Save

Portable FTP server written in .NET

v3.1.2

2 years ago

Added

  • Support for custom listener services #115
  • LogOut for user when connection gets closed #93
    • New interface IMembershipProviderAsync

Fixed

  • S3 directory list fix #103
  • Final(?) fix for #82

Changed

  • Use many interfaces from ASP.NET Core 3.0
  • Implicit TLS is now a core feature activated using UseImplicitTls()
  • Better decoupling of server and connection

v3.1.1

2 years ago

New

  • Shell for the test FTP server
  • Connection timeout configurable through the FtpConnectionOptions

Fixed

  • Issue #82

v3.0.2

4 years ago

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

v3.0.1

4 years ago

This release is primarily a fix for issues #75 and #76

It also contains several fixes that should improve the stability of the server.

v3.0.0

4 years ago

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 TLS fails gracefully
  • Increased compatibility with GnuTLS-based applications
  • SITE BLST works 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 and net461.

Detailed information

An exhaustive upgrade guide can be found in the documentation.

v3.0.0-rc.5

4 years ago

TL/DR: Make it work!

  • Make IFtpCommandHandlerExtensionScanner scoped, fixes issue #72

v3.0.0-rc.4

5 years ago

Test FTP server

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: The 2 isn'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

v3.0.0-rc.3

5 years ago

Test FTP Server

  • Configuration file
  • umask support

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 for AUTH TLS
  • FTP command middleware

Fixes

  • TELNET: "Interrupt Process" will be interpreted as "ABOR"
  • TELNET: "DATA MARK" support
  • SYST allowed without login

v3.0.0-rc.2

5 years ago

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
  • IFtpCommandActivator that sets the FTP command handlers context
  • Quickstart sample

Fixed

  • Fixed deadlock in MultiBindingTcpListener
  • MLST now returining a real 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

Moved PromiscuousPasv into PasvCommandOptions

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:

  • IFtpCommandHandlerScanner which scans for types that may implement FTP command handlers
  • IFtpCommandHandlerProvider 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

FTP command handlers require attributes

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 abortable
  • FtpCommandHandlerExtensionAttribute 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 command
  • FtpFeatureFunctionAttribute defines the function that returns the text to be returned by the FEAT command

v3.0.0-rc.1

5 years ago

New

  • Unix file system
    • File system root is the users home directory
  • PAM authentication
    • This allow authentication against Linux users

Improvements

  • GnuSslStream is used for builds targeting .NET Framework 4.6.1
    • This avoids problems with clients using GnuTLS

Breaking changes

  • The FileSystem property isn't part of the IUnixFileSystemEntry interface anymore to avoid a chicken/egg problem