summaryrefslogtreecommitdiffhomepage
path: root/mullvad-cli/src/cmds
diff options
context:
space:
mode:
Diffstat (limited to 'mullvad-cli/src/cmds')
-rw-r--r--mullvad-cli/src/cmds/bridge.rs16
-rw-r--r--mullvad-cli/src/cmds/relay.rs76
-rw-r--r--mullvad-cli/src/cmds/tunnel.rs50
3 files changed, 103 insertions, 39 deletions
diff --git a/mullvad-cli/src/cmds/bridge.rs b/mullvad-cli/src/cmds/bridge.rs
index 3cc1a95b37..2ee7d9a4f0 100644
--- a/mullvad-cli/src/cmds/bridge.rs
+++ b/mullvad-cli/src/cmds/bridge.rs
@@ -3,8 +3,8 @@ use clap::Subcommand;
use mullvad_management_interface::MullvadProxyClient;
use mullvad_types::{
relay_constraints::{
- BridgeConstraints, BridgeSettings, BridgeState, Constraint, LocationConstraint, Ownership,
- Provider, Providers,
+ BridgeConstraints, BridgeConstraintsFormatter, BridgeSettings, BridgeState, Constraint,
+ LocationConstraint, Ownership, Provider, Providers,
},
relay_list::RelayEndpointData,
};
@@ -279,10 +279,14 @@ impl Bridge {
Self::print_shadowsocks_proxy(&shadowsocks_proxy)
}
},
- BridgeSettings::Normal(constraints) => {
- let mut buf = String::new();
- let _ = constraints.format(&mut buf, &settings.custom_lists);
- println!("Bridge constraints: {buf}")
+ BridgeSettings::Normal(ref constraints) => {
+ println!(
+ "Bridge constraints: {}",
+ BridgeConstraintsFormatter {
+ constraints,
+ custom_lists: &settings.custom_lists
+ }
+ )
}
};
Ok(())
diff --git a/mullvad-cli/src/cmds/relay.rs b/mullvad-cli/src/cmds/relay.rs
index 83f4ad4fdd..290c2cacd0 100644
--- a/mullvad-cli/src/cmds/relay.rs
+++ b/mullvad-cli/src/cmds/relay.rs
@@ -5,9 +5,9 @@ use mullvad_management_interface::MullvadProxyClient;
use mullvad_types::{
location::Location,
relay_constraints::{
- Constraint, GeographicLocationConstraint, LocationConstraint, Match, OpenVpnConstraints,
- Ownership, Provider, Providers, RelayConstraintsUpdate, RelaySettings, RelaySettingsUpdate,
- TransportPort, WireguardConstraints,
+ Constraint, GeographicLocationConstraint, LocationConstraint, LocationConstraintFormatter,
+ Match, OpenVpnConstraints, Ownership, Provider, Providers, RelayConstraintsUpdate,
+ RelaySettings, RelaySettingsUpdate, TransportPort, WireguardConstraints,
},
relay_list::{RelayEndpointData, RelayListCountry},
ConnectionConfig, CustomTunnelEndpoint,
@@ -21,6 +21,7 @@ use talpid_types::net::{
};
use super::{relay_constraints::LocationArgs, BooleanOption};
+use crate::print_option;
#[derive(Subcommand, Debug)]
pub enum Relay {
@@ -214,9 +215,72 @@ impl Relay {
let mut rpc = MullvadProxyClient::new().await?;
let settings = rpc.get_settings().await?;
let relay_settings = settings.relay_settings;
- let mut buf = String::new();
- let _ = relay_settings.format(&mut buf, &settings.custom_lists);
- println!("Current constraints: \n{}", buf);
+
+ match relay_settings {
+ RelaySettings::CustomTunnelEndpoint(endpoint) => {
+ println!("Custom endpoint: {endpoint}")
+ }
+
+ RelaySettings::Normal(constraints) => {
+ println!("Generic constraints");
+
+ print_option!(
+ "Location",
+ constraints
+ .location
+ .as_ref()
+ .map(|location| LocationConstraintFormatter {
+ constraint: location,
+ custom_lists: &settings.custom_lists
+ }),
+ );
+
+ print_option!("Tunnel protocol", constraints.tunnel_protocol,);
+
+ print_option!("Provider(s)", constraints.providers,);
+ print_option!("Ownership", constraints.ownership,);
+
+ println!("OpenVPN constraints");
+
+ match constraints.openvpn_constraints.port {
+ Constraint::Any => {
+ print_option!("Port", "any",);
+ print_option!("Transport", "any",);
+ }
+ Constraint::Only(transport_port) => {
+ print_option!("Port", transport_port.port,);
+ print_option!("Transport", transport_port.protocol,);
+ }
+ }
+
+ println!("WireGuard constraints");
+
+ print_option!("Port", constraints.wireguard_constraints.port,);
+
+ print_option!("IP protocol", constraints.wireguard_constraints.ip_version,);
+
+ print_option!(
+ "Multihop state",
+ if constraints.wireguard_constraints.use_multihop {
+ "enabled"
+ } else {
+ "disabled"
+ },
+ );
+ print_option!(
+ "Multihop entry",
+ constraints
+ .wireguard_constraints
+ .entry_location
+ .as_ref()
+ .map(|location| LocationConstraintFormatter {
+ constraint: location,
+ custom_lists: &settings.custom_lists
+ }),
+ );
+ }
+ }
+
Ok(())
}
diff --git a/mullvad-cli/src/cmds/tunnel.rs b/mullvad-cli/src/cmds/tunnel.rs
index 120fad327d..92e1c89d5c 100644
--- a/mullvad-cli/src/cmds/tunnel.rs
+++ b/mullvad-cli/src/cmds/tunnel.rs
@@ -7,6 +7,7 @@ use mullvad_types::{
};
use super::BooleanOption;
+use crate::print_option;
#[derive(Subcommand, Debug)]
pub enum Tunnel {
@@ -70,10 +71,8 @@ impl Tunnel {
println!("OpenVPN options");
- println!(
- "{:<4}{:<24}{}",
- "",
- "mssfix:",
+ print_option!(
+ "mssfix",
tunnel_options
.openvpn
.mssfix
@@ -83,33 +82,27 @@ impl Tunnel {
println!("WireGuard options");
- println!(
- "{:<4}{:<24}{}",
- "",
- "MTU:",
+ print_option!(
+ "MTU",
tunnel_options
.wireguard
.mtu
.map(|val| val.to_string())
.unwrap_or("unset".to_string()),
);
- println!(
- "{:<4}{:<24}{}",
- "", "Quantum resistance:", tunnel_options.wireguard.quantum_resistant,
+ print_option!(
+ "Quantum resistance",
+ tunnel_options.wireguard.quantum_resistant,
);
let key = rpc.get_wireguard_key().await?;
- println!("{:<4}{:<24}{}", "", "Public key:", key.key,);
- println!(
- "{:<4}{:<24}{}",
- "",
- "",
- format_args!("Created {}", key.created.with_timezone(&chrono::Local)),
- );
- println!(
- "{:<4}{:<24}{}",
- "",
- "Rotation interval:",
+ print_option!("Public key", key.key,);
+ print_option!(format_args!(
+ "Created {}",
+ key.created.with_timezone(&chrono::Local)
+ ),);
+ print_option!(
+ "Rotation interval",
match tunnel_options.wireguard.rotation_interval {
Some(interval) => interval.to_string(),
None => "unset".to_string(),
@@ -118,11 +111,14 @@ impl Tunnel {
println!("Generic options");
- if tunnel_options.generic.enable_ipv6 {
- println!("{:<4}{:<24}on", "", "IPv6:");
- } else {
- println!("{:<4}{:<24}off", "", "IPv6:");
- }
+ print_option!(
+ "IPv6",
+ if tunnel_options.generic.enable_ipv6 {
+ "on"
+ } else {
+ "off"
+ }
+ );
Ok(())
}