Portable FTP server
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 .
Support the development
Prerequisites
Compilation
- Visual Studio 2022 / C# 8.0
Using
- Visual Studio 2022
- .NET Standard 2.0 (everything except sample application, PAM authentication)
- .NET Core 3.1 (PAM authentication)
NuGet packages
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(); }