diff --git a/src/MigrationBackup/9f757c16/Simplic.Ftp.Service/packages.config b/src/MigrationBackup/9f757c16/Simplic.Ftp.Service/packages.config
index 26ccde3..c8da2f5 100644
--- a/src/MigrationBackup/9f757c16/Simplic.Ftp.Service/packages.config
+++ b/src/MigrationBackup/9f757c16/Simplic.Ftp.Service/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/src/Simplic.Ftp.Service/FluentFtpService.cs b/src/Simplic.Ftp.Service/FluentFtpService.cs
index 868c374..7ada303 100644
--- a/src/Simplic.Ftp.Service/FluentFtpService.cs
+++ b/src/Simplic.Ftp.Service/FluentFtpService.cs
@@ -12,6 +12,32 @@ namespace Simplic.Ftp.Service
///
public class FluentFtpService : IFtpService
{
+ private void Connect(FtpClient client)
+ {
+ client.EncryptionMode = FtpEncryptionMode.Auto;
+ client.ValidateAnyCertificate = true;
+
+ var profiles = client.AutoDetect();
+
+ if (profiles.Any())
+ {
+ Console.WriteLine("Multiple FTP profiles available");
+
+ foreach (var profile in profiles.OrderByDescending(x => (int)x.Protocols))
+ Console.WriteLine($" Data connection: {profile.DataConnection} / protocol {profile.Protocols} Encoding: {profile.Encoding}");
+
+ if (profiles.Any(x => x.Protocols != System.Security.Authentication.SslProtocols.Default))
+ {
+ client.EncryptionMode = FtpEncryptionMode.Explicit;
+ client.Connect(profiles.Where(x => x.Protocols != System.Security.Authentication.SslProtocols.Default).OrderByDescending(x => (int)x.Protocols).FirstOrDefault());
+ }
+ else
+ client.Connect(profiles.OrderByDescending(x => (int)x.Protocols).FirstOrDefault());
+ }
+ else
+ client.Connect();
+ }
+
///
/// Deletes a file.
///
@@ -28,7 +54,7 @@ public bool DeleteFile(FtpServerConfiguration serverConfiguration, string filena
using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password))
{
- client.Connect();
+ Connect(client);
client.DeleteFile(filename);
}
@@ -51,7 +77,7 @@ public byte[] DownloadFile(FtpServerConfiguration serverConfiguration, string fi
using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password))
{
- client.Connect();
+ Connect(client);
using (var res = new MemoryStream())
{
@@ -81,9 +107,11 @@ public IList GetDirectoryContent(FtpServerConfiguration serverConfigurat
using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password))
{
- client.Connect();
+ Connect(client);
+
+ if (!string.IsNullOrWhiteSpace(directory))
+ client.SetWorkingDirectory(directory);
- client.SetWorkingDirectory(directory ?? "");
return client.GetListing().Select(x => x.FullName).ToList();
}
}
@@ -108,7 +136,7 @@ public bool RenameFile(FtpServerConfiguration serverConfiguration, string filena
using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password))
{
- client.Connect();
+ Connect(client);
client.Rename(filename, newFilename);
}
@@ -136,7 +164,8 @@ public bool UploadFile(FtpServerConfiguration serverConfiguration, byte[] file,
using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password))
{
- client.Connect();
+ Connect(client);
+
if (!client.DirectoryExists(path))
client.CreateDirectory(path);
diff --git a/src/Simplic.PugIn.Ftp/Init.cs b/src/Simplic.PugIn.Ftp/Init.cs
index 81a7cd0..b13add4 100644
--- a/src/Simplic.PugIn.Ftp/Init.cs
+++ b/src/Simplic.PugIn.Ftp/Init.cs
@@ -44,7 +44,7 @@ public void Initilize()
///
/// Root PlugIn class
///
- [PlugInDesc("Simplic Ftp", "1.1.321.729", "D02206F4-26CD-4026-8B4A-81BFF978A0C2")]
+ [PlugInDesc("Simplic Ftp", "1.1.422.621", "D02206F4-26CD-4026-8B4A-81BFF978A0C2")]
public class Init
{
///