class FtpDevRealsenseCtl
{
static string RunningPath = AppDomain.CurrentDomain.BaseDirectory;
string image_file_path = RunningPath + @"\..\..\Images\"; //正常图片所在路径
private frmExposureProcessing _mainForm = null;
private Thread ftpthread = null;
public FtpDevRealsenseCtl(frmExposureProcessing main_form)
{
_mainForm = main_form;
}
public void startFtpServer()
{
ftpthread = new Thread(new ThreadStart(ftpinit));
ftpthread.Start();
}
public void stopFtpServer()
{
ftpthread.Abort();
}
public class TestMembershipProvider : IMembershipProvider
{
public Task<MemberValidationResult> ValidateUserAsync(string username, string password)
{
if (username == "admin" && password == "admin")
{
var identity = new ClaimsIdentity();
identity.AddClaim(new Claim(ClaimTypes.Name, username));
identity.AddClaim(new Claim(ClaimTypes.Role, "admin"));
return Task.FromResult(new MemberValidationResult(MemberValidationStatus.AuthenticatedUser, new ClaimsPrincipal(identity)));
}
return Task.FromResult(new MemberValidationResult(MemberValidationStatus.InvalidLogin));
}
}
public void ftpinit()
{
// 设置依赖项注入
// var services = new ServiceCollection();
//var mockMembershipProvider = new MockMembershipProvider();
var services = new ServiceCollection();
// 使用%TEMP%/TestFtpServer作为根文件夹
services.Configure<FubarDev.FtpServer.FileSystem.DotNet.DotNetFileSystemOptions>(opt => opt
.RootPath = image_file_path);
// IServiceProvider serviceProvider = services.BuildServiceProvider();
// 添加FTP服务器服务
// DotNetFileSystemProvider = 使用.NET文件系统功能
// AnonymousMembershipProvider = 仅允许匿名登录
services.AddFtpServer(builder =>
{
builder.UseDotNetFileSystem(); // 使用.NET文件系统功能
builder.EnableAnonymousAuthentication();// 允许匿名登录
builder.Services.AddSingleton<IMembershipProvider, TestMembershipProvider>();//用户登录
});
/* services.AddFtpServer(builder => builder
.UseDotNetFileSystem() // Use the .NET file system functionality
.EnableAnonymousAuthentication()
); // allow anonymous logins*/
// 配置FTP服务器
string FtpServerIp = Convert.ToString(ConfigurationManager.AppSettings["FtpServerIp"]);
services.Configure<FtpServerOptions>(opt => opt.ServerAddress = FtpServerIp);
// 构建服务提供商
using (var serviceProvider = services.BuildServiceProvider())
{
// 初始化FTP服务器
var ftpServerHost = serviceProvider.GetRequiredService<IFtpServerHost>();
// 启动FTP服务器
ftpServerHost.StartAsync(CancellationToken.None).Wait();
Console.WriteLine("Press ENTER/RETURN to close the test application.");
Console.ReadLine();
// 停止FTP服务器
// ftpServerHost.StopAsync(CancellationToken.None).Wait();
}
return ;
}
}