Example #1
0
        /// <summary>
        /// Загрузить файл на сервер
        /// !!! добавить прогресс !!!
        /// </summary>
        /// <param name="localFilePath">Локальный путь и имя файла для загрузки.</param>
        /// <param name="remoteFileUri">Путь к файлу и имя файла на сервере.</param>
        public async Task <bool> UploadFileAsync(string localFilePath, Uri remoteFileUri)
        {
            bool result = false;

            Progress_Clear();
            Show_Message($"Загрузка файла {localFilePath}");

            if (quota.IsLimited)
            {
                FileInfo fileInfo = new FileInfo(localFilePath);
                if (quota.QuotaAvailableBytes < fileInfo.Length)
                {
                    LogController.Warn(logger, $"Недостаточно места на сервере");
                    Progress_Complete();
                    Show_Message();
                    return(false);
                }
            }

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    Progress <WebDavProgress> progress = new Progress <WebDavProgress>();
                    progress.ProgressChanged += Progress_ProgressChanged;
                    session.Timeout           = TimeSpan.FromDays(1);

                    Stream stream = File.OpenRead(localFilePath);
                    if (Settings.SpeedLimiter.IsLimitUpload)
                    {
                        stream = new ThrottledStream(stream, Settings.SpeedLimiter.UploadSpeedLimit * 1024);
                    }
                    Set_Stream(stream);

                    string contentType = MimeMapping.GetMimeMapping(localFilePath);
                    result = await session.UploadFileWithProgressAsync(remoteFileUri, stream, contentType, progress, CancellationToken.None);

                    if (result)
                    {
                        LogController.Info(logger, $"Файл успешно загружен: {localFilePath}");
                        Progress_Complete();
                    }
                    else
                    {
                        LogController.Warn(logger, $"Файл не загружен: {localFilePath}");
                    }

                    Close_Stream();
                    //stream.Dispose();
                }
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка загрузки файла: {localFilePath}");
            }

            Show_Message();

            return(result);
        }
Example #2
0
        public async Task <bool> CheckAuthorizationAsync()
        {
            LogController.Info(logger, $"Попытка авторизации. user: {User}, server {Server}");
            try
            {
                using (WebDavSession session = new WebDavSession(httpClientHandler, version))
                {
                    IList <WebDavSessionItem> item = await session.ListAsync(Server);

                    LogController.Info(logger, $"Авторизация прошла успешно. user: {User}, server: {Server}");
                    return(true);
                }
            }
            //catch (HttpRequestException e)
            //{
            //    LogController.Error(logger, e);
            //    return false;
            //}
            //catch (WebDavException e)
            //{
            //    LogController.Error(logger, e);
            //    return false;
            //}
            catch (Exception e)
            {
                LogController.Error(logger, e, "Ошибка авторизации");
                return(false);
            }
        }
		private void RefreshFolderView() {
			treeViewServer.Nodes.Clear();

			IFolder folder = null;
			try {
				WebDavSession session = new WebDavSession();
				session.Credentials = new NetworkCredential(this._username, this._password);
				string url = this._protocol + "://" + this._domain + "/";
				if (this._path != String.Empty) {
					url += this._path + "/";
				}
				folder = session.OpenFolder(url);
			} catch(UnauthorizedException) {
				MessageBox.Show("nicht Authorisiert");
				return;
			} catch(Exception) {

			}

			if (folder != null) {
				IHierarchyItem[] items = folder.GetChildren();
				TreeNode root = new TreeNode("/");
				treeViewServer.Nodes.Add(root);
				foreach(IHierarchyItem item in items) {
					if (item.ItemType == ItemType.Folder) {
						root.Nodes.Add(new TreeNode(item.DisplayName));
					}
				}
			}
		}
Example #4
0
        public WebDavManager(ICryptography cryptography, IWebDavAuthorizationService webDavAuthorizationService)
        {
            _cryptography = cryptography;
            _webDavAuthorizationService = webDavAuthorizationService;

            _webDavSession = new WebDavSession();
        }
Example #5
0
        private void InitVars()
        {
            Outlook.Store store = null;
            // There is no good method for searching store.
            foreach (Outlook.Store s in Application.Session.Stores)
            {
                if (s.DisplayName == storeName)
                {
                    store = s;
                    break;
                }
            }
            // TODO fix folder search.
            olFolderContacts = store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts) as Outlook.Folder;
            olFolderCalendar = store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar) as Outlook.Folder;

            olFolderContacts.UserDefinedProperties.Add("remoteID", Outlook.OlUserPropertyType.olText);
            olFolderContacts.UserDefinedProperties.Add("modifyDate", Outlook.OlUserPropertyType.olDateTime);
            olFolderCalendar.UserDefinedProperties.Add("remoteID", Outlook.OlUserPropertyType.olText);
            olFolderCalendar.UserDefinedProperties.Add("modifyDate", Outlook.OlUserPropertyType.olDateTime);

            tmpFilnameContacts = Path.GetTempFileName().Replace(".tmp", ".vcf");
            tmpFilnameCalendar = Path.GetTempFileName().Replace(".tmp", ".ics");

            session = new WebDavSession();
            session.Credentials = new NetworkCredential(login, password);
        }
Example #6
0
        public WebDavManager(ICryptography cryptography, IWebDavAuthorizationService webDavAuthorizationService)
        {
            _cryptography = cryptography;
            _webDavAuthorizationService = webDavAuthorizationService;

            _webDavSession = new WebDavSession();
        }
Example #7
0
        public async Task <bool> ExistsAsync(Uri uri)
        {
            bool result = false;

            Progress_Start();
            //Show_Message($"Поиск {uri}");

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    result = await session.ExistsAsync(uri);

                    //if (result)
                    //{
                    //    LogController.Info(logger, $"Сервер содержит {uri}");
                    //}
                    //else
                    //{
                    //    LogController.Info(logger, $"Сервер не содержит {uri}");
                    //}
                }
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка, не удалось проверить существование {uri}");
            }

            Progress_Stop();
            Show_Message();

            return(result);
        }
        public void UT_WebDavSession_ConstructorWithNomDefaultHttpVersion()
        {
            var credentials = new NetworkCredential(UserName, Password);
            var session     = new WebDavSession(credentials, new Version(2, 0));

            Assert.AreEqual(new Version(2, 0), session.HttpVersion);
        }
Example #9
0
        public async Task <bool> RunAsync()
        {
            string cloudUsr   = "******";
            string cloudPw    = "****";
            string url        = @"https://nextcloud.*****.gr/remote.php/webdav/";
            string pathToSave = @"c:\temp\nextcloud\";
            string docToSave  = $"{pathToSave}tmp432534534.docx";

            try
            {
                // Basic authentication required
                var credentials   = new NetworkCredential(cloudUsr, cloudPw);
                var webDavSession = new WebDavSession(@"https://nextcloud.egritosgroup.gr/remote.php/webdav/", credentials);
                //// OR without authentication
                //var client = new WebDAVClient.Client(new NetworkCredential());
                var items = await webDavSession.ListAsync(@"/");

                FileStream dataToUpload = File.OpenRead(docToSave);
                var        uri          = new Uri(@"https://nextcloud.egritosgroup.gr/remote.php/webdav/");
                var        rrr          = await webDavSession.UploadFileAsync(items[1], "asdasdasd.docx", dataToUpload);
            }
            catch (Exception e_cld)
            {
                Console.WriteLine("An error occurred: '{0}'", e_cld);
            }

            return(true);
        }
Example #10
0
        /// <summary>
        /// Переместить файл/каталог на сервере
        /// </summary>
        /// <param name="sourceUri"></param>
        /// <param name="destinationUri"></param>
        public async Task <bool> MoveAsync(Uri sourceUri, Uri destinationUri)
        {
            bool result = false;

            Progress_Start();
            Show_Message($"Перемешщение  из {sourceUri} в {destinationUri}");

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    result = await session.MoveAsync(sourceUri, destinationUri);

                    if (result)
                    {
                        LogController.Info(logger, $"Успешно перемещено из {sourceUri} в {destinationUri}");
                    }
                    else
                    {
                        LogController.Warn(logger, $"Не перемещено из {sourceUri} в {destinationUri}");
                    }
                }
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка перемещения из {sourceUri} в {destinationUri}");
            }

            Progress_Stop();
            Show_Message();

            return(result);
        }
Example #11
0
        /// <summary>
        /// Удалить файл/каталог на сервере
        /// </summary>
        /// <param name="uri">Путь к файлу/каталогу на сервере.</param>
        public async Task <bool> DeleteAsync(Uri uri)
        {
            bool result = false;

            Progress_Start();
            Show_Message($"Удаление файла/каталога {uri}");

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    result = await session.DeleteAsync(uri);

                    if (result)
                    {
                        LogController.Info(logger, $"Успешно удалено: {uri}");
                    }
                    else
                    {
                        LogController.Warn(logger, $"Не удалено: {uri}");
                    }
                }
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка удаления: {uri}");
            }

            Progress_Stop();
            Show_Message();

            return(result);
        }
Example #12
0
        /// <summary>
        /// Создать каталог на сервере
        /// </summary>
        /// <param name="dirUri">Путь к каталогу на сервере.</param>
        public async Task <bool> CreateDirAsync(Uri dirUri)
        {
            bool result = false;

            Progress_Start();
            Show_Message($"Создание каталога {dirUri}");

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    result = await session.CreateDirectoryAsync(dirUri);

                    if (result)
                    {
                        LogController.Info(logger, $"Каталог успешно создан: {dirUri}");
                    }
                    else
                    {
                        LogController.Warn(logger, $"Каталог не создан: {dirUri}");
                    }
                }
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка создания каталога: {dirUri}");
            }

            Progress_Stop();
            Show_Message();

            return(result);
        }
Example #13
0
        public DecaTecWebDavClient(IConnectionSettings connectionSettings)
        {
            _connectionSettings = connectionSettings;

            var credentials = new NetworkCredential(_connectionSettings.UserName, _connectionSettings.GetPassword());

            _session = new WebDavSession(credentials);
        }
Example #14
0
        public WebDavManager(ICryptography cryptography, IWebDavAuthorizationService webDavAuthorizationService)
        {
            _cryptography = cryptography;
            _webDavAuthorizationService = webDavAuthorizationService;
            Log = LogManager.GetLogger(this.GetType());

            _webDavSession = new WebDavSession();
        }
Example #15
0
        public WebDavManager(ICryptography cryptography, IWebDavAuthorizationService webDavAuthorizationService)
        {
            _cryptography = cryptography;
            _webDavAuthorizationService = webDavAuthorizationService;
            Log = LogManager.GetLogger(this.GetType());

            _webDavSession = new WebDavSession();
        }
Example #16
0
        private WebDavSession CreateWebDavSession()
        {
            var httpClientHandler = new HttpClientHandler();

            httpClientHandler.PreAuthenticate = true;
            httpClientHandler.Credentials     = new NetworkCredential(this.userName, this.password);
            var debugHttpMessageHandler = new DebugHttpMessageHandler(httpClientHandler);
            var session = new WebDavSession(debugHttpMessageHandler);

            return(session);
        }
        private WebDavSession CreateWebDavSession()
        {
            var httpClientHandler = new HttpClientHandler()
            {
                // Ignore all certificate errors.
                ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return(true); },
                PreAuthenticate = true,
                Credentials     = new NetworkCredential(userName, password)
            };

            var debugHttpMessageHandler = new DebugHttpMessageHandler(httpClientHandler);
            var session = new WebDavSession(debugHttpMessageHandler);

            return(session);
        }
Example #18
0
        /// <summary>
        /// Скачать файл с сервера
        /// </summary>
        /// <param name="remoteFileUri">Исходный путь и имя файла на сервере.</param>
        /// <param name="localFilePath">Путь и имя файла для загрузки в локальной файловой системе.</param>
        public async Task <bool> DownloadFileAsync(Uri remoteFileUri, string localFilePath)
        {
            bool result = false;

            Progress_Clear();
            Show_Message($"Скачивание файла {localFilePath}");

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    Progress <WebDavProgress> progress = new Progress <WebDavProgress>();
                    progress.ProgressChanged += Progress_ProgressChanged;

                    Stream stream = File.Create(localFilePath);
                    if (Settings.SpeedLimiter.IsLimitDownload)
                    {
                        stream = new ThrottledStream(stream, Settings.SpeedLimiter.DownloadSpeedLimit * 1024);
                    }
                    Set_Stream(stream);

                    result = await session.DownloadFileWithProgressAsync(remoteFileUri, stream, progress, CancellationToken.None);

                    if (result)
                    {
                        LogController.Info(logger, $"Файл успешно скачен: {remoteFileUri}");
                        Progress_Complete();
                    }
                    else
                    {
                        LogController.Warn(logger, $"Файл не скачен: {remoteFileUri}");
                    }

                    Close_Stream();
                    //stream.Dispose();
                }
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка скачивания файла: {remoteFileUri}");
            }

            Show_Message();

            return(result);
        }
Example #19
0
		public static void Main (string[] args) {
			ICommandLineParser parser = new CommandLineParser();
			if (!parser.ParseArguments(args, Options) || args.Length == 0) {
				Console.WriteLine(Options.GetUsage());
				return;
			}
			
			WebDavSession session = new WebDavSession();
			if (Options.Username != String.Empty && Options.Password != String.Empty) {
				session.Credentials = new NetworkCredential(Options.Username, Options.Password);
			}
			IFolder folder = session.OpenFolder(Options.Host);
			IHierarchyItem[] items = folder.GetChildren();
			foreach(IHierarchyItem item in items) {
				Console.WriteLine(item.DisplayName);
			}
			
			Console.WriteLine(Options.Host);
		}
Example #20
0
        // переделать через PropFind
        public async Task <DirectoryItem> GetItemAsync(Uri fileUri)
        {
            DirectoryItem dirItem = new DirectoryItem();

            Progress_Start();

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    string fileUrl = fileUri.ToString();
                    string dirUrl  = fileUrl.Remove(fileUrl.LastIndexOf("/"));
                    IList <WebDavSessionItem> items = await session.ListAsync(dirUrl);

                    string            fileName    = fileUrl.Remove(0, fileUrl.LastIndexOf("/") + 1);
                    WebDavSessionItem sessionItem = items.FirstOrDefault(i => i.Name == fileName);

                    if (sessionItem != null)
                    {
                        dirItem = new DirectoryItem
                        {
                            Name           = sessionItem.Name,
                            Uri            = sessionItem.Uri,
                            LastModified   = sessionItem.LastModified,
                            ContentLength  = sessionItem.ContentLength,
                            QuotaUsedBytes = sessionItem.QuotaUsedBytes,
                            IsFolder       = sessionItem.IsFolder
                        };
                    }

                    //LogController.Info(logger, $"Получен файл {fileUri}");
                }
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка, не удалось получить файл {fileUri}");
            }

            Progress_Stop();

            return(dirItem);
        }
Example #21
0
        private static async Task Test()
        {
            var credentials   = new NetworkCredential("logon", "*logon*");
            var webDavSession = new WebDavSession(@"https://nextcloud.espackeuro.com/remote.php/dav/files/logon/", credentials);

            try
            {
                var items = await webDavSession.ListAsync(@"Android/APK/");

                foreach (var item in items)
                {
                    using (FileStream fs = File.OpenWrite(string.Format(@"d:\temp\{0}", item.Name)))
                        await webDavSession.DownloadFileAsync(item.Uri, fs);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Example #22
0
        /// <summary>
        /// Список файлов в данном каталоге
        /// </summary>
        /// <param name="dirUri">Путь к каталогу на сервере.</param>
        public async Task <List <DirectoryItem> > ListAsync(Uri dirUri)
        {
            List <DirectoryItem> list = new List <DirectoryItem>();

            Progress_Start();

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    IList <WebDavSessionItem> items = await session.ListAsync(dirUri);

                    foreach (WebDavSessionItem item in items)
                    {
                        // обработка списка
                        DirectoryItem dirItem = new DirectoryItem
                        {
                            Name           = item.Name,
                            Uri            = item.Uri,
                            LastModified   = item.LastModified,
                            ContentLength  = item.ContentLength,
                            QuotaUsedBytes = item.QuotaUsedBytes,
                            IsFolder       = item.IsFolder
                        };
                        list.Add(dirItem);
                    }
                    //LogController.Info(logger, $"Получено содержимое каталога {dirUri}");
                }
                await LoadQuotaAsync();
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка, не удалось получить содержимое каталога {dirUri}");
            }

            Progress_Stop();

            return(list);
        }
        private WebDavSession CreateWebDavSession(MockHttpMessageHandler mockHandler)
        {
            var credentials = new NetworkCredential(UserName, Password);

            var httpClientHandler = new HttpClientHandler()
            {
                Credentials     = credentials,
                PreAuthenticate = true
            };

            var debugHttpMessageHandler = new DebugHttpMessageHandler(httpClientHandler)
            {
                InnerHandler = mockHandler
            };

            var session = new WebDavSession(debugHttpMessageHandler)
            {
                BaseUri = new Uri(WebDavRootFolder, UriKind.Absolute)
            };

            return(session);
        }
Example #24
0
        /// <summary>
        /// Переименовать файл/каталог на сервере
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="newName"></param>
        public async Task <bool> RenameAsync(Uri uri, string newName)
        {
            Uri newUri = new Uri(uri.AbsoluteUri.Remove(uri.AbsoluteUri.Length - uri.Segments.Last().Length));

            newUri = new Uri(newUri, newName);

            bool result = false;

            Progress_Start();
            Show_Message($"Переименование из {uri} в {newUri}");

            try
            {
                using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version))
                {
                    result = await session.MoveAsync(uri, newUri);

                    if (result)
                    {
                        LogController.Info(logger, $"Успешно переименовано из {uri} в {newUri}");
                    }
                    else
                    {
                        LogController.Warn(logger, $"Не переименовано из {uri} в {newUri}");
                    }
                }
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Ошибка переименованования из {uri} в {newUri}");
            }

            Progress_Stop();
            Show_Message();

            return(result);
        }
Example #25
0
        private WebDavSession GetWebDavSession()
        {
            if (session == null || connectionFail){
                session = new WebDavSession(webDavLicense);
                session.Credentials = new NetworkCredential(WebDavUserName, WebDavPassword);
            }

            return session;
        }
		private void ShowSelectedFolderContent() {
			listViewFiles.Items.Clear();

			IFolder folder = null;
			try {
				string path = this.GetSelectedFolder();
				WebDavSession session = new WebDavSession();
				session.Credentials = new NetworkCredential(this._username, this._password);
				string url = this._protocol + "://" + this._domain + "/";
				if (path != String.Empty) {
					url += path + "/";
				}
				folder = session.OpenFolder(url);
			} catch(Exception) {

			}

			if (folder != null) {
				IHierarchyItem[] items = folder.GetChildren();
				foreach(IHierarchyItem item in items) {
					if (item.ItemType == ItemType.Resource) {
						PropertyName[] propNames = new PropertyName[] { new PropertyName("getcontentlength", "DAV:") };
						Property[] properties = item.GetPropertyValues(propNames);

						string contentLength = "";
						if (properties.Length > 0) {
							try {
								Int64 content_length = Convert.ToInt64(properties.First().StringValue);
								if (content_length > 1000000000000) {
									contentLength = (content_length / 1099511627776.0).ToString("f") + " TB";
								} else if (content_length > 1000000000) {
									contentLength = (content_length / (1024.0 * 1024.0 * 1024.0)).ToString("f") + " GB";
								} else if (content_length > 1000000) {
									contentLength = (content_length / (1024.0 * 1024.0)).ToString("f") + " MB";
								} else if (content_length > 1000) {
									contentLength = (content_length / 1024.0).ToString("f") + " KB";
								} else {
									contentLength = content_length.ToString() + " B";
								}
							} catch(Exception) {
								contentLength = properties.First().StringValue;
							}
						}
						string[] test = new string[] { item.DisplayName, contentLength };
						ListViewItem lvItem = new ListViewItem(test);
						listViewFiles.Items.Add(lvItem);
					} else if (item.ItemType == ItemType.Folder) {
						if (item.DisplayName != String.Empty) {
							bool nodeExists = false;
							foreach(TreeNode currentNode in treeViewServer.SelectedNode.Nodes) {
								if (currentNode.Text == item.DisplayName) {
									nodeExists = true;
									break;
								}
							}
							if (!nodeExists) {
								TreeNode currentNode = new TreeNode(item.DisplayName);
								treeViewServer.SelectedNode.Nodes.Add(currentNode);
							}
						}
					}
				}
			}
		}
		private void contextMenuStripFilename_ItemClicked(object sender, ToolStripItemClickedEventArgs e) {
			((ContextMenuStrip)sender).Hide();
			switch(e.ClickedItem.Name) {
				case "toolStripMenuItemSaveUnder":
					if (folderBrowserDialog.ShowDialog() == DialogResult.OK) {
						WebDavSession session = new WebDavSession();
						session.Credentials = new NetworkCredential(this._username, this._password);
						IFolder folder = session.OpenFolder(this._protocol + "://" + this._domain + "/" + this._path + "/");
						IResource resource = folder.GetResource(listViewFiles.SelectedItems[0].Text);

						string directorySeparator = (Environment.OSVersion.Platform.ToString() == "Unix") ? "/" : "\\";
						string fullSaveFilename = folderBrowserDialog.SelectedPath + directorySeparator + listViewFiles.SelectedItems[0].Text;

						DownloadForm downloadForm = new DownloadForm();
						downloadForm.Shown += (object downloadFormSender, EventArgs downloadFormE) => {
							downloadForm.DownloadResource(resource, fullSaveFilename);
						};
						downloadForm.ShowDialog();
					}
					break;

				case "toolStripMenuItemUploadFile":
					if (openFileDialog.ShowDialog() == DialogResult.OK) {
						string filename = openFileDialog.SafeFileName;
						string nodeText = "";
						TreeNode currentNode = treeViewServer.SelectedNode;
						while(currentNode != null) {
							if (currentNode.Text != "/") {
								nodeText = "/" + currentNode.Text + nodeText;
							}
							currentNode = currentNode.Parent;
						}
						string fullDestinationPath = comboBoxProtocol.Text + "://" + textBoxServer.Text + textBoxPath.Text + nodeText + "/" + filename;
						Console.WriteLine(fullDestinationPath);
						Uri destination = new Uri(fullDestinationPath);

						IFolder folder = null;
						try {
							WebDavSession session = new WebDavSession();
							session.Credentials = new NetworkCredential(this._username, this._password);
							folder = session.OpenFolder(Regex.Replace(destination.AbsoluteUri, "[^/]+$", ""));
							IResource resource = folder.CreateResource(filename);

							DownloadForm downloadForm = new DownloadForm();
							downloadForm.Shown += (object downloadFormSender, EventArgs downloadFormE) => {
								downloadForm.UploadFile(openFileDialog.FileName, resource);
							};
							downloadForm.FormClosed += (object closedSender, FormClosedEventArgs closedE) => {
								this.ShowSelectedFolderContent();
							};
							downloadForm.ShowDialog();
						} catch(Exception) {

						}
					}
					break;

				case "toolStripMenuItemDeleteFile":
					string message = "Möchstest du die Datei (" + listViewFiles.SelectedItems[0].Text + ") wirklich löschen?";
					string caption = "Datei löschen";
					if (MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
						string folderUri = comboBoxProtocol.Text + "://" + textBoxServer.Text + "/" + this.GetSelectedFolder() + "/";
						Console.WriteLine(folderUri);
						WebDavSession session = new WebDavSession();
						session.Credentials = new NetworkCredential(this._username, this._password);
						IFolder folder = session.OpenFolder(folderUri);
						IResource resource = folder.GetResource(listViewFiles.SelectedItems[0].Text);
						resource.Delete();
						this.ShowSelectedFolderContent();
					}
					break;

				case "toolStripMenuItemCreateFolder":
					Form inputBox = new Form();
					inputBox.Name = "inputCreateNewFolder";
					inputBox.Width = 350;
					inputBox.Height = 150;
					inputBox.Text = "Name des zu erstellenden Ordners";

					TextBox input = new TextBox();
					input.Name = "newWebDavFolder";
					input.Width = 250;
					input.Top = 30;
					input.Left = 50;
					inputBox.Controls.Add(input);

					Button acceptButton = new Button();
					acceptButton.Name = "buttonNewWebDavFolderAccept";
					acceptButton.Text = "OK";
					acceptButton.Width = 100;
					acceptButton.Left = 50;
					acceptButton.Top = 80;
					acceptButton.Click += (object acceptSender, EventArgs acceptE) => {
						inputBox.Tag = input.Text;
						inputBox.DialogResult = System.Windows.Forms.DialogResult.OK;
						inputBox.Close();
					};
					Button cancelButton = new Button();
					cancelButton.Name = "buttonNewWebDavFolderCancel";
					cancelButton.Text = "Abbrechen";
					cancelButton.Width = 100;
					cancelButton.Left = 200;
					cancelButton.Top = 80;
					cancelButton.Click += (object cancelSender, EventArgs cancelE) => {
						inputBox.DialogResult = System.Windows.Forms.DialogResult.Cancel;
						inputBox.Close();
					};
					inputBox.Controls.Add(acceptButton);
					inputBox.Controls.Add(cancelButton);

					DialogResult inputResult = inputBox.ShowDialog();
					if (inputResult == DialogResult.OK) {
						if (inputBox.Tag.ToString() != String.Empty) {
							string folderUri = comboBoxProtocol.Text + "://" + textBoxServer.Text + "/" + this.GetSelectedFolder() + "/";
							WebDavSession session = new WebDavSession();
							session.Credentials = new NetworkCredential(this._username, this._password);
							IFolder folder = session.OpenFolder(folderUri);
							folder.CreateFolder(inputBox.Tag.ToString());
							this.RefreshFolderView();
						} else {
							MessageBox.Show("Der Ordnername kann nicht leer sein.", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information);
						}
					}
					break;

				case "toolStripMenuItemDeleteFolder":
					string deleteMessage = "Möchstest du das Verzeichnis (" + treeViewServer.SelectedNode.Text + ") wirklich löschen?";
					string deleteCaption = "Datei löschen";
					if (MessageBox.Show(deleteMessage, deleteCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
						string folderUri = comboBoxProtocol.Text + "://" + textBoxServer.Text + "/" + this.GetSelectedFolder() + "/";
						Console.WriteLine(folderUri);
						WebDavSession session = new WebDavSession();
						session.Credentials = new NetworkCredential(this._username, this._password);
						IFolder folder = session.OpenFolder(folderUri);
						folder.Delete();
						this.RefreshFolderView();
					}
					break;
			}
		}
 public FileBrowserController()
 {
     session = WebDavSession.Create(BassAddress, T(RootConfigName), T("webDavUserName"), T("webDavPwd"));
 }