diff --git a/EgwProxy.Ftp.Test/Program.cs b/EgwProxy.Ftp.Test/Program.cs
index b141dc80..1501e48b 100644
--- a/EgwProxy.Ftp.Test/Program.cs
+++ b/EgwProxy.Ftp.Test/Program.cs
@@ -341,7 +341,7 @@ namespace EgwProxy.Ftp.Test
ftpClient.createDir(remoteDir);
}
- var mirrorDone = ftpClient.sendDir(localDir, remoteDir);
+ var mirrorDone = ftpClient.sendDir(localDir, remoteDir, true);
esitoStep = mirrorDone ? $"Directory {localDir} mirrored L2R!" : $"Error: {remoteDir} NOT mirrored!";
}
@@ -362,7 +362,7 @@ namespace EgwProxy.Ftp.Test
var preTest = ftpClient.dirExists(remoteDir);
if (preTest)
{
- var mirrorDone = ftpClient.getDir(localDir, remoteDir);
+ var mirrorDone = ftpClient.getDir(localDir, remoteDir, true);
esitoStep = mirrorDone ? $"Directory {remoteDir} mirrored R2L!" : $"Error: {remoteDir} NOT mirrored!";
}
else
diff --git a/EgwProxy.Ftp/Manager.cs b/EgwProxy.Ftp/Manager.cs
index 6052c7df..9896e79c 100644
--- a/EgwProxy.Ftp/Manager.cs
+++ b/EgwProxy.Ftp/Manager.cs
@@ -7,7 +7,9 @@ using System.Net.Security;
namespace EgwProxy.Ftp
{
///
- /// Client per operazioni FTP, basato su FluentFTP: https://github.com/robinrodricks/FluentFTP/wiki/Quick-Start-Example
+ /// Client per operazioni FTP, basato su FluentFTP:
+ /// https://github.com/robinrodricks/FluentFTP
+ /// https://github.com/robinrodricks/FluentFTP/wiki/Quick-Start-Example
///
public class Manager
{
@@ -40,6 +42,7 @@ namespace EgwProxy.Ftp
{
client = new FtpClient(server);
}
+ client.Config.RetryAttempts = 3;
}
}
@@ -136,15 +139,23 @@ namespace EgwProxy.Ftp
///
/// Path directory da inviare (ad es:@"C:\website\videos\")
/// Nome remoto file per caricamento (ad es: @"/public_html/videos")
- public bool getDir(string localDir, string remoteDir)
+ /// Indica se sia richeisto udpate post mirroring
+ public bool getDir(string localDir, string remoteDir, bool forceUpdate = false)
{
bool answ = false;
- tryConnect();
try
{
+ tryConnect();
+ //var result = client.DownloadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror, FtpLocalExists.Overwrite, FtpVerify.Retry);
// upload della folder + files, cancellazione extra files = mirroring
- var result = client.DownloadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror, FtpLocalExists.Overwrite, FtpVerify.Delete);
- answ = (result != null && result.Count > 0);
+ List result;
+ result = client.DownloadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror);
+ if (forceUpdate)
+ {
+ result = client.DownloadDirectory(localDir, remoteDir, FtpFolderSyncMode.Update);
+ }
+ //answ = (result != null && result.Count > 0);
+ answ = result != null && result.Where(x => !x.IsSuccess).Count() == 0;
}
catch
{ }
@@ -199,13 +210,26 @@ namespace EgwProxy.Ftp
///
/// Path directory da inviare (ad es:@"C:\website\videos\")
/// Nome remoto file per caricamento (ad es: @"/public_html/videos")
- public bool sendDir(string localDir, string remoteDir)
+ /// Indica se sia richeisto udpate post mirroring
+ public bool sendDir(string localDir, string remoteDir, bool forceUpdate = false)
{
bool answ = false;
- tryConnect();
- // upload della folder + files, cancellazione extra files = mirroring
- var result = client.UploadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror, FtpRemoteExists.OverwriteInPlace, FtpVerify.Delete);
- answ = (result != null && result.Count > 0);
+ try
+ {
+ tryConnect();
+ //var result = client.UploadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror, FtpRemoteExists.OverwriteInPlace, FtpVerify.Retry);
+ // upload della folder + files, cancellazione extra files = mirroring
+ List result;
+ result = client.UploadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror);
+ if (forceUpdate)
+ {
+ result = client.UploadDirectory(localDir, remoteDir, FtpFolderSyncMode.Update);
+ }
+ //answ = (result != null && result.Count > 0);
+ answ = result!=null && result.Where(x => !x.IsSuccess).Count()==0;
+ }
+ catch
+ { }
// chiudo!
client.Disconnect();
return answ;