1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
mod client;
mod error;
use std::future;
use thrussh_keys::key;
pub use client::*;
pub use error::ClientError;
#[derive(Default)]
pub struct Output {
pub stdout: Vec<u8>,
pub stderr: Vec<u8>,
pub code: Option<u32>,
}
impl Output {
pub fn stdout_string(&self) -> String {
String::from_utf8_lossy(&self.stdout).into()
}
pub fn stderr_string(&self) -> String {
String::from_utf8_lossy(&self.stderr).into()
}
pub fn success(&self) -> bool {
self.code == Some(0)
}
}
#[derive(Default)]
struct Handler {}
impl thrussh::client::Handler for Handler {
type Error = ClientError;
type FutureBool = future::Ready<Result<(Self, bool), Self::Error>>;
type FutureUnit = future::Ready<Result<(Self, thrussh::client::Session), Self::Error>>;
fn finished_bool(self, b: bool) -> Self::FutureBool {
future::ready(Ok((self, b)))
}
fn finished(self, session: thrussh::client::Session) -> Self::FutureUnit {
future::ready(Ok((self, session)))
}
#[allow(unused_variables)]
fn check_server_key(self, server_public_key: &key::PublicKey) -> Self::FutureBool {
self.finished_bool(true)
}
}