From 82a19dd08945d86d8db3e5ab9f7900c178ede944 Mon Sep 17 00:00:00 2001 From: ChristianVisintin Date: Fri, 4 Dec 2020 14:00:23 +0100 Subject: [PATCH] Welcome messages --- src/filetransfer/ftp_transfer.rs | 4 ++-- src/filetransfer/mod.rs | 3 ++- src/filetransfer/sftp_transfer.rs | 8 ++++++-- src/ui/activities/filetransfer_activity/session.rs | 6 +++++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/filetransfer/ftp_transfer.rs b/src/filetransfer/ftp_transfer.rs index 9ef9060..21d164f 100644 --- a/src/filetransfer/ftp_transfer.rs +++ b/src/filetransfer/ftp_transfer.rs @@ -225,7 +225,7 @@ impl FileTransfer for FtpFileTransfer { port: u16, username: Option, password: Option, - ) -> Result<(), FileTransferError> { + ) -> Result, FileTransferError> { // Get stream let mut stream: FtpStream = match FtpStream::connect(format!("{}:{}", address, port)) { Ok(stream) => stream, @@ -273,7 +273,7 @@ impl FileTransfer for FtpFileTransfer { // Set stream self.stream = Some(stream); // Return OK - Ok(()) + Ok(self.stream.as_ref().unwrap().get_welcome_msg()) } /// ### disconnect diff --git a/src/filetransfer/mod.rs b/src/filetransfer/mod.rs index 49619f2..8b55dc2 100644 --- a/src/filetransfer/mod.rs +++ b/src/filetransfer/mod.rs @@ -127,6 +127,7 @@ pub trait FileTransfer { /// ### connect /// /// Connect to the remote server + /// Can return banner / welcome message on success fn connect( &mut self, @@ -134,7 +135,7 @@ pub trait FileTransfer { port: u16, username: Option, password: Option, - ) -> Result<(), FileTransferError>; + ) -> Result, FileTransferError>; /// ### disconnect /// diff --git a/src/filetransfer/sftp_transfer.rs b/src/filetransfer/sftp_transfer.rs index 90f92d7..b62627b 100644 --- a/src/filetransfer/sftp_transfer.rs +++ b/src/filetransfer/sftp_transfer.rs @@ -195,7 +195,7 @@ impl FileTransfer for SftpFileTransfer { port: u16, username: Option, password: Option, - ) -> Result<(), FileTransferError> { + ) -> Result, FileTransferError> { // Setup tcp stream let tcp: TcpStream = match TcpStream::connect(format!("{}:{}", address, port)) { Ok(stream) => stream, @@ -258,10 +258,14 @@ impl FileTransfer for SftpFileTransfer { } }; // Set session + let banner: Option = match session.banner() { + Some(s) => Some(String::from(s)), + None => None, + }; self.session = Some(session); // Set sftp self.sftp = Some(sftp); - Ok(()) + Ok(banner) } /// ### disconnect diff --git a/src/ui/activities/filetransfer_activity/session.rs b/src/ui/activities/filetransfer_activity/session.rs index 53e4996..78937bb 100644 --- a/src/ui/activities/filetransfer_activity/session.rs +++ b/src/ui/activities/filetransfer_activity/session.rs @@ -38,7 +38,11 @@ impl FileTransferActivity { self.params.username.clone(), self.params.password.clone(), ) { - Ok(_) => { + Ok(welcome) => { + if let Some(banner) = welcome { + // Log welcome + self.log(LogLevel::Info, format!("Established connection with '{}': \"{}\"", self.params.address, banner).as_ref()); + } // Set state to explorer self.input_mode = InputMode::Explorer; self.reload_remote_dir();