diff options
Diffstat (limited to 'mullvad-cli/src')
| -rw-r--r-- | mullvad-cli/src/cmds/bridge.rs | 16 | ||||
| -rw-r--r-- | mullvad-cli/src/cmds/relay.rs | 76 | ||||
| -rw-r--r-- | mullvad-cli/src/cmds/tunnel.rs | 50 | ||||
| -rw-r--r-- | mullvad-cli/src/format.rs | 10 |
4 files changed, 113 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(()) } diff --git a/mullvad-cli/src/format.rs b/mullvad-cli/src/format.rs index 0d55c53173..2938842cef 100644 --- a/mullvad-cli/src/format.rs +++ b/mullvad-cli/src/format.rs @@ -4,6 +4,16 @@ use talpid_types::{ tunnel::ErrorState, }; +#[macro_export] +macro_rules! print_option { + ($value:expr $(,)?) => {{ + println!("{:<4}{:<24}{}", "", "", $value,) + }}; + ($option:expr, $value:expr $(,)?) => {{ + println!("{:<4}{:<24}{}", "", concat!($option, ":"), $value,) + }}; +} + pub fn print_state(state: &TunnelState, verbose: bool) { use TunnelState::*; |
