summaryrefslogtreecommitdiffhomepage
path: root/mullvad-api
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2024-08-14 13:21:07 +0200
committerDavid Lönnhager <david.l@mullvad.net>2024-08-16 09:13:30 +0200
commit57285fa162fced4bd62ff6bb7b71e1e0ccd42309 (patch)
tree7b39314a6c384b8cce7bc091d0a7d9a99e6cb819 /mullvad-api
parent7b305bf624fe19e783fba8a46edf9fa54ed0d1d0 (diff)
downloadmullvadvpn-57285fa162fced4bd62ff6bb7b71e1e0ccd42309.tar.xz
mullvadvpn-57285fa162fced4bd62ff6bb7b71e1e0ccd42309.zip
Use range types for all port ranges
Breaks backwards compatibility with relays.json (which is acceptable)
Diffstat (limited to 'mullvad-api')
-rw-r--r--mullvad-api/src/relay_list.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/mullvad-api/src/relay_list.rs b/mullvad-api/src/relay_list.rs
index 5bccea9d67..22410549b8 100644
--- a/mullvad-api/src/relay_list.rs
+++ b/mullvad-api/src/relay_list.rs
@@ -10,6 +10,7 @@ use std::{
collections::BTreeMap,
future::Future,
net::{IpAddr, Ipv4Addr, Ipv6Addr},
+ ops::RangeInclusive,
time::Duration,
};
@@ -253,15 +254,28 @@ struct Wireguard {
impl From<&Wireguard> for relay_list::WireguardEndpointData {
fn from(wg: &Wireguard) -> Self {
Self {
- port_ranges: wg.port_ranges.clone(),
+ port_ranges: inclusive_range_from_pair_set(wg.port_ranges.clone()).collect(),
ipv4_gateway: wg.ipv4_gateway,
ipv6_gateway: wg.ipv6_gateway,
- shadowsocks_port_ranges: wg.shadowsocks_port_ranges.clone(),
+ shadowsocks_port_ranges: inclusive_range_from_pair_set(
+ wg.shadowsocks_port_ranges.clone(),
+ )
+ .collect(),
udp2tcp_ports: vec![],
}
}
}
+fn inclusive_range_from_pair_set<T>(
+ set: impl IntoIterator<Item = (T, T)>,
+) -> impl Iterator<Item = RangeInclusive<T>> {
+ set.into_iter().map(inclusive_range_from_pair)
+}
+
+fn inclusive_range_from_pair<T>(pair: (T, T)) -> RangeInclusive<T> {
+ RangeInclusive::new(pair.0, pair.1)
+}
+
impl Wireguard {
/// Consumes `self` and appends all its relays to `countries`.
fn extract_relays(