private List <FtpFileSystemItem> ListFiles() { try { var rootItem = new FtpFileSystemItem(rootDirectory); using (session = new Session()) { session.Open(sessionOptions); AddDirectory(rootItem, rootDirectory); } return(rootItem.ToFlatList()); #if false FtpWebRequest request = (FtpWebRequest)WebRequest.Create(remoteAddress); request.Method = WebRequestMethods.Ftp.ListDirectory; request.Credentials = new NetworkCredential(ftpUserName, ftpPassword); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); string listing = reader.ReadToEnd(); reader.Close(); response.Close(); return(listing.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList()); #endif } catch (Exception ex) { Debug.WriteLine($"{ex.GetType().Name} in AntiHacker.ListFiles: {ex.Message}"); return(new List <FtpFileSystemItem>()); } }
public FtpFileSystemItem AddChild(FtpFileSystemItem item) { if (Children is null) { throw new InvalidOperationException("Not ready for children"); } Children.Add(item); return(item); }
private void AddDirectory(FtpFileSystemItem parentItem, string path) { RemoteDirectoryInfo directory = session.ListDirectory(path); foreach (RemoteFileInfo item in directory.Files) { if (!item.IsParentDirectory && !item.IsThisDirectory) { var child = parentItem.AddChild(item); if (child.IsDirectory) { AddDirectory(child, child.FileInfo.FullName); } } } }