summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2019-11-27 16:37:40 +0100
committerLinus Färnstrand <linus@mullvad.net>2019-11-27 17:22:42 +0100
commit6defee06f4d5ac084b30491d2f688eec0e7402a8 (patch)
tree9974d80aac45d59d8c9aa141d7f1da0e47c73d85
parentcbe9f4c9fb96e92fcdad6812045772525b363aea (diff)
downloadmullvadvpn-6defee06f4d5ac084b30491d2f688eec0e7402a8.tar.xz
mullvadvpn-6defee06f4d5ac084b30491d2f688eec0e7402a8.zip
Add reconnect to cli
-rw-r--r--mullvad-cli/src/cmds/mod.rs20
-rw-r--r--mullvad-cli/src/cmds/reconnect.rs22
-rw-r--r--mullvad-ipc-client/src/lib.rs4
3 files changed, 38 insertions, 8 deletions
diff --git a/mullvad-cli/src/cmds/mod.rs b/mullvad-cli/src/cmds/mod.rs
index 8caf26eac5..a26b64be74 100644
--- a/mullvad-cli/src/cmds/mod.rs
+++ b/mullvad-cli/src/cmds/mod.rs
@@ -7,30 +7,33 @@ pub use self::account::Account;
mod auto_connect;
pub use self::auto_connect::AutoConnect;
+mod block_when_disconnected;
+pub use self::block_when_disconnected::BlockWhenDisconnected;
+
mod bridge;
pub use self::bridge::Bridge;
-mod status;
-pub use self::status::Status;
-
mod connect;
pub use self::connect::Connect;
mod disconnect;
pub use self::disconnect::Disconnect;
-mod block_when_disconnected;
-pub use self::block_when_disconnected::BlockWhenDisconnected;
+mod lan;
+pub use self::lan::Lan;
+
+mod reconnect;
+pub use self::reconnect::Reconnect;
mod relay;
pub use self::relay::Relay;
-mod lan;
-pub use self::lan::Lan;
-
mod reset;
pub use self::reset::Reset;
+mod status;
+pub use self::status::Status;
+
mod tunnel;
pub use self::tunnel::Tunnel;
@@ -46,6 +49,7 @@ pub fn get_commands() -> HashMap<&'static str, Box<dyn Command>> {
Box::new(Bridge),
Box::new(Connect),
Box::new(Disconnect),
+ Box::new(Reconnect),
Box::new(Lan),
Box::new(Relay),
Box::new(Reset),
diff --git a/mullvad-cli/src/cmds/reconnect.rs b/mullvad-cli/src/cmds/reconnect.rs
new file mode 100644
index 0000000000..0cc7f6bfea
--- /dev/null
+++ b/mullvad-cli/src/cmds/reconnect.rs
@@ -0,0 +1,22 @@
+use crate::{new_rpc_client, Command, Result};
+use talpid_types::ErrorExt;
+
+pub struct Reconnect;
+
+impl Command for Reconnect {
+ fn name(&self) -> &'static str {
+ "reconnect"
+ }
+
+ fn clap_subcommand(&self) -> clap::App<'static, 'static> {
+ clap::SubCommand::with_name(self.name()).about("Command the client to reconnect")
+ }
+
+ fn run(&self, _matches: &clap::ArgMatches<'_>) -> Result<()> {
+ let mut rpc = new_rpc_client()?;
+ if let Err(e) = rpc.reconnect() {
+ eprintln!("{}", e.display_chain());
+ }
+ Ok(())
+ }
+}
diff --git a/mullvad-ipc-client/src/lib.rs b/mullvad-ipc-client/src/lib.rs
index 84eacb5dd7..dad3be309d 100644
--- a/mullvad-ipc-client/src/lib.rs
+++ b/mullvad-ipc-client/src/lib.rs
@@ -99,6 +99,10 @@ impl DaemonRpcClient {
self.call("disconnect", &NO_ARGS)
}
+ pub fn reconnect(&mut self) -> Result<()> {
+ self.call("reconnect", &NO_ARGS)
+ }
+
pub fn create_new_account(&mut self) -> Result<()> {
self.call("create_new_account", &NO_ARGS)
}