summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-04-27 18:46:18 +0200
committerDavid Lönnhager <david.l@mullvad.net>2021-05-17 11:08:50 +0200
commitd478193d76099077cdc4afd3bda5e48ecc6f1a1b (patch)
tree9d7f2ef82b37432d0e5833d85c4c3c2e1d7d7ccb
parent176690bc2e4a4d6c1267552b7f84804392528f19 (diff)
downloadmullvadvpn-d478193d76099077cdc4afd3bda5e48ecc6f1a1b.tar.xz
mullvadvpn-d478193d76099077cdc4afd3bda5e48ecc6f1a1b.zip
Include entry endpoint in 'mullvad relay get'
-rw-r--r--mullvad-cli/src/cmds/relay.rs16
-rw-r--r--mullvad-management-interface/src/types.rs21
-rw-r--r--mullvad-types/src/relay_constraints.rs9
3 files changed, 41 insertions, 5 deletions
diff --git a/mullvad-cli/src/cmds/relay.rs b/mullvad-cli/src/cmds/relay.rs
index 6451097891..245eda9e91 100644
--- a/mullvad-cli/src/cmds/relay.rs
+++ b/mullvad-cli/src/cmds/relay.rs
@@ -2,6 +2,7 @@ use crate::{location, new_rpc_client, Command, Error, Result};
use clap::{value_t, values_t};
use itertools::Itertools;
use std::{
+ fmt::Write,
io::{self, BufRead},
net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr},
str::FromStr,
@@ -733,7 +734,7 @@ impl Relay {
fn format_wireguard_constraints(constraints: Option<&WireguardConstraints>) -> String {
if let Some(constraints) = constraints {
- format!(
+ let mut out = format!(
"{} over {}",
Self::format_port(constraints.port),
Self::format_ip_version(
@@ -742,7 +743,18 @@ impl Relay {
.clone()
.map(|protocol| IpVersion::from_i32(protocol.protocol).unwrap())
)
- )
+ );
+
+ if let Some(ref entry) = constraints.entry_location {
+ write!(
+ &mut out,
+ " (via {})",
+ location::format_location(Some(entry))
+ )
+ .unwrap();
+ }
+
+ out
} else {
"any port over IPv4 or IPv6".to_string()
}
diff --git a/mullvad-management-interface/src/types.rs b/mullvad-management-interface/src/types.rs
index 9530c89a70..7d219e0b4a 100644
--- a/mullvad-management-interface/src/types.rs
+++ b/mullvad-management-interface/src/types.rs
@@ -315,6 +315,25 @@ impl From<IpVersion> for IpVersionConstraint {
}
}
+impl
+ From<
+ mullvad_types::relay_constraints::Constraint<
+ mullvad_types::relay_constraints::LocationConstraint,
+ >,
+ > for RelayLocation
+{
+ fn from(
+ location: mullvad_types::relay_constraints::Constraint<
+ mullvad_types::relay_constraints::LocationConstraint,
+ >,
+ ) -> Self {
+ location
+ .option()
+ .map(RelayLocation::from)
+ .unwrap_or_default()
+ }
+}
+
impl From<mullvad_types::relay_constraints::LocationConstraint> for RelayLocation {
fn from(location: mullvad_types::relay_constraints::LocationConstraint) -> Self {
use mullvad_types::relay_constraints::LocationConstraint;
@@ -457,7 +476,7 @@ impl From<mullvad_types::relay_constraints::RelaySettings> for RelaySettings {
entry_location: constraints
.wireguard_constraints
.entry_location
- .and_then(|constraint| constraint.option().map(RelayLocation::from)),
+ .map(RelayLocation::from),
}),
openvpn_constraints: Some(OpenvpnConstraints {
diff --git a/mullvad-types/src/relay_constraints.rs b/mullvad-types/src/relay_constraints.rs
index 93f775f4e1..075e3b816e 100644
--- a/mullvad-types/src/relay_constraints.rs
+++ b/mullvad-types/src/relay_constraints.rs
@@ -450,8 +450,13 @@ impl fmt::Display for WireguardConstraints {
}
write!(f, " over ")?;
match self.ip_version {
- Constraint::Any => write!(f, "IPv4 or IPv6"),
- Constraint::Only(protocol) => write!(f, "{}", protocol),
+ Constraint::Any => write!(f, "IPv4 or IPv6")?,
+ Constraint::Only(protocol) => write!(f, "{}", protocol)?,
+ }
+ if let Some(Constraint::Only(ref entry)) = self.entry_location {
+ write!(f, " (via {})", entry)
+ } else {
+ Ok(())
}
}
}