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 { ///