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.
The library is released under the MIT license.
- Visual Studio 2022 / C# 8.0
- Visual Studio 2022
- .NET Standard 2.0 (everything except sample application, PAM authentication)
- .NET Core 3.1 (PAM authentication)
| Package name | Description | Badge |
|---|---|---|
FubarDev.FtpServer |
Core library | FubarDev.FtpServer |
FubarDev.FtpServer.Abstractions |
Basic types | FubarDev.FtpServer.Abstractions |
FubarDev.FtpServer.FileSystem.DotNet |
System.IO-based file system |
FubarDev.FtpServer.FileSystem.DotNet |
FubarDev.FtpServer.FileSystem.GoogleDrive |
Google Drive as file system | FubarDev.FtpServer.FileSystem.GoogleDrive |
FubarDev.FtpServer.FileSystem.InMemory |
In-memory file system | FubarDev.FtpServer.FileSystem.InMemory |
FubarDev.FtpServer.FileSystem.Unix |
Unix file system | FubarDev.FtpServer.FileSystem.Unix |
FubarDev.FtpServer.MembershipProvider.Pam |
PAM membership provider | FubarDev.FtpServer.MembershipProvider.Pam |
dotnet new console dotnet add package FubarDev.FtpServer.FileSystem.DotNet dotnet add package FubarDev.FtpServer dotnet add package Microsoft.Extensions.DependencyInjection
// 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(); }