diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2017-10-18 13:09:07 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2017-10-18 14:38:56 +0200 |
| commit | c6f15f80287f142e2af5f3b78faa4365e2f53cca (patch) | |
| tree | 5617a69473ab6fb339074dc06b3b14cbaa448aa1 /mullvad-cli/src | |
| parent | d7a0a68987223f994b6cb30fad79b9454d99def7 (diff) | |
| download | mullvadvpn-c6f15f80287f142e2af5f3b78faa4365e2f53cca.tar.xz mullvadvpn-c6f15f80287f142e2af5f3b78faa4365e2f53cca.zip | |
Make mullvad-cli understand shared secret
Diffstat (limited to 'mullvad-cli/src')
| -rw-r--r-- | mullvad-cli/src/rpc.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/mullvad-cli/src/rpc.rs b/mullvad-cli/src/rpc.rs index 16a23bda94..658d18408e 100644 --- a/mullvad-cli/src/rpc.rs +++ b/mullvad-cli/src/rpc.rs @@ -20,7 +20,7 @@ where T: serde::Serialize, O: for<'de> serde::Deserialize<'de>, { - let address = read_rpc_address().chain_err(|| "Unable to read RPC address")?; + let (address, _shared_secret) = read_rpc_address().chain_err(|| "Unable to read RPC address")?; info!("Using RPC address {}", address); let mut rpc_client = WsIpcClient::new(address).chain_err(|| "Unable to create RPC client")?; rpc_client @@ -41,16 +41,21 @@ lazy_static! { static ref RPC_ADDRESS_FILE_PATH: PathBuf = ::std::env::temp_dir().join(".mullvad_rpc_address"); } -fn read_rpc_address() -> io::Result<String> { +fn read_rpc_address() -> io::Result<(String, String)> { debug!( "Trying to read RPC address at {}", RPC_ADDRESS_FILE_PATH.to_string_lossy() ); let mut file = File::open(&*RPC_ADDRESS_FILE_PATH)?; if is_rpc_file_trusted(file.metadata()?) { - let mut address = String::new(); - file.read_to_string(&mut address)?; - Ok(address) + let mut content = String::new(); + file.read_to_string(&mut content)?; + let mut iter = content.split("\n"); + let address = iter.next().unwrap(); + let shared_secret = iter.next().ok_or_else(|| { + io::Error::new(io::ErrorKind::Other, "No RPC shared secret") + })?; + Ok((address.to_owned(), shared_secret.to_owned())) } else { Err(io::Error::new( io::ErrorKind::Other, |
