TLS for command line client

This commit is contained in:
Alex Auvolat
2020-04-12 19:41:19 +02:00
parent c788fc9f9e
commit 9f8b3b5a18
2 changed files with 26 additions and 3 deletions
+24 -1
View File
@@ -27,6 +27,7 @@ use data::*;
use error::Error;
use proto::*;
use rpc_client::RpcClient;
use server::TlsConfig;
#[derive(StructOpt, Debug)]
#[structopt(name = "garage")]
@@ -35,6 +36,13 @@ pub struct Opt {
#[structopt(short = "h", long = "rpc-host", default_value = "127.0.0.1:3901")]
rpc_host: SocketAddr,
#[structopt(long="ca-cert")]
ca_cert: Option<String>,
#[structopt(long="client-cert")]
client_cert: Option<String>,
#[structopt(long="client-key")]
client_key: Option<String>,
#[structopt(subcommand)]
cmd: Command,
}
@@ -77,7 +85,22 @@ pub struct ConfigureOpt {
async fn main() {
let opt = Opt::from_args();
let rpc_cli = RpcClient::new(&None).expect("Could not create RPC client");
let tls_config = match (opt.ca_cert, opt.client_cert, opt.client_key) {
(Some(ca_cert), Some(client_cert), Some(client_key)) => {
Some(TlsConfig{
ca_cert,
node_cert: client_cert,
node_key: client_key,
})
}
(None, None, None) => None,
_ => {
eprintln!("Missing one of: --ca-cert, --node-cert, --node-key. Not using TLS.");
None
}
};
let rpc_cli = RpcClient::new(&tls_config).expect("Could not create RPC client");
let resp = match opt.cmd {
Command::Server(server_opt) => server::run_server(server_opt.config_file).await,