From a7c2de06693ebf5b0d48516c8e13121d69fd97bd Mon Sep 17 00:00:00 2001 From: ChristianVisintin Date: Sat, 5 Dec 2020 15:21:01 +0100 Subject: [PATCH] Added Scp file transfer to ui --- src/filetransfer/mod.rs | 4 ++- src/ui/activities/auth_activity.rs | 25 ++++++++++++------- .../activities/filetransfer_activity/mod.rs | 6 ++--- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/filetransfer/mod.rs b/src/filetransfer/mod.rs index 9aa496e..dda5f04 100644 --- a/src/filetransfer/mod.rs +++ b/src/filetransfer/mod.rs @@ -26,10 +26,11 @@ use std::io::{Read, Write}; use std::path::{Path, PathBuf}; -use crate::fs::{FsFile, FsEntry}; +use crate::fs::{FsEntry, FsFile}; // Transfers pub mod ftp_transfer; +pub mod scp_transfer; pub mod sftp_transfer; /// ## FileTransferProtocol @@ -39,6 +40,7 @@ pub mod sftp_transfer; #[derive(std::cmp::PartialEq, std::fmt::Debug, std::clone::Clone)] pub enum FileTransferProtocol { Sftp, + Scp, Ftp(bool), // Bool is for secure (true => ftps) } diff --git a/src/ui/activities/auth_activity.rs b/src/ui/activities/auth_activity.rs index dc42a56..f267d1a 100644 --- a/src/ui/activities/auth_activity.rs +++ b/src/ui/activities/auth_activity.rs @@ -230,10 +230,11 @@ impl AuthActivity { if self.selected_field == InputField::Protocol { self.protocol = match self.protocol { FileTransferProtocol::Sftp => FileTransferProtocol::Ftp(true), // End of list (wrap) + FileTransferProtocol::Scp => FileTransferProtocol::Sftp, FileTransferProtocol::Ftp(ftps) => match ftps { + false => FileTransferProtocol::Scp, true => FileTransferProtocol::Ftp(false), - false => FileTransferProtocol::Sftp, - } + }, }; } } @@ -241,11 +242,12 @@ impl AuthActivity { // If current field is Protocol handle event... ( move element right ) if self.selected_field == InputField::Protocol { self.protocol = match self.protocol { - FileTransferProtocol::Sftp => FileTransferProtocol::Ftp(false), + FileTransferProtocol::Sftp => FileTransferProtocol::Scp, + FileTransferProtocol::Scp => FileTransferProtocol::Ftp(false), FileTransferProtocol::Ftp(ftps) => match ftps { false => FileTransferProtocol::Ftp(true), true => FileTransferProtocol::Sftp, // End of list (wrap) - } + }, }; } } @@ -306,14 +308,19 @@ impl AuthActivity { /// /// Draw protocol select fn draw_protocol_select(&self) -> Tabs { - let protocols: Vec = - vec![Spans::from("SFTP"), Spans::from("FTP"), Spans::from("FTPS")]; + let protocols: Vec = vec![ + Spans::from("SFTP"), + Spans::from("SCP"), + Spans::from("FTP"), + Spans::from("FTPS"), + ]; let index: usize = match self.protocol { FileTransferProtocol::Sftp => 0, + FileTransferProtocol::Scp => 1, FileTransferProtocol::Ftp(ftps) => match ftps { - false => 1, - true => 2, - } + false => 2, + true => 3, + }, }; Tabs::new(protocols) .block(Block::default().borders(Borders::ALL).title("Protocol")) diff --git a/src/ui/activities/filetransfer_activity/mod.rs b/src/ui/activities/filetransfer_activity/mod.rs index addf545..80a1243 100644 --- a/src/ui/activities/filetransfer_activity/mod.rs +++ b/src/ui/activities/filetransfer_activity/mod.rs @@ -43,6 +43,7 @@ use crate::filetransfer::FileTransferProtocol; // File transfer use crate::filetransfer::ftp_transfer::FtpFileTransfer; +use crate::filetransfer::scp_transfer::ScpFileTransfer; use crate::filetransfer::sftp_transfer::SftpFileTransfer; use crate::filetransfer::FileTransfer; use crate::fs::FsEntry; @@ -238,9 +239,8 @@ impl FileTransferActivity { context: None, client: match protocol { FileTransferProtocol::Sftp => Box::new(SftpFileTransfer::new()), - FileTransferProtocol::Ftp(ftps) => { - Box::new(FtpFileTransfer::new(ftps)) - } + FileTransferProtocol::Ftp(ftps) => Box::new(FtpFileTransfer::new(ftps)), + FileTransferProtocol::Scp => Box::new(ScpFileTransfer::new()), }, params: params, local: FileExplorer::new(),