Beispiel #1
0
        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);
 }