summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarkus Pettersson <markus.pettersson@mullvad.net>2024-04-08 11:35:40 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2024-04-08 12:09:12 +0200
commitabd86d04352fb6e4f8e089cf45109394680bd41f (patch)
tree3f5b26aa675dcb5df201e418c400907ae5ee944c
parent631dcd69a3d9ff18e97e85597e6e559f2a727d6f (diff)
downloadmullvadvpn-abd86d04352fb6e4f8e089cf45109394680bd41f.tar.xz
mullvadvpn-abd86d04352fb6e4f8e089cf45109394680bd41f.zip
Refactor Shadowsocks bridge detailing function
-rw-r--r--mullvad-relay-selector/src/relay_selector/detailer.rs26
-rw-r--r--mullvad-relay-selector/src/relay_selector/helpers.rs29
-rw-r--r--mullvad-relay-selector/src/relay_selector/mod.rs2
3 files changed, 29 insertions, 28 deletions
diff --git a/mullvad-relay-selector/src/relay_selector/detailer.rs b/mullvad-relay-selector/src/relay_selector/detailer.rs
index 8fa36f5434..807903eb39 100644
--- a/mullvad-relay-selector/src/relay_selector/detailer.rs
+++ b/mullvad-relay-selector/src/relay_selector/detailer.rs
@@ -15,11 +15,13 @@ use mullvad_types::{
endpoint::MullvadWireguardEndpoint,
relay_constraints::TransportPort,
relay_list::{
- OpenVpnEndpoint, OpenVpnEndpointData, Relay, RelayEndpointData, WireguardEndpointData,
+ BridgeEndpointData, OpenVpnEndpoint, OpenVpnEndpointData, Relay, RelayEndpointData,
+ WireguardEndpointData,
},
};
use talpid_types::net::{
all_of_the_internet,
+ proxy::CustomProxy,
wireguard::{PeerConfig, PublicKey},
Endpoint, IpVersion, TransportProtocol,
};
@@ -293,3 +295,25 @@ fn compatible_openvpn_port_combo(
},
}
}
+
+/// Picks a random bridge from a relay.
+pub fn bridge_endpoint(data: &BridgeEndpointData, relay: &Relay) -> Option<CustomProxy> {
+ use rand::seq::SliceRandom;
+ if relay.endpoint_data != RelayEndpointData::Bridge {
+ return None;
+ }
+ data.shadowsocks
+ .choose(&mut rand::thread_rng())
+ .inspect(|shadowsocks_endpoint| {
+ log::info!(
+ "Selected Shadowsocks bridge {} at {}:{}/{}",
+ relay.hostname,
+ relay.ipv4_addr_in,
+ shadowsocks_endpoint.port,
+ shadowsocks_endpoint.protocol
+ );
+ })
+ .map(|shadowsocks_endpoint| {
+ shadowsocks_endpoint.to_proxy_settings(relay.ipv4_addr_in.into())
+ })
+}
diff --git a/mullvad-relay-selector/src/relay_selector/helpers.rs b/mullvad-relay-selector/src/relay_selector/helpers.rs
index f5f374ea28..e27a736845 100644
--- a/mullvad-relay-selector/src/relay_selector/helpers.rs
+++ b/mullvad-relay-selector/src/relay_selector/helpers.rs
@@ -3,13 +3,11 @@
use std::net::SocketAddr;
use mullvad_types::{
- constraints::Constraint,
- endpoint::MullvadWireguardEndpoint,
- relay_constraints::Udp2TcpObfuscationSettings,
- relay_list::{BridgeEndpointData, Relay, RelayEndpointData},
+ constraints::Constraint, endpoint::MullvadWireguardEndpoint,
+ relay_constraints::Udp2TcpObfuscationSettings, relay_list::Relay,
};
use rand::{seq::SliceRandom, thread_rng, Rng};
-use talpid_types::net::{obfuscation::ObfuscatorConfig, proxy::CustomProxy};
+use talpid_types::net::obfuscation::ObfuscatorConfig;
use crate::SelectedObfuscator;
@@ -59,27 +57,6 @@ pub fn pick_random_relay_weighted<RelayType>(
}
}
-/// Picks a random bridge from a relay.
-pub fn pick_random_bridge(data: &BridgeEndpointData, relay: &Relay) -> Option<CustomProxy> {
- if relay.endpoint_data != RelayEndpointData::Bridge {
- return None;
- }
- data.shadowsocks
- .choose(&mut rand::thread_rng())
- .inspect(|shadowsocks_endpoint| {
- log::info!(
- "Selected Shadowsocks bridge {} at {}:{}/{}",
- relay.hostname,
- relay.ipv4_addr_in,
- shadowsocks_endpoint.port,
- shadowsocks_endpoint.protocol
- );
- })
- .map(|shadowsocks_endpoint| {
- shadowsocks_endpoint.to_proxy_settings(relay.ipv4_addr_in.into())
- })
-}
-
pub fn get_udp2tcp_obfuscator(
obfuscation_settings_constraint: &Constraint<Udp2TcpObfuscationSettings>,
udp2tcp_ports: &[u16],
diff --git a/mullvad-relay-selector/src/relay_selector/mod.rs b/mullvad-relay-selector/src/relay_selector/mod.rs
index 71833e968e..fbf3ac1c4b 100644
--- a/mullvad-relay-selector/src/relay_selector/mod.rs
+++ b/mullvad-relay-selector/src/relay_selector/mod.rs
@@ -953,7 +953,7 @@ impl RelaySelector {
.cloned()
.ok_or(Error::NoRelay),
}?;
- let endpoint = helpers::pick_random_bridge(bridge_data, &bridge).ok_or(Error::NoBridge)?;
+ let endpoint = detailer::bridge_endpoint(bridge_data, &bridge).ok_or(Error::NoBridge)?;
Ok((endpoint, bridge))
}