protected override ActionResult DoActionProcessing(Job job) { var ftpAccount = job.Accounts.GetFtpAccount(job.Profile); Logger.Debug("Creating ftp connection.\r\nServer: " + ftpAccount.Server + "\r\nUsername: "******"Exception while login to ftp server: "); ftpClient.Disconnect(); return(new ActionResult(ErrorCode.Ftp_LoginError)); } var fullDirectory = job.TokenReplacer.ReplaceTokens(job.Profile.Ftp.Directory).Trim(); if (!ValidName.IsValidFtpPath(fullDirectory)) { Logger.Warn("Directory contains invalid characters \"" + fullDirectory + "\""); fullDirectory = ValidName.MakeValidFtpPath(fullDirectory); } Logger.Debug("Directory on ftp server: " + fullDirectory); try { if (!ftpClient.DirectoryExists(fullDirectory)) { ftpClient.CreateDirectory(fullDirectory); } } catch (Exception ex) { Logger.Error(ex, "Exception while setting directory on ftp server: "); ftpClient.Disconnect(); return(new ActionResult(ErrorCode.Ftp_DirectoryError)); } foreach (var file in job.OutputFiles) { var targetFile = PathSafe.GetFileName(file); targetFile = ValidName.MakeValidFtpPath(targetFile); if (job.Profile.Ftp.EnsureUniqueFilenames) { Logger.Debug("Make unique filename for " + targetFile); try { var uf = new UniqueFilenameForFtp(targetFile, ftpClient, _pathUtil); targetFile = uf.CreateUniqueFileName(); Logger.Debug("-> The unique filename is \"" + targetFile + "\""); } catch (Exception ex) { Logger.Error(ex, "Exception while generating unique filename: "); ftpClient.Disconnect(); return(new ActionResult(ErrorCode.Ftp_DirectoryReadError)); } } try { ftpClient.UploadFile(file, fullDirectory + "/" + targetFile); } catch (Exception ex) { Logger.Error(ex, "Exception while uploading the file \"" + file); ftpClient.Disconnect(); return(new ActionResult(ErrorCode.Ftp_UploadError)); } } ftpClient.Disconnect(); return(new ActionResult()); }
protected override ActionResult DoActionProcessing(Job job) { var ftpAccount = job.Accounts.GetFtpAccount(job.Profile); Logger.Debug("Creating ftp connection.\r\nServer: " + ftpAccount.Server + "\r\nUsername: "******"Can not connect to the internet for login to ftp. Win32Exception Message:\r\n" + ex.Message); ftpConnection.Close(); return(new ActionResult(ErrorCode.Ftp_ConnectionError)); } if (ex.NativeErrorCode.Equals(12014)) { Logger.Error("Can not login to ftp because the password is incorrect. Win32Exception Message:\r\n" + ex.Message); ftpConnection.Close(); return(new ActionResult(ErrorCode.PasswordAction_Login_Error)); } Logger.Error("Win32Exception while login to ftp server:\r\n" + ex.Message); ftpConnection.Close(); return(new ActionResult(ErrorCode.Ftp_LoginError)); } catch (Exception ex) { Logger.Error("Exception while login to ftp server:\r\n" + ex.Message); ftpConnection.Close(); return(new ActionResult(ErrorCode.Ftp_LoginError)); } var fullDirectory = job.TokenReplacer.ReplaceTokens(job.Profile.Ftp.Directory).Trim(); if (!ValidName.IsValidFtpPath(fullDirectory)) { Logger.Warn("Directory contains invalid characters \"" + fullDirectory + "\""); fullDirectory = ValidName.MakeValidFtpPath(fullDirectory); } Logger.Debug("Directory on ftp server: " + fullDirectory); var directories = fullDirectory.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries); try { foreach (var directory in directories) { if (!ftpConnection.DirectoryExists(directory)) { Logger.Debug("Create folder: " + directory); ftpConnection.CreateDirectory(directory); } Logger.Debug("Move to: " + directory); ftpConnection.SetCurrentDirectory(directory); } } catch (Exception ex) { Logger.Error("Exception while setting directory on ftp server\r\n:" + ex.Message); ftpConnection.Close(); return(new ActionResult(ErrorCode.Ftp_DirectoryError)); } foreach (var file in job.OutputFiles) { var targetFile = Path.GetFileName(file); targetFile = ValidName.MakeValidFtpPath(targetFile); if (job.Profile.Ftp.EnsureUniqueFilenames) { Logger.Debug("Make unique filename for " + targetFile); try { var uf = new UniqueFilenameForFtp(targetFile, ftpConnection, _pathUtil); targetFile = uf.CreateUniqueFileName(); Logger.Debug("-> The unique filename is \"" + targetFile + "\""); } catch (Exception ex) { Logger.Error("Exception while generating unique filename\r\n:" + ex.Message); ftpConnection.Close(); return(new ActionResult(ErrorCode.Ftp_DirectoryReadError)); } } try { ftpConnection.PutFile(file, targetFile); } catch (Exception ex) { Logger.Error("Exception while uploading the file \"" + file + "\": \r\n" + ex.Message); ftpConnection.Close(); return(new ActionResult(ErrorCode.Ftp_UploadError)); } } ftpConnection.Close(); return(new ActionResult()); }