Added Scp file transfer to ui

This commit is contained in:
ChristianVisintin
2020-12-05 15:21:01 +01:00
parent 545e283f00
commit a7c2de0669
3 changed files with 22 additions and 13 deletions

View File

@@ -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)
}

View File

@@ -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<Spans> =
vec![Spans::from("SFTP"), Spans::from("FTP"), Spans::from("FTPS")];
let protocols: Vec<Spans> = 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"))

View File

@@ -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(),