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);
     }
 }
Esempio n. 3
0
        //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);
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 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);
 }
Esempio n. 6
0
        //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);
            }
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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"));
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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();
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 20
0
 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();
        }
Esempio n. 22
0
        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);
        }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
        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);
            }
        }
Esempio n. 28
0
        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());
        }