mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Ask password from prompt
This commit is contained in:
11
Cargo.lock
generated
11
Cargo.lock
generated
@@ -352,6 +352,16 @@ dependencies = [
|
|||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rpassword"
|
||||||
|
version = "5.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d755237fc0f99d98641540e66abac8bc46a0652f19148ac9e21de2da06b326c9"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "scopeguard"
|
name = "scopeguard"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
@@ -428,6 +438,7 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"crossterm 0.18.2",
|
"crossterm 0.18.2",
|
||||||
"getopts",
|
"getopts",
|
||||||
|
"rpassword",
|
||||||
"ssh2",
|
"ssh2",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"tui",
|
"tui",
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ ssh2 = "0.8.2"
|
|||||||
tui = { version = "0.12.0", features = ["crossterm"], default-features = false }
|
tui = { version = "0.12.0", features = ["crossterm"], default-features = false }
|
||||||
users = "0.11.0"
|
users = "0.11.0"
|
||||||
whoami = "0.9.0"
|
whoami = "0.9.0"
|
||||||
|
rpassword = "5.0.0"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3"
|
tempfile = "3"
|
||||||
|
|||||||
21
src/main.rs
21
src/main.rs
@@ -24,6 +24,7 @@ const TERMSCP_AUTHORS: &'static str = env!("CARGO_PKG_AUTHORS");
|
|||||||
|
|
||||||
// Crates
|
// Crates
|
||||||
extern crate getopts;
|
extern crate getopts;
|
||||||
|
extern crate rpassword;
|
||||||
|
|
||||||
// External libs
|
// External libs
|
||||||
use getopts::Options;
|
use getopts::Options;
|
||||||
@@ -41,7 +42,7 @@ mod utils;
|
|||||||
|
|
||||||
// namespaces
|
// namespaces
|
||||||
use activity_manager::{ActivityManager, NextActivity};
|
use activity_manager::{ActivityManager, NextActivity};
|
||||||
use filetransfer::{FileTransfer, sftp_transfer::SftpFileTransfer};
|
use filetransfer::{sftp_transfer::SftpFileTransfer, FileTransfer};
|
||||||
use ui::activities::auth_activity::ScpProtocol;
|
use ui::activities::auth_activity::ScpProtocol;
|
||||||
|
|
||||||
/// ### print_usage
|
/// ### print_usage
|
||||||
@@ -132,7 +133,7 @@ fn main() {
|
|||||||
port = portn;
|
port = portn;
|
||||||
protocol = proto;
|
protocol = proto;
|
||||||
username = user;
|
username = user;
|
||||||
},
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
eprintln!("Bad address option: {}", err);
|
eprintln!("Bad address option: {}", err);
|
||||||
print_usage(opts);
|
print_usage(opts);
|
||||||
@@ -152,7 +153,7 @@ fn main() {
|
|||||||
// Get working directory
|
// Get working directory
|
||||||
let wrkdir: PathBuf = match env::current_dir() {
|
let wrkdir: PathBuf = match env::current_dir() {
|
||||||
Ok(dir) => dir,
|
Ok(dir) => dir,
|
||||||
Err(_) => PathBuf::from("/")
|
Err(_) => PathBuf::from("/"),
|
||||||
};
|
};
|
||||||
// Create activity manager
|
// Create activity manager
|
||||||
let mut manager: ActivityManager = match ActivityManager::new(file_transfer, &wrkdir) {
|
let mut manager: ActivityManager = match ActivityManager::new(file_transfer, &wrkdir) {
|
||||||
@@ -165,6 +166,20 @@ fn main() {
|
|||||||
// Initialize client if necessary
|
// Initialize client if necessary
|
||||||
let mut start_activity: NextActivity = NextActivity::Authentication;
|
let mut start_activity: NextActivity = NextActivity::Authentication;
|
||||||
if let Some(address) = address {
|
if let Some(address) = address {
|
||||||
|
// Ask password
|
||||||
|
password = match rpassword::read_password_from_tty(Some("Password: ")) {
|
||||||
|
Ok(p) => {
|
||||||
|
if p.len() > 0 {
|
||||||
|
Some(p)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(_) => {
|
||||||
|
eprintln!("Could not read password from prompt");
|
||||||
|
std::process::exit(255);
|
||||||
|
}
|
||||||
|
};
|
||||||
// In this case the first activity will be FileTransfer
|
// In this case the first activity will be FileTransfer
|
||||||
start_activity = NextActivity::FileTransfer;
|
start_activity = NextActivity::FileTransfer;
|
||||||
manager.set_filetransfer_params(address, port, protocol, username, password);
|
manager.set_filetransfer_params(address, port, protocol, username, password);
|
||||||
|
|||||||
Reference in New Issue
Block a user