Sign inSign up

fubardev/sharp-ftp-server

By fubardev

•Updated about 7 years ago

FTP Server written in C#

Image
0

589

fubardev/sharp-ftp-server repository overview

⁠Portable FTP server

Build status

This FTP server is written as .NET Standard 2.0 library and has an abstract file system which allows e.g. Google Drive as backend.

⁠License

The library is released under the MIT license.

⁠Support the development

Patreon

⁠Prerequisites

⁠Compilation

  • Visual Studio 2019 / C# 8.0

⁠Using

  • Visual Studio 2019
  • .NET Standard 2.0 (everything except sample application, PAM authentication)
  • .NET Core 3.0 (sample application, PAM authentication)

⁠NuGet packages

Package nameDescriptionBadge
FubarDev.FtpServerCore libraryFubarDev.FtpServer
FD.FS.AbstractionsBasic typesFubarDev.FtpServer.Abstractions
FD.FS.FileSystem.DotNetSystem.IO-based file systemFubarDev.FtpServer.FileSystem.DotNet
FD.FS.FileSystem.GoogleDriveGoogle Drive as file systemFubarDev.FtpServer.FileSystem.GoogleDrive
FD.FS.FileSystem.InMemoryIn-memory file systemFubarDev.FtpServer.FileSystem.InMemory
FD.FS.FileSystem.UnixUnix file systemFubarDev.FtpServer.FileSystem.Unix
FD.FS.MembershipProvider.PamPAM membership providerFubarDev.FtpServer.MembershipProvider.Pam

⁠Example FTP server

⁠Creating the project

dotnet new console
dotnet add package FubarDev.FtpServer.FileSystem.DotNet
dotnet add package FubarDev.FtpServer
dotnet add package Microsoft.Extensions.DependencyInjection

⁠Contents of Main in Program.cs

// Setup dependency injection
var services = new ServiceCollection();

// use %TEMP%/TestFtpServer as root folder
services.Configure<DotNetFileSystemOptions>(opt => opt
    .RootPath = Path.Combine(Path.GetTempPath(), "TestFtpServer"));

// Add FTP server services
// DotNetFileSystemProvider = Use the .NET file system functionality
// AnonymousMembershipProvider = allow only anonymous logins
services.AddFtpServer(builder => builder
    .UseDotNetFileSystem() // Use the .NET file system functionality
    .EnableAnonymousAuthentication()); // allow anonymous logins

// Configure the FTP server
services.Configure<FtpServerOptions>(opt => opt.ServerAddress = "127.0.0.1");

// Build the service provider
using (var serviceProvider = services.BuildServiceProvider())
{
    // Initialize the FTP server
    var ftpServerHost = serviceProvider.GetRequiredService<IFtpServerHost>();

    // Start the FTP server
    ftpServerHost.StartAsync(CancellationToken.None).Wait();
    
    Console.WriteLine("Press ENTER/RETURN to close the test application.");
    Console.ReadLine();
    
    // Stop the FTP server
    ftpServerHost.StopAsync(CancellationToken.None).Wait();
}

Tag summary

Content type

Image

Digest

Size

75.6 MB

Last updated

about 7 years ago

docker pull fubardev/sharp-ftp-server:version-3.0.2