diff options
| author | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2023-11-17 15:15:41 +0100 |
|---|---|---|
| committer | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2023-11-23 15:14:21 +0100 |
| commit | fc1fa55b697cfd00a20345d9ded123483cf366d6 (patch) | |
| tree | 5811053f7c0ced350a29bc36eb50588baf866d2f /mullvad-cli/src/cmds | |
| parent | a897d8c5981fe0bf02ec0c085b381ce5c2fadc57 (diff) | |
| download | mullvadvpn-fc1fa55b697cfd00a20345d9ded123483cf366d6.tar.xz mullvadvpn-fc1fa55b697cfd00a20345d9ded123483cf366d6.zip | |
Add `mullvad debug block-connection` command
Diffstat (limited to 'mullvad-cli/src/cmds')
| -rw-r--r-- | mullvad-cli/src/cmds/debug.rs | 40 | ||||
| -rw-r--r-- | mullvad-cli/src/cmds/mod.rs | 4 |
2 files changed, 42 insertions, 2 deletions
diff --git a/mullvad-cli/src/cmds/debug.rs b/mullvad-cli/src/cmds/debug.rs new file mode 100644 index 0000000000..47db11ee05 --- /dev/null +++ b/mullvad-cli/src/cmds/debug.rs @@ -0,0 +1,40 @@ +use anyhow::Result; +use mullvad_management_interface::MullvadProxyClient; +use mullvad_types::relay_constraints::{Constraint, RelayConstraints, RelaySettings}; + +#[derive(clap::Subcommand, Debug)] +pub enum DebugCommands { + /// Block all internet connection by setting an invalid relay constraint. + BlockConnection, +} + +impl DebugCommands { + pub async fn handle(self) -> Result<()> { + match self { + DebugCommands::BlockConnection => { + let mut rpc = MullvadProxyClient::new().await?; + let settings = rpc.get_settings().await?; + + let relay_settings = settings.get_relay_settings(); + let mut constraints = match relay_settings { + RelaySettings::Normal(normal) => normal, + RelaySettings::CustomTunnelEndpoint(_custom) => { + println!("Removing custom relay settings"); + RelayConstraints::default() + } + }; + constraints.location = Constraint::Only( + mullvad_types::relay_constraints::LocationConstraint::Location( + mullvad_types::relay_constraints::GeographicLocationConstraint::Country( + "xx".into(), + ), + ), + ); + rpc.set_relay_settings(RelaySettings::Normal(constraints)) + .await?; + eprintln!("WARNING: ENTERED BLOCKED MODE"); + Ok(()) + } + } + } +} diff --git a/mullvad-cli/src/cmds/mod.rs b/mullvad-cli/src/cmds/mod.rs index 7944e8bdc0..1984f1493b 100644 --- a/mullvad-cli/src/cmds/mod.rs +++ b/mullvad-cli/src/cmds/mod.rs @@ -1,6 +1,5 @@ use clap::builder::{PossibleValuesParser, TypedValueParser, ValueParser}; -use std::io::stdin; -use std::ops::Deref; +use std::{io::stdin, ops::Deref}; pub mod account; pub mod api_access; @@ -8,6 +7,7 @@ pub mod auto_connect; pub mod beta_program; pub mod bridge; pub mod custom_list; +pub mod debug; pub mod dns; pub mod import_settings; pub mod lan; |
