Merge pull request #19 from veeso/issue-18-every-ftp-transfer-is-made-in-ascii-mode
[BUG] every ftp transfer is made in ascii mode
This commit is contained in:
commit
1ba139aed1
|
@ -20,6 +20,7 @@
|
|||
Released on FIXME:
|
||||
|
||||
- Bugfix:
|
||||
- [Issue 18](https://github.com/veeso/termscp/issues/18): Set file transfer type to `Binary` for FTP
|
||||
- [Issue 10](https://github.com/veeso/termscp/issues/10): Fixed port not being loaded from bookmarks into gui
|
||||
- [Issue 9](https://github.com/veeso/termscp/issues/9): Fixed issues related to paths on remote when using Windows
|
||||
- Dependencies:
|
||||
|
|
|
@ -38,7 +38,7 @@ use crate::utils::parser::{parse_datetime, parse_lstime};
|
|||
|
||||
// Includes
|
||||
use ftp4::native_tls::TlsConnector;
|
||||
use ftp4::FtpStream;
|
||||
use ftp4::{types::FileType, FtpStream};
|
||||
use regex::Regex;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::time::SystemTime;
|
||||
|
@ -329,7 +329,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -344,7 +344,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::SslError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -353,7 +353,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::SslError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -370,7 +370,14 @@ impl FileTransfer for FtpFileTransfer {
|
|||
if let Err(err) = stream.login(username.as_str(), password.as_str()) {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::AuthenticationFailed,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
// Initialize file type
|
||||
if let Err(err) = stream.transfer_type(FileType::Binary) {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
// Set stream
|
||||
|
@ -389,7 +396,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
@ -415,7 +422,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(path) => Ok(PathBuf::from(path.as_str())),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
@ -435,7 +442,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(_) => Ok(dir),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
@ -475,7 +482,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::DirStatFailed,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
@ -494,7 +501,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::FileCreateDenied,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
@ -520,7 +527,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::PexError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -533,7 +540,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
if let Err(err) = self.remove(&file) {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::PexError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -542,13 +549,13 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::PexError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::DirStatFailed,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -581,7 +588,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::FileCreateDenied,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -631,7 +638,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(writer) => Ok(Box::new(writer)), // NOTE: don't use BufWriter here, since already returned by the library
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::FileCreateDenied,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
@ -650,7 +657,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(reader) => Ok(Box::new(reader)), // NOTE: don't use BufReader here, since already returned by the library
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::NoSuchFileOrDirectory,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
@ -672,7 +679,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
@ -694,7 +701,7 @@ impl FileTransfer for FtpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
None => Err(FileTransferError::new(
|
||||
|
|
|
@ -315,7 +315,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::BadAddress,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -346,7 +346,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -356,7 +356,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
if let Err(err) = session.handshake() {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
let username: String = match username {
|
||||
|
@ -378,7 +378,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
) {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::AuthenticationFailed,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -390,7 +390,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
) {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::AuthenticationFailed,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -422,7 +422,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -492,7 +492,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -534,7 +534,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -573,7 +573,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -610,7 +610,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -647,7 +647,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -689,7 +689,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -744,7 +744,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -765,7 +765,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
Ok(output) => Ok(output),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -824,7 +824,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
Ok(channel) => Ok(Box::new(BufWriter::with_capacity(65536, channel))),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -847,7 +847,7 @@ impl FileTransfer for ScpFileTransfer {
|
|||
Ok(reader) => Ok(Box::new(BufReader::with_capacity(65536, reader.0))),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,12 +76,12 @@ impl SftpFileTransfer {
|
|||
Ok(_) => Ok(p),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::NoSuchFileOrDirectory,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::NoSuchFileOrDirectory,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ impl SftpFileTransfer {
|
|||
Ok(_) => Ok(p),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::NoSuchFileOrDirectory,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
Err(_) => Err(FileTransferError::new(
|
||||
|
@ -260,7 +260,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::BadAddress,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -291,7 +291,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -301,7 +301,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
if let Err(err) = session.handshake() {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
let username: String = match username {
|
||||
|
@ -323,7 +323,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
) {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::AuthenticationFailed,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -335,7 +335,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
) {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::AuthenticationFailed,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -348,7 +348,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -358,7 +358,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Err(err) => {
|
||||
return Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
))
|
||||
}
|
||||
};
|
||||
|
@ -386,7 +386,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
}
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ConnectionError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -459,7 +459,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
match sftp.readdir(dir.as_path()) {
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::DirStatFailed,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
Ok(files) => {
|
||||
// Allocate vector
|
||||
|
@ -490,7 +490,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::FileCreateDenied,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -517,7 +517,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::PexError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -538,7 +538,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::PexError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -562,7 +562,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::FileCreateDenied,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -585,7 +585,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Ok(metadata) => Ok(self.make_fsentry(dir.as_path(), &metadata)),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::NoSuchFileOrDirectory,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -604,7 +604,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Ok(output) => Ok(output),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::ProtocolError,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
},
|
||||
false => Err(FileTransferError::new(
|
||||
|
@ -643,7 +643,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Ok(file) => Ok(Box::new(BufWriter::with_capacity(65536, file))),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::FileCreateDenied,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -669,7 +669,7 @@ impl FileTransfer for SftpFileTransfer {
|
|||
Ok(file) => Ok(Box::new(BufReader::with_capacity(65536, file))),
|
||||
Err(err) => Err(FileTransferError::new_ex(
|
||||
FileTransferErrorType::NoSuchFileOrDirectory,
|
||||
format!("{}", err),
|
||||
err.to_string(),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue