diff options
| -rw-r--r-- | mullvad-cli/src/cmds/reset.rs | 19 | ||||
| -rw-r--r-- | mullvad-cli/src/main.rs | 14 | ||||
| -rw-r--r-- | mullvad-daemon/src/settings/mod.rs | 2 |
3 files changed, 30 insertions, 5 deletions
diff --git a/mullvad-cli/src/cmds/reset.rs b/mullvad-cli/src/cmds/reset.rs index 88005c4631..a0ffafa28e 100644 --- a/mullvad-cli/src/cmds/reset.rs +++ b/mullvad-cli/src/cmds/reset.rs @@ -2,8 +2,8 @@ use super::receive_confirmation; use anyhow::Result; use mullvad_management_interface::MullvadProxyClient; -pub async fn handle() -> Result<()> { - if !receive_confirmation("Are you sure you want to disconnect, log out, delete all settings, logs and cache files for the Mullvad VPN system service?", false).await { +pub async fn handle_factory_reset(assume_yes: bool) -> Result<()> { + if !assume_yes && !receive_confirmation("Are you sure you want to disconnect, log out, delete all settings, logs and cache files for the Mullvad VPN system service?", false).await { return Ok(()); } let mut rpc = MullvadProxyClient::new().await?; @@ -12,3 +12,18 @@ pub async fn handle() -> Result<()> { println!("If you're running systemd, to remove all logs, you must use journalctl"); Ok(()) } + +pub async fn handle_settings_reset(assume_yes: bool) -> Result<()> { + if !assume_yes + && !receive_confirmation( + "Are you sure you want to reset all settings to the default?", + false, + ) + .await + { + return Ok(()); + } + let mut rpc = MullvadProxyClient::new().await?; + rpc.reset_settings().await?; + Ok(()) +} diff --git a/mullvad-cli/src/main.rs b/mullvad-cli/src/main.rs index 2f4b727949..aca2774c38 100644 --- a/mullvad-cli/src/main.rs +++ b/mullvad-cli/src/main.rs @@ -129,7 +129,16 @@ enum Cli { }, /// Reset settings, caches, and logs - FactoryReset, + FactoryReset { + #[clap(long, short = 'y', default_value_t = false)] + assume_yes: bool, + }, + + /// Reset settings only, but remain logged in and keep logs and caches + ResetSettings { + #[clap(long, short = 'y', default_value_t = false)] + assume_yes: bool, + }, /// Manage custom lists #[clap(subcommand)] @@ -173,7 +182,8 @@ async fn main() -> Result<()> { Cli::Obfuscation(cmd) => cmd.handle().await, Cli::ApiAccess(cmd) => cmd.handle().await, Cli::Version => version::print().await, - Cli::FactoryReset => reset::handle().await, + Cli::FactoryReset { assume_yes } => reset::handle_factory_reset(assume_yes).await, + Cli::ResetSettings { assume_yes } => reset::handle_settings_reset(assume_yes).await, Cli::Relay(cmd) => cmd.handle().await, Cli::Tunnel(cmd) => cmd.handle().await, Cli::SplitTunnel(cmd) => cmd.handle().await, diff --git a/mullvad-daemon/src/settings/mod.rs b/mullvad-daemon/src/settings/mod.rs index 6e286bd060..ff605dd79b 100644 --- a/mullvad-daemon/src/settings/mod.rs +++ b/mullvad-daemon/src/settings/mod.rs @@ -236,7 +236,7 @@ impl SettingsPersister { Ok(()) } - /// Resets default settings + /// Resets to default settings pub async fn reset(&mut self) -> Result<(), Error> { self.settings = Self::default_settings(); let path = self.path.clone(); |
