diff options
author | Alex Auvolat <alex@adnab.me> | 2020-04-12 19:41:19 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2020-04-12 19:41:19 +0200 |
commit | 9f8b3b5a1820f575e6621fd5f4f6cdf47b0a7742 (patch) | |
tree | 3dc1a8b6dd08c0d913a088fc7dc0299be125c8b1 /src/main.rs | |
parent | c788fc9f9e2c9128ea0dd5f28c1bafe8ba3b369c (diff) | |
download | garage-9f8b3b5a1820f575e6621fd5f4f6cdf47b0a7742.tar.gz garage-9f8b3b5a1820f575e6621fd5f4f6cdf47b0a7742.zip |
TLS for command line client
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 619f3422..ea6124b5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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, |