summaryrefslogtreecommitdiffhomepage
path: root/mullvad-cli/src
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-05-12 10:37:13 +0200
committerDavid Lönnhager <david.l@mullvad.net>2021-05-12 16:21:53 +0200
commit3cfd917f59494ebd7f9dcb7314b63c8fa5b5b7aa (patch)
tree60ed308995f34a224dcbb2c21066018f14f20c02 /mullvad-cli/src
parent8fac6a4eb3c2b70efa9ac74d6d1acfcbbac7bace (diff)
downloadmullvadvpn-3cfd917f59494ebd7f9dcb7314b63c8fa5b5b7aa.tar.xz
mullvadvpn-3cfd917f59494ebd7f9dcb7314b63c8fa5b5b7aa.zip
Separate DNS options and toggle
Diffstat (limited to 'mullvad-cli/src')
-rw-r--r--mullvad-cli/src/cmds/dns.rs40
1 files changed, 23 insertions, 17 deletions
diff --git a/mullvad-cli/src/cmds/dns.rs b/mullvad-cli/src/cmds/dns.rs
index 91eb7854f6..9ffa0ec09c 100644
--- a/mullvad-cli/src/cmds/dns.rs
+++ b/mullvad-cli/src/cmds/dns.rs
@@ -1,7 +1,7 @@
use crate::{new_rpc_client, Command, Result};
use mullvad_management_interface::types;
-use mullvad_types::settings::DnsOptions;
-use std::convert::TryFrom;
+use mullvad_types::settings::{DnsOptions, DnsState};
+use std::convert::TryInto;
pub struct Dns;
@@ -75,13 +75,14 @@ impl Command for Dns {
impl Dns {
async fn set_default(&self, block_ads: bool, block_trackers: bool) -> Result<()> {
let mut rpc = new_rpc_client().await?;
+ let settings = rpc.get_settings(()).await?.into_inner();
rpc.set_dns_options(types::DnsOptions {
- r#type: Some(types::dns_options::Type::Default(
- types::DefaultDnsOptions {
- block_ads,
- block_trackers,
- },
- )),
+ state: types::dns_options::DnsState::Default as i32,
+ default_options: Some(types::DefaultDnsOptions {
+ block_ads,
+ block_trackers,
+ }),
+ ..settings.tunnel_options.unwrap().dns_options.unwrap()
})
.await?;
println!("Updated DNS settings");
@@ -90,10 +91,13 @@ impl Dns {
async fn set_custom(&self, servers: Option<Vec<String>>) -> Result<()> {
let mut rpc = new_rpc_client().await?;
+ let settings = rpc.get_settings(()).await?.into_inner();
rpc.set_dns_options(types::DnsOptions {
- r#type: Some(types::dns_options::Type::Custom(types::CustomDnsOptions {
+ state: types::dns_options::DnsState::Custom as i32,
+ custom_options: Some(types::CustomDnsOptions {
addresses: servers.unwrap_or_default(),
- })),
+ }),
+ ..settings.tunnel_options.unwrap().dns_options.unwrap()
})
.await?;
println!("Updated DNS settings");
@@ -102,24 +106,26 @@ impl Dns {
async fn get(&self) -> Result<()> {
let mut rpc = new_rpc_client().await?;
- let options = rpc
+ let options: DnsOptions = rpc
.get_settings(())
.await?
.into_inner()
.tunnel_options
.unwrap()
.dns_options
+ .unwrap()
+ .try_into()
.unwrap();
- match DnsOptions::try_from(options).unwrap() {
- DnsOptions::Default(options) => {
+ match options.state {
+ DnsState::Default => {
println!("Custom DNS: no");
- println!("Block ads: {}", options.block_ads);
- println!("Block trackers: {}", options.block_trackers);
+ println!("Block ads: {}", options.default_options.block_ads);
+ println!("Block trackers: {}", options.default_options.block_trackers);
}
- DnsOptions::Custom(options) => {
+ DnsState::Custom => {
println!("Custom DNS: yes\nServers:");
- for server in &options.addresses {
+ for server in &options.custom_options.addresses {
println!("{}", server);
}
}