public FileTransfer(PscpOptions options, FileTransferRequest request)
        {
            this.Options = options;
            this.Request = request;

            this.Id = Interlocked.Increment(ref idSeed);
        }
        public PscpBrowserPanel(SessionData session, PscpOptions options, string localStartingDir)
            : this()
        {
            var fileTransferSession = (SessionData) session.Clone();

            // if the session doesn't contain a host, a port, or an username
            // try to get them from the putty profile
            if ((string.IsNullOrEmpty(fileTransferSession.Username) || string.IsNullOrEmpty(fileTransferSession.Host) || fileTransferSession.Port == 0)
                && !string.IsNullOrEmpty(fileTransferSession.PuttySession))
            {
                var puttyProfile = PuttyDataHelper.GetSessionData(fileTransferSession.PuttySession);

                fileTransferSession.Username = string.IsNullOrEmpty(fileTransferSession.Username)
                    ? puttyProfile.Username
                    : fileTransferSession.Username;

                fileTransferSession.Host = string.IsNullOrEmpty(fileTransferSession.Host)
                    ? puttyProfile.Host
                    : fileTransferSession.Host;

                fileTransferSession.Port = (fileTransferSession.Port == 0)
                    ? puttyProfile.Port
                    : fileTransferSession.Port;
            }

            this.Name = fileTransferSession.SessionName;
            this.TabText = fileTransferSession.SessionName;

            this.fileTransferPresenter = new FileTransferPresenter(options);
            this.localBrowserPresenter = new BrowserPresenter(
                "Local", new LocalBrowserModel(), fileTransferSession, fileTransferPresenter);
            this.remoteBrowserPresenter = new BrowserPresenter(
                "Remote", new RemoteBrowserModel(options), fileTransferSession, fileTransferPresenter);

            this.browserViewLocal.Initialize(this.localBrowserPresenter, new BrowserFileInfo(new DirectoryInfo(localStartingDir)));
            this.browserViewRemote.Initialize(this.remoteBrowserPresenter, RemoteBrowserModel.NewDirectory(ScpUtils.GetHomeDirectory(fileTransferSession)));
            this.fileTransferView.Initialize(this.fileTransferPresenter);
        }
 public PscpBrowserPanel(SessionData session, PscpOptions options)
     : this(session, options, Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
 {
 }
 public FileTransferPresenter(PscpOptions options)
 {
     this.Options = options;
     this.ViewModel = new FileTransferViewModel();
 }
 public PscpClient(PscpOptions options, SessionData session)
 {
     this.Options = options;
     this.Session = session;
 }
        public void LocalToRemote()
        {
            SessionData session = new SessionData
            {
                Username = ScpConfig.UserName,
                Password = ScpConfig.Password,
                Host = ScpConfig.KnownHost,
                Port = 22
            };

            List<BrowserFileInfo> sourceFiles = new List<BrowserFileInfo>
            {
                //new BrowserFileInfo(new FileInfo(Path.GetTempFileName()))
                new BrowserFileInfo(new FileInfo( @"D:\Downloads\vs2012_winexp_enu.iso" ))
            };
            BrowserFileInfo target = new BrowserFileInfo
            {
                Path = string.Format("/home/{0}/", session.Username),
                Source = SourceType.Remote
            };

            PscpOptions options = new PscpOptions { PscpLocation = ScpConfig.PscpLocation, TimeoutMs = 5000 };
            PscpClient client = new PscpClient(options, session);
            PscpResult res = client.CopyFiles(
                sourceFiles,
                target,
                (complete, cancelAll, status) =>
                {
                    Log.InfoFormat(
                        "complete={0}, cancelAll={1}, fileName={2}, pctComplete={3}",
                        complete, cancelAll, status.Filename, status.PercentComplete);
                });

            Log.InfoFormat("Result: {0}", res);

            /*
            ListDirectoryResult res = client.ListDirectory(new BrowserFileInfo { Path = "." });

            Assert.AreEqual(ResultStatusCode.Success, res.StatusCode);
            Assert.Greater(res.Files.Count, 0);
            foreach (BrowserFileInfo file in res.Files)
            {
                Log.Info(file);
            }

            Log.InfoFormat("Result: {0}", res);*/
        }
 public RemoteBrowserModel(PscpOptions options)
 {
     this.Options = options;
 }