internal ResumeCapability Connect(FtpConnection connection, bool addTraceListener = true) { _ftpClient = new FtpClient { EnableThreadSafeDataConnections = false, DataConnectionType = connection.UsePassiveMode ? FtpDataConnectionType.PASV : FtpDataConnectionType.PORT, Host = connection.Address, Port = connection.Port }; if (addTraceListener) FtpTrace.AddListener(TraceListener); _connection = connection; _ftpClient.BeforeAuthentication += OnBeforeAuthentication; _ftpClient.Connected += OnConnected; _ftpClient.Connect(); var resume = ResumeCapability.None; var r = FtpClient.Execute("APPE"); if (!r.Message.Contains("command not recognized")) resume |= ResumeCapability.Append; r = FtpClient.Execute("REST"); if (!r.Message.Contains("command not recognized")) resume |= ResumeCapability.Restart; return resume; }
public void Edit() { FtpConnectionItemViewModel newItem; bool replace; var ftpconn = SelectedItem as FtpConnectionItemViewModel; if (ftpconn != null) { newItem = ftpconn.Clone(); replace = true; } else if (SelectedItem is NewConnectionPlaceholderViewModel) { var model = new FtpConnection { Port = 21, ConnectionImage = (int) ConnectionImage.Fat, }; newItem = new FtpConnectionItemViewModel(model); replace = false; } else { throw new NotSupportedException(); } var dialog = new NewConnectionDialog(Items.OfType<FtpConnectionItemViewModel>().Select(item => item.Name).ToList(), newItem); if (dialog.ShowDialog() != true) return; newItem.Name = newItem.Name.Trim(); if (newItem.Username != null) newItem.Username = newItem.Username.Trim(); if (newItem.Password != null) newItem.Password = newItem.Password.Trim(); if (replace) Items.Remove(ftpconn); var i = 0; while (i < Items.Count - 1 && String.Compare(newItem.Name, Items[i].Name, StringComparison.InvariantCultureIgnoreCase) == 1) i++; Items.Insert(i, newItem); Save(newItem); SelectedItem = newItem; }
public FtpConnectionItemViewModel(FtpConnection model) { Model = model; SetLoginInfo(); ChangeLoginCommand = new DelegateCommand(ExecuteChangeLoginCommand); }