public static List <string> GetFolderList() { FtpHandler.ChangeFtpUri(RemoteRootPath); var list = FtpHandler.GetDirectoryList(); return(list); }
public bool ListRemote(FtpHandler handler) { try { lsRequest = (FtpWebRequest)WebRequest.Create(handler.url); lsRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails; lsRequest.Credentials = new NetworkCredential(handler.userName, handler.securePwd); lsResponse = (FtpWebResponse)lsRequest.GetResponse(); Stream responseStream = lsResponse.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); Console.WriteLine(reader.ReadToEnd()); if (lsResponse.StatusCode == FtpStatusCode.NotLoggedIn) { return(false); } reader.Close(); lsResponse.Close(); return(true); } catch (Exception fail) { Console.WriteLine(fail.Message.ToString()); return(false); } }
//Resources https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-read-text-from-a-file // https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-upload-files-with-ftp // example file: @"\\IPAddress or remote machine Name\ShareFolder\FileName.txt" // Right now it looks in the \bin\Debug\netcoreapp3.1\ folder for your file to upload public bool UploadToRemote(FtpHandler handler, string file) { try { uploadRequest = (FtpWebRequest)WebRequest.Create(handler.url + '/' + file); uploadRequest.Method = WebRequestMethods.Ftp.UploadFile; uploadRequest.Credentials = new NetworkCredential(handler.userName, handler.securePwd); byte[] fileContents; using (StreamReader str = new StreamReader(file)) { fileContents = Encoding.UTF8.GetBytes(str.ReadToEnd()); } uploadRequest.ContentLength = fileContents.Length; using (Stream requestStream = uploadRequest.GetRequestStream()) { requestStream.Write(fileContents, 0, fileContents.Length); } using (FtpWebResponse uploadResponse = (FtpWebResponse)uploadRequest.GetResponse()) { Console.WriteLine($"Upload File \"{file}\" Complete, status {uploadResponse.StatusDescription}"); } return(true); } catch (Exception fail) { Console.WriteLine($"Loading {file} Failed"); Console.WriteLine(fail.Message.ToString()); return(false); } }
bool IFtpModule.HandleRequest(FtpRequest request, ClientData client, FtpHandler handler, Server server) { if (!client.Resources.TryGetResource <FtpData>(out var ftpData)) { client.Resources.SetResource(new FtpData()); } if (request.Command == FtpRequestCommands.PASV) { handler.QueueFtpResponse(server, client, this.EnablePassiveMode(request, ftpData, client)); return(true); } else if (request.Command == FtpRequestCommands.PORT) { handler.QueueFtpResponse(server, client, this.EnableActiveMode(request, ftpData)); return(true); } else if (request.Command == FtpRequestCommands.TYPE) { handler.QueueFtpResponse(server, client, this.HandleTypeArguments(request, ftpData)); return(true); } return(false); }
bool IFtpModule.HandleRequest(FtpRequest request, ClientData client, FtpHandler handler, Server server) { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.CommandNotImplemented, Message = "Command not implemented" }); return(true); }
//Resources https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-download-files-with-ftp // https://stackoverflow.com/questions/12519290/downloading-files-using-ftpwebrequest // example file: @"\\IPAddress or remote machine Name\ShareFolder\FileName.txt" // Right now it puts the file in the C:\Temp folder. public bool DownloadFromRemote(FtpHandler handler, string file) { try { downloadRequest = (FtpWebRequest)WebRequest.Create(handler.url + '/' + file); downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile; downloadRequest.Credentials = new NetworkCredential(handler.userName, handler.securePwd); using (Stream ftpStream = downloadRequest.GetResponse().GetResponseStream()) using (Stream fileStream = File.Create(@"C:\Temp\" + file)) { byte[] buffer = new byte[10240]; int read; while ((read = ftpStream.Read(buffer, 0, buffer.Length)) > 0) { fileStream.Write(buffer, 0, read); Console.WriteLine("Downloaded {0} bytes", fileStream.Position); } } return(true); } catch (Exception fail) { Console.WriteLine("Downloading file Failed"); Console.WriteLine(fail.Message.ToString()); return(false); } }
public static async Task <bool> ExportDb(string exportPath, Action <double, uint> action, bool toFtp) { StringBuilder builder = new StringBuilder(); try { //try to upload it to ftp UserDB dcon = new UserDB(); var db = dcon.DbConn; var filepath = exportPath ?? throw new ArgumentNullException("ExportPath"); //string.IsNullOrEmpty(importPath)? Path.Combine(path, "DBBack.txt"):importPath; //var filepath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "DBBack.txt"); if (!Directory.Exists(Path.GetDirectoryName(filepath))) { Directory.CreateDirectory(Path.GetDirectoryName(filepath)); } if (File.Exists(filepath)) { File.Delete(filepath); } var vs = db.Table <Verse>(); double val = 0d; uint max = (uint)vs.Count(); foreach (var v in vs) { string str = $"insert into verse(Id, Testament, BookPosition, BookName, ChapterNumber, VerseNumber, Text, LastRecited, IsMemorized) VALUES " + $"('{v.Id}', '{v.Testament}', '{v.BookPosition}', '{v.BookName}', '{v.ChapterNumber}', '{v.VerseNumber}', '{v.Text.Replace("\r", "").Replace("'", "''")}'," + $"'{v.LastRecited.Ticks}', '{(v.IsMemorized ? "1" : "0")}');\n"; builder.Append(str); action?.Invoke(++val, max);//progress bar invoke on main } FileStream fs = new FileStream(filepath, FileMode.CreateNew); fs.Flush(); fs.Close(); UserDialogs.Instance.Alert($"DB exported {vs.Count()} records."); return(true); } catch (Exception ex) { UserDialogs.Instance.Alert($"Error writing text file.{ex}"); } try { if (toFtp) { await FtpHandler.SendDbToFTP("db.Txt", file : ASCIIEncoding.ASCII.GetBytes(builder.ToString())); await FtpHandler.SendDbToFTP(); } } catch (Exception ex) { UserDialogs.Instance.Alert($"Error sending to ftp{ex}"); } return(false); }
private static void InitFtp() { //初始化FTP参数 string ftpServer = ConfigurationManager.AppSettings["FTPServer"]; string ftpUserId = ConfigurationManager.AppSettings["FtpUserID"]; string ftpPassword = ConfigurationManager.AppSettings["FtpPassword"]; string passportPics = ConfigurationManager.AppSettings["PassportPicPath"]; FtpHandler.SetParams(ftpServer, passportPics, ftpUserId, ftpPassword); }
public void TestSavingInfo() { var mainRequest = new FtpHandler(); mainRequest.url = "ftp://13.59.40.218/"; mainRequest.userName = "******"; mainRequest.securePwd = new NetworkCredential("", "Kamono123").SecurePassword; mainRequest.SaveInfo(); Assert.IsTrue(File.ReadAllText("SavedConnections.txt").Contains("ftp_user")); }
bool IFtpModule.HandleRequest(FtpRequest request, ClientData client, FtpHandler handler, Server server) { if (!client.Resources.TryGetResource <AuthenticationData>(out var authData)) { authData = new AuthenticationData(); client.Resources.SetResource(authData); } if (request.Command == FtpRequestCommands.USER) { authData.Username = request.Arguments[0]; handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.NeedPassword, Message = "Username OK. Need password!" }); return(true); } else if (request.Command == FtpRequestCommands.PASS) { if (!string.IsNullOrWhiteSpace(authData.Username)) { authData.Password = request.Arguments[0]; if (this.ValidateAuthentication.Invoke(authData)) { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.UserLoggedIn, Message = "User logged in!" }); authData.Authenticated = true; } else { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.InvalidUsernameOrPassword, Message = "Invalid username or password!" }); } } else { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.NotLoggedIn, Message = "Username not present. Please provide username!" }); } return(true); } else if (!authData.Authenticated) { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.NotLoggedIn, Message = "Please log in before issuing other commands!" }); return(true); } return(false); }
private void Application_Exit(object sender, ExitEventArgs e) { if (Settings.Instance.LocalUseOnly || FtpHandler.TryUploadFileByName(Constants.LogFileName, true)) { return; } string text = string.Format(Constants.ErrorRemoteFileUpload, Constants.LogFileName); new Logging().WriteLine(text); MessageBox.Show(text); Logging.Instance.Close(); }
bool IFtpModule.HandleRequest(FtpRequest request, ClientData client, FtpHandler handler, Server server) { if (request.Command == FtpRequestCommands.QUIT) { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.ServiceClosingControlConnection, Message = "Service closing control connection" }); return(true); } return(false); }
bool IFtpModule.HandleRequest(FtpRequest request, ClientData client, FtpHandler handler, Server server) { if (request.Command == FtpRequestCommands.SYST) { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.NAMESystemType, Message = "MTSC Webserver " + System.Reflection.Assembly.GetEntryAssembly().GetName().Version }); return(true); } return(false); }
public void ListFilesOnRemoteServer_RemoteLs_FailureResult() { var mainRequest = new FtpHandler(); mainRequest.url = "ftp://13.59.40.218/"; mainRequest.userName = "******"; mainRequest.securePwd = new NetworkCredential("", "Kamono12345").SecurePassword; var remoteLs = new RemoteLS(); //Act var response = remoteLs.ListRemote(mainRequest); //Assert Assert.IsFalse(response); }
public void UploadFileToRemoteServer_Upload_FailureResult() { var mainRequest = new FtpHandler { url = "ftp://13.59.40.218/", userName = "******", securePwd = new NetworkCredential("", "Kamono12345").SecurePassword }; var upload = new Upload(); //Act var response = upload.UploadToRemote(mainRequest, "SavedConnections.txt"); //Assert Assert.IsFalse(response); }
public void CreateRemoteDirectory_MkDirRemote_FailureResult() { //Arrange var mainRequest = new FtpHandler(); mainRequest.url = "ftp://13.59.40.218/"; mainRequest.userName = "******"; mainRequest.securePwd = new NetworkCredential("", "Kamono12345").SecurePassword; var mkDir = new RemoteMkDir(); //Act var result = mkDir.MkDirRemote(mainRequest, "AutomantedTestDir"); //Assert Assert.IsFalse(result); }
public void DeleteFileFromRemoteServer_Delete_FailureResult() { var mainRequest = new FtpHandler(); mainRequest.url = "ftp://13.59.40.218/"; mainRequest.userName = "******"; mainRequest.securePwd = new NetworkCredential("", "Kamono12345").SecurePassword; var delete = new Delete(); //Act var response = delete.DeleteRemoteFile(mainRequest, "SavedConnections.txt"); //Assert Assert.IsFalse(response); }
public void DownloadFileFromRemoteServer_Download_FailureResult() { var mainRequest = new FtpHandler { url = "ftp://13.59.40.218/", userName = "******", securePwd = new NetworkCredential("", "Kamono12345").SecurePassword }; var download = new Download(); //Act var response = download.DownloadFromRemote(mainRequest, "Test.txt"); //Assert Assert.IsFalse(response); }
public void UploadMultipleFilesToRemoteServer_Upload_SuccesfulResult() { //Arrange var mainRequest = new FtpHandler { url = "ftp://13.59.40.218/", userName = "******", securePwd = new NetworkCredential("", "Kamono123").SecurePassword }; var upload = new Upload(); //Act var response = upload.UploadMultipleToRemote(mainRequest, "SavedConnections.txt;410AgileCsharp.runtimeconfig.json"); //Assert Assert.IsTrue(response); }
public bool UploadMultipleToRemote(FtpHandler handler, string file) { try { string[] files = file.Split(";"); foreach (var f in files) { UploadToRemote(handler, f); } return(true); } catch (Exception fail) { Console.WriteLine($"Loading {file} Failed"); Console.WriteLine(fail.Message.ToString()); return(false); } }
public async Task PublishFilesShouldSyncFiles() { var logger = Context.Logger; var(source, deployTargetDirectory, temp) = TestDataHelper.CopyTestData(logger); var ftpSettings = new FtpSettings( new FtpPath("/", FileSystemType.Directory), publicRootPath: new FtpPath("/", FileSystemType.Directory), isSecure: false); FtpHandler handler = await FtpHandler.Create(new Uri("ftp://127.0.0.1:30021"), ftpSettings, new NetworkCredential("testuser", "testpw"), logger); var sourceDirectory = new DirectoryInfo(source); var ruleConfiguration = new RuleConfiguration { AppOfflineEnabled = true }; using var initialCancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(50)); DeploySummary initialSummary = await handler.PublishAsync(ruleConfiguration, deployTargetDirectory, initialCancellationTokenSource.Token); logger.Information("Initial: {Initial}", initialSummary.ToDisplayValue()); using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(50)); DeploySummary summary = await handler.PublishAsync(ruleConfiguration, sourceDirectory, cancellationTokenSource.Token); logger.Information("Result: {Result}", summary.ToDisplayValue()); var fileSystemItems = await handler.ListDirectoryAsync(FtpPath.Root, cancellationTokenSource.Token); foreach (FtpPath fileSystemItem in fileSystemItems) { logger.Information("{Item}", fileSystemItem.Path); } temp.Dispose(); }
bool IFtpModule.HandleRequest(FtpRequest request, ClientData client, FtpHandler handler, Server server) { if (!client.Resources.TryGetResource <FtpData>(out var ftpData)) { client.Resources.SetResource(new FtpData()); } if (request.Command == FtpRequestCommands.STOR) { if (!ftpData.TransferDetails.ConnectionOpen) { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.FileStatusOkay, Message = "Opening data connection" }); ftpData.OpenDataConnection(); } handler.QueueFtpResponse(server, client, this.StoreFile(request, ftpData)); ftpData.CloseDataConnection(); return(true); } else if (request.Command == FtpRequestCommands.DELE) { handler.QueueFtpResponse(server, client, this.RemoveFile(request, ftpData)); return(true); } else if (request.Command == FtpRequestCommands.RETR) { if (!ftpData.TransferDetails.ConnectionOpen) { handler.QueueFtpResponse(server, client, new FtpResponse { StatusCode = FtpResponseCodes.FileStatusOkay, Message = "Opening data connection" }); ftpData.OpenDataConnection(); } handler.QueueFtpResponse(server, client, this.RetrieveFile(request, ftpData)); ftpData.CloseDataConnection(); return(true); } return(false); }
public bool MkDirRemote(FtpHandler handler, string name) { try { if (!handler.url.EndsWith('/')) { handler.url.Append('/'); } ftpWebRequest = (FtpWebRequest)WebRequest.Create(handler.url + name); ftpWebRequest.Method = WebRequestMethods.Ftp.MakeDirectory; ftpWebRequest.Credentials = new NetworkCredential(handler.userName, handler.securePwd); ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse(); return(true); } catch (Exception fail) { Console.WriteLine(fail.Message.ToString()); return(false); } }
public void DeleteFileFromRemoteServer_Delete_SuccesfulResult() { //Arrange var mainRequest = new FtpHandler(); mainRequest.url = "ftp://13.59.40.218/"; mainRequest.userName = "******"; mainRequest.securePwd = new NetworkCredential("", "Kamono123").SecurePassword; var upload = new Upload(); //upload a file to delete upload.UploadToRemote(mainRequest, "SavedConnections.txt"); var delete = new Delete(); //Act var response = delete.DeleteRemoteFile(mainRequest, "SavedConnections.txt"); //Assert Assert.IsTrue(response); }
private bool DoUpdate(string[] list) { //切换到根目录下面 FtpHandler.ChangeFtpUri(XmlHandler.GetPropramPath()); int res = 0; bool updateSuccess = true; for (int i = 0; i < list.Length; i++) { ListViewItem listViewItem = new ListViewItem(); listViewItem = new ListViewItem(list[i]); ListViewItem.ListViewSubItem subItem; Font font = listViewItem.Font; if (FtpHandler.Download(GlobalUtils.AppPath, list[i])) { subItem = new ListViewItem.ListViewSubItem(listViewItem, "更新成功", Color.DarkGreen, Color.White, font); ++res; } else { subItem = new ListViewItem.ListViewSubItem(listViewItem, "更新失败", Color.DarkRed, Color.White, font); updateSuccess = false; } listViewItem.SubItems.Add(subItem); this.Invoke(new Action(() => { lvUpdateList.Items.Add(listViewItem); })); } if (!updateSuccess) { this.btnStart.TextColor = Color.DarkRed; } else { this.btnStart.TextColor = Color.DarkGreen; } return(res == list.Length); }
public bool DeleteRemoteFile(FtpHandler handler, string file) { try { deleteRequest = (FtpWebRequest)WebRequest.Create(handler.url + '/' + file); deleteRequest.Method = WebRequestMethods.Ftp.DeleteFile; deleteRequest.Credentials = new NetworkCredential(handler.userName, handler.securePwd); using (FtpWebResponse response = (FtpWebResponse)deleteRequest.GetResponse()) { Console.WriteLine(response.StatusDescription); } Console.WriteLine($"Deleting {file} Complete"); return(true); } catch (Exception fail) { Console.WriteLine("Deleting file Failed"); Console.WriteLine(fail.Message.ToString()); return(false); } }
public bool RenameRemoteFile(FtpHandler handler, string file, string newName) { try { renameRequest = (FtpWebRequest)WebRequest.Create(handler.url + '/' + file); renameRequest.Method = WebRequestMethods.Ftp.UploadFile; renameRequest.Credentials = new NetworkCredential(handler.userName, handler.securePwd); renameRequest.Method = WebRequestMethods.Ftp.Rename; renameRequest.RenameTo = newName; renameResponse = (FtpWebResponse)renameRequest.GetResponse(); renameResponse.Close(); Console.WriteLine($"{file} Renamed to {newName}"); return(true); } catch (Exception fail) { Console.WriteLine("Renaming file Failed"); Console.WriteLine(fail.Message.ToString()); return(false); } }
public void It_should_not_send_document() { // Given var plantUmlCode = new StringBuilder(); IMessageBus bus = new InMemoryMessageBus(); bus = new PlantUmlDiagramBuilder(bus, NewLogger(plantUmlCode)); var documentHandler = new DocumentHandler(bus); var ftpHandler = new FtpHandler(bus); bus .Subscribe <CreateDocument>(documentHandler) .Subscribe <DocumentDelivered>(documentHandler) .Subscribe <DocumentFailed>(documentHandler) .Subscribe <SendDocumentToFtp>(ftpHandler); // When bus.Publish(new CreateDocument { Content = "Send to ..." }); // Then Console.Write(RenderAsciiDiagram(plantUmlCode)); }
public static bool CheckAndDownloadIfNotExist(string passportNo, PicType type) { FtpHandler.ChangeFtpUri(ConfigurationManager.AppSettings["PassportPicPath"]); string fileName = GetFileName(passportNo, type); string picName = GlobalUtils.PassportPicPath + "\\" + fileName; if (File.Exists(picName)) //先检查本地是否存在 { //picPassportNo.Image = Image.FromFile(picName); return(true); } if (FtpHandler.FileExist(fileName)) { if (FtpHandler.Download(GlobalUtils.PassportPicPath, fileName)) { //picPassportNo.Image = Image.FromFile(picName); return(true); } } //picPassportNo.Image = Resources.PassportPictureNotFound; return(false); }
public void TestLogOff() { var mainRequest = new FtpHandler(); Assert.IsTrue(mainRequest.LogOff()); }