Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- proof for kels
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.IO;
- using System.Net;
- namespace SimpleFTP
- {
- public partial class MainWindow : Form
- {
- string workingDirectoryLocal;
- public MainWindow()
- {
- InitializeComponent();
- // Add disks to combobox
- string[] allDisks = Directory.GetLogicalDrives();
- foreach (string disks in allDisks)
- {
- comboBox1.Items.Add(disks);
- }
- }
- #region miscellaneous
- List<ListViewItem> itemsUL = new List<ListViewItem>();
- List<ListViewItem> itemsDL = new List<ListViewItem>();
- #endregion
- #region populate drives
- private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
- {
- // If the combobox selection isn't null, get directories
- if (comboBox1.SelectedItem != null)
- {
- getDirectoryFrmCombo();
- }
- }
- public void getDirectoryFrmCombo()
- {
- try
- {
- // Add the selected disks local directorys to the local treeview
- localTreeView.Nodes.Clear();
- localTreeView.ImageIndex = 0;
- string[] dirs = Directory.GetDirectories(comboBox1.SelectedItem.ToString());
- foreach (string dir in dirs)
- {
- localTreeView.Nodes.Add(dir);
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- #endregion
- #region local
- private void localRefresh()
- {
- try
- {
- localListView.Items.Clear();
- string[] files = Directory.GetFiles(workingDirectoryLocal);
- localListView.Items.Add(workingDirectoryLocal, 0);
- foreach (string file in files)
- {
- ListViewItem item = new ListViewItem(file);
- FileInfo fileInfo = new FileInfo(file);
- localListView.Items.Add(item);
- item.ImageIndex = 1;
- item.SubItems.Add(string.Format("{0}", fileInfo.Name));
- item.SubItems.Add(string.Format("{0} KB", fileInfo.Length / 1024));
- item.SubItems.Add(string.Format("{0}", fileInfo.LastAccessTime));
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- private void localAddQueue()
- {
- try
- {
- List<string> fileForQueue = new List<string>();
- // Add each selected item to filesforqueue array list
- foreach (ListViewItem file in localListView.SelectedItems)
- {
- fileForQueue.Add(file.Text);
- }
- foreach (ListViewItem file in queueListView.Items)
- {
- fileForQueue.Remove(file.Text);
- }
- foreach (string file in fileForQueue)
- {
- //For each file in files for queue add the items to the queue list view
- ListViewItem item = new ListViewItem(file);
- FileInfo info = new FileInfo(file);
- queueListView.Items.Add(item);
- item.SubItems.Add(string.Format("{0}", info.Name));
- item.SubItems.Add(string.Format("{0} KB", info.Length / 1024));
- item.SubItems.Add(string.Format("{0}", info.LastAccessTime));
- string ul = "UL"; //Add the ul tag
- item.SubItems.Add(ul);
- }
- }
- catch (Exception ex)
- {
- }
- }
- private void uploadMethod(List<ListViewItem> uploadItem)
- {
- WorkerClass wc = new WorkerClass();
- if (serverTreeView.SelectedNode != null && serverTreeView.SelectedNode.Text != "/root")
- {
- wc.ftpUpload(uploadItem, hostTxtBx.Text, usernameTxtBx.Text, passTxtBx.Text, serverTreeView.SelectedNode.Text);
- serverRefresh(hostTxtBx.Text, serverTreeView.SelectedNode.Text);
- }
- else
- {
- wc.ftpUpload(uploadItem, hostTxtBx.Text, usernameTxtBx.Text, passTxtBx.Text, null);
- connect_NoDirectory();
- }
- }
- private void localTreeView_AfterSelect(object sender, TreeViewEventArgs e)
- {
- // Add selected treeview node to working directory and directory string
- workingDirectoryLocal = localTreeView.SelectedNode.Text;
- string directory = localTreeView.SelectedNode.Text;
- browseTxtBx.Text = localTreeView.SelectedNode.Text;// Show drive in browse text box
- try
- {
- localListView.Items.Clear();// clear listview
- string[] files = Directory.GetFiles(directory);//Get files in directory and store in string array
- localListView.Items.Add(directory, 0);//Add directories to list view
- foreach (string file in files)
- {
- // Create store file info in listviewitem and fileinfo objects
- ListViewItem item = new ListViewItem(file);
- FileInfo fileInfo = new FileInfo(file);
- localListView.Items.Add(item); //Add file directory info to locallistview
- item.ImageIndex = 1;//Add file image index to item objects
- //Populate columns of listview control
- item.SubItems.Add(string.Format("{0}", fileInfo.Name));
- item.SubItems.Add(string.Format("{0} KB", fileInfo.Length / 1024));
- item.SubItems.Add(string.Format("{0}", fileInfo.LastAccessTime));
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- private void localTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
- {
- if (e.Button != MouseButtons.Right)
- {
- string selectedNode = localTreeView.SelectedNode.Text;
- try
- {
- string[] dirs = Directory.GetDirectories(selectedNode); //Get directories from selected node
- localTreeView.SelectedNode.Nodes.Clear();
- foreach (string dir in dirs)
- {
- // For each directory in directory array add directory to nodes
- localTreeView.SelectedNode.Nodes.Add(dir);
- localTreeView.SelectedNode.Expand();
- string[] files = Directory.GetFiles(dir);
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- }
- private void localLvContextMenu_Opening(object sender, CancelEventArgs e)
- {
- // Only open context menu if locallistview has a selected item
- if (localListView.SelectedItems.Count == 0)
- e.Cancel = true;
- }
- private void uploadToolStripMenuItem_Click(object sender, EventArgs e)
- {
- foreach (ListViewItem item in localListView.SelectedItems)
- {
- itemsUL.Add(item);
- }
- uploadMethod(itemsUL);
- }
- private void addToQueueToolStripMenuItem_Click(object sender, EventArgs e)
- {
- localAddQueue();
- }
- #endregion
- #region server
- private void downloadMethod(List<ListViewItem> downloadItems)
- {
- WorkerClass wc = new WorkerClass();
- wc.ftpDownload(downloadItems, hostTxtBx.Text, usernameTxtBx.Text, passTxtBx.Text, workingDirectoryLocal);
- localRefresh();
- }
- private void serverRefresh(string host, string workingDirectory)
- {
- StringBuilder result = new StringBuilder();
- FtpWebRequest ftpReq;
- FtpWebRequest fileSizeReq;
- if (!host.StartsWith("ftp://"))
- {
- host = "ftp://" + host;
- }
- if (serverTreeView.SelectedNode.Text == "/root")
- {
- serverListView.Items.Clear();
- try
- {
- ftpReq = (FtpWebRequest)FtpWebRequest.Create(new Uri(host));
- ftpReq.UseBinary = true;
- ftpReq.Credentials = new NetworkCredential(usernameTxtBx.Text, passTxtBx.Text);
- ftpReq.Method = WebRequestMethods.Ftp.ListDirectory;
- WebResponse response = ftpReq.GetResponse();
- StreamReader sr = new StreamReader(response.GetResponseStream());
- string line = sr.ReadLine();
- while (line != null)
- {
- result.Append(line);
- result.Append("\n");
- line = sr.ReadLine();
- }
- result.Remove(result.ToString().LastIndexOf('\n'), 1);
- sr.Close();
- response.Close();
- string[] resultArray = result.ToString().Split('\n');
- if (resultArray != null)
- {
- foreach (string file in resultArray)
- {
- if (file.Contains("."))
- {
- ListViewItem item = new ListViewItem("/" + file);
- FileInfo info = new FileInfo(file);
- fileSizeReq = (FtpWebRequest)FtpWebRequest.Create(new Uri(host + "/" + file));
- fileSizeReq.UseBinary = true;
- fileSizeReq.Credentials = new NetworkCredential(usernameTxtBx.Text, passTxtBx.Text);
- fileSizeReq.Method = WebRequestMethods.Ftp.GetFileSize;
- fileSizeReq.Method = WebRequestMethods.Ftp.GetDateTimestamp;
- fileSizeReq.UseBinary = true;
- FtpWebResponse loginresponse = (FtpWebResponse)fileSizeReq.GetResponse();
- FtpWebResponse fileSizeResponse = (FtpWebResponse)fileSizeReq.GetResponse();
- FtpWebResponse dateTimeStamp = (FtpWebResponse)fileSizeReq.GetResponse();
- string dateTimeStampString = dateTimeStamp.LastModified.ToString();
- long size = fileSizeResponse.ContentLength;
- serverListView.Items.Add(item);
- item.SubItems.Add(string.Format("{0}", info.Name));
- item.SubItems.Add(string.Format("{0} KB", size / 1024 ));
- item.SubItems.Add(string.Format("{0}", dateTimeStampString));
- }
- else
- {
- }
- }
- serverTreeView.Refresh();
- }
- }
- catch (Exception ex)
- { MessageBox.Show(ex.Message); }
- }
- else
- {
- serverListView.Items.Clear();
- try
- {
- ftpReq = (FtpWebRequest)FtpWebRequest.Create(new Uri(host + workingDirectory + "/"));
- ftpReq.UseBinary = true;
- ftpReq.Credentials = new NetworkCredential(usernameTxtBx.Text, passTxtBx.Text);
- ftpReq.Method = WebRequestMethods.Ftp.ListDirectory;
- FtpWebResponse response = (FtpWebResponse)ftpReq.GetResponse();
- StreamReader sr = new StreamReader(response.GetResponseStream());
- string line = sr.ReadLine();
- while (line != null)
- {
- result.Append(line);
- result.Append("\n");
- line = sr.ReadLine();
- }
- result.Remove(result.ToString().LastIndexOf('\n'), 1);
- sr.Close();
- response.Close();
- string[] resultArray = result.ToString().Split('\n');
- if (resultArray != null)
- {
- foreach (string file in resultArray)
- {
- if (file.Contains("."))
- {
- ListViewItem item = new ListViewItem(workingDirectory + "/" + file);
- FileInfo info = new FileInfo(file);
- fileSizeReq = (FtpWebRequest)FtpWebRequest.Create(new Uri(host + workingDirectory + "/" + info));
- fileSizeReq.UseBinary = true;
- fileSizeReq.Credentials = new NetworkCredential(usernameTxtBx.Text, passTxtBx.Text);
- fileSizeReq.Method = WebRequestMethods.Ftp.GetFileSize;
- fileSizeReq.UseBinary = true;
- FtpWebResponse loginresponse = (FtpWebResponse)fileSizeReq.GetResponse();
- FtpWebResponse fileSizeResponse = (FtpWebResponse)fileSizeReq.GetResponse();
- FtpWebResponse dateTimeStamp = (FtpWebResponse)fileSizeReq.GetResponse();
- string dateTimeStampString = dateTimeStamp.LastModified.ToString();
- long size = fileSizeResponse.ContentLength;
- serverListView.Items.Add(item);
- item.SubItems.Add(string.Format("{0}", info.Name));
- item.SubItems.Add(string.Format("{0} KB", size / 1024 ));
- item.SubItems.Add(string.Format("{0}", dateTimeStampString));
- }
- else
- {
- }
- }
- serverTreeView.Refresh();
- }
- }
- catch (Exception ex)
- { }
- }
- }
- private void serverAddQueue()
- {
- try
- {
- List<string> fileForQueue = new List<string>();
- foreach (ListViewItem file in serverListView.SelectedItems)
- {
- fileForQueue.Add(file.Text);
- }
- foreach (ListViewItem file in queueListView.Items)
- {
- fileForQueue.Remove(file.Text);
- }
- int i = 0;
- foreach (string file in fileForQueue)
- {
- ListViewItem item = new ListViewItem(file);
- FileInfo info = new FileInfo(file);
- queueListView.Items.Add(item);
- item.SubItems.Add(string.Format("{0}", info.Name));
- string ul = "DL";
- item.SubItems.Add(serverListView.Items[i].SubItems[2].Text);
- item.SubItems.Add(serverListView.Items[i].SubItems[3].Text);
- item.SubItems.Add(ul);
- i++;
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- private void serverDoubleSelect(string host, string firstNode)
- {
- StringBuilder result = new StringBuilder();
- FtpWebRequest req;
- try
- {
- req = (FtpWebRequest)FtpWebRequest.Create(new Uri(host));
- req.UseBinary = true;
- req.Credentials = new NetworkCredential(usernameTxtBx.Text, passTxtBx.Text);
- req.Method = WebRequestMethods.Ftp.ListDirectory;
- WebResponse response = req.GetResponse();
- StreamReader sr = new StreamReader(response.GetResponseStream());
- string line = sr.ReadLine();
- while (line != null)
- {
- result.Append(line);
- result.Append("\n");
- line = sr.ReadLine();
- }
- result.Remove(result.ToString().LastIndexOf('\n'), 1);
- sr.Close();
- response.Close();
- string[] resultArray = result.ToString().Split('\n');
- if (resultArray != null)
- {
- if (firstNode != null)
- {
- serverTreeView.Nodes.Clear();
- serverTreeView.Nodes.Add("/" + firstNode);
- foreach (string parentDir in resultArray)
- {
- TreeNode parentNode = new TreeNode(parentDir);
- if (parentDir.Contains("."))
- {
- }
- else
- {
- serverTreeView.Nodes.Add(parentNode);
- }
- }
- serverTreeView.Refresh();
- }
- else if (firstNode == null)
- {
- foreach (string childDir in resultArray)
- {
- TreeNode childNode = new TreeNode("/" + childDir);
- if (childDir.Contains("."))
- {
- }
- else
- {
- serverTreeView.SelectedNode.Nodes.Add(childNode);
- }
- }
- serverTreeView.SelectedNode.Expand();
- serverTreeView.Refresh();
- }
- }
- }
- catch
- { }
- }
- private void serverTreeView_AfterSelect(object sender, TreeViewEventArgs e)
- {
- serverRefresh(hostTxtBx.Text, serverTreeView.SelectedNode.Text);
- }
- private void serverTreeView_MouseDoubleClick(object sender, MouseEventArgs e)
- {
- if (serverTreeView.SelectedNode.Text == "/root")
- {
- serverListView.Items.Clear();
- string firstNode = "root";
- string host = hostTxtBx.Text;
- if (!host.StartsWith("ftp://"))
- {
- host = "ftp://" + host;
- }
- serverDoubleSelect(host, firstNode);
- }
- else
- {
- string firstNode = null;
- string host = hostTxtBx.Text;
- if (!host.StartsWith("ftp://"))
- {
- host = "ftp://" + host;
- }
- host = host + serverTreeView.SelectedNode.Text;
- serverDoubleSelect(host, firstNode);
- }
- }
- private void downloadToolStripMenuItem_Click(object sender, EventArgs e)
- {
- foreach (ListViewItem item in serverListView.SelectedItems)
- {
- itemsDL.Add(item);
- }
- downloadMethod(itemsDL);
- }
- private void addToQueueToolStripMenuItem2_Click(object sender, EventArgs e)
- {
- serverAddQueue();
- }
- #endregion
- #region queue
- private void removeQueue()
- {
- if (queueListView.SelectedItems.Count > 0)
- {
- List<ListViewItem> deletedItems = new List<ListViewItem>();
- //For each file in the list view control add to the deleted items collection
- foreach (ListViewItem item in queueListView.SelectedItems)
- {
- deletedItems.Add(item);
- }
- //Remove the items
- foreach (ListViewItem item in deletedItems)
- {
- item.Remove();
- }
- }
- }
- private void processQueueMethod()
- {
- WorkerClass wc = new WorkerClass();
- try
- {
- foreach (ListViewItem item in queueListView.Items)
- {
- string ulOrDl = item.SubItems[4].Text;
- string ulCompare = "UL";
- string dlCompare = "DL";
- if (ulOrDl == ulCompare)
- itemsUL.Add(item);
- else if (dlCompare == ulOrDl)
- itemsDL.Add(item);
- }
- }
- catch (Exception ex)
- { MessageBox.Show(ex.Message); }
- uploadMethod(itemsUL);
- downloadMethod(itemsDL);
- }
- private void processQueueToolStripMenuItem_Click(object sender, EventArgs e)
- {
- processQueueMethod();
- }
- private void removeToolStripMenuItem_Click(object sender, EventArgs e)
- {
- removeQueue();
- }
- private void queKeyDown(object sender, KeyEventArgs e)
- {
- switch (e.KeyCode)
- {
- case Keys.Delete:
- removeQueue();
- break;
- }
- }
- #endregion
- #region file menu
- private void uploadToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- foreach (ListViewItem item in localListView.SelectedItems)
- {
- itemsUL.Add(item);
- }
- uploadMethod(itemsUL);
- }
- private void downloadToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- foreach (ListViewItem item in serverListView.SelectedItems)
- {
- itemsDL.Add(item);
- }
- downloadMethod(itemsDL);
- }
- private void addToQueueToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- localAddQueue();
- serverAddQueue();
- }
- private void processQueueToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- processQueueMethod();
- }
- private void exitToolStripMenuItem_Click(object sender, EventArgs e)
- {
- this.Close();
- }
- #endregion
- #region Buttons
- private void connect_NoDirectory()
- {
- serverListView.Items.Clear();
- string firstNode = "/root";
- StringBuilder result = new StringBuilder();
- FtpWebRequest ftpReq;
- FtpWebRequest fileSizeReq;
- string host = hostTxtBx.Text;
- if (!host.StartsWith("ftp://"))
- {
- host = "ftp://" + host;
- }
- try
- {
- serverTreeView.Nodes.Clear();
- ftpReq = (FtpWebRequest)FtpWebRequest.Create(new Uri(host));
- ftpReq.UseBinary = true;
- ftpReq.Credentials = new NetworkCredential(usernameTxtBx.Text, passTxtBx.Text);
- ftpReq.Method = WebRequestMethods.Ftp.ListDirectory;
- WebResponse response = ftpReq.GetResponse();
- StreamReader sr = new StreamReader(response.GetResponseStream());
- string line = sr.ReadLine();
- while (line != null)
- {
- result.Append(line);
- result.Append("\n");
- line = sr.ReadLine();
- }
- result.Remove(result.ToString().LastIndexOf('\n'), 1);
- sr.Close();
- response.Close();
- string[] resultArray = result.ToString().Split('\n');
- if (resultArray != null)
- {
- serverTreeView.Nodes.Add(firstNode);
- foreach (string parentDir in resultArray)
- {
- TreeNode parentNode = new TreeNode("/" + parentDir);
- if (parentDir.Contains("."))
- {
- ListViewItem item = new ListViewItem("/" + parentDir);
- FileInfo info = new FileInfo(parentDir);
- fileSizeReq = (FtpWebRequest)FtpWebRequest.Create(new Uri(host + "/" + parentDir));
- fileSizeReq.UseBinary = true;
- fileSizeReq.Credentials = new NetworkCredential(usernameTxtBx.Text, passTxtBx.Text);
- fileSizeReq.Method = WebRequestMethods.Ftp.GetFileSize;
- fileSizeReq.Method = WebRequestMethods.Ftp.GetDateTimestamp;
- fileSizeReq.UseBinary = true;
- FtpWebResponse loginresponse = (FtpWebResponse)fileSizeReq.GetResponse();
- FtpWebResponse fileSizeResponse = (FtpWebResponse)fileSizeReq.GetResponse();
- FtpWebResponse dateTimeStamp = (FtpWebResponse)fileSizeReq.GetResponse();
- string dateTimeStampString = dateTimeStamp.LastModified.ToString();
- fileSizeResponse = (FtpWebResponse)fileSizeReq.GetResponse();
- long size = fileSizeResponse.ContentLength;
- serverListView.Items.Add(item);
- item.SubItems.Add(string.Format("{0}", info.Name));
- item.SubItems.Add(string.Format("{0} KB", size / 1024 ));
- item.SubItems.Add(dateTimeStampString);
- }
- else
- {
- serverTreeView.Nodes.Add(parentNode);
- }
- }
- serverTreeView.Refresh();
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- private void cnctBtn_Click(object sender, EventArgs e)
- {
- connect_NoDirectory();
- }
- private void pqBtn_Click(object sender, EventArgs e)
- {
- processQueueMethod();
- }
- private void riBtn_Click(object sender, EventArgs e)
- {
- }
- #endregion
- }
- }
Add Comment
Please, Sign In to add comment