diff options
| author | David Lönnhager <david.l@mullvad.net> | 2024-08-14 13:21:07 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2024-08-16 09:13:30 +0200 |
| commit | 57285fa162fced4bd62ff6bb7b71e1e0ccd42309 (patch) | |
| tree | 7b39314a6c384b8cce7bc091d0a7d9a99e6cb819 /mullvad-api | |
| parent | 7b305bf624fe19e783fba8a46edf9fa54ed0d1d0 (diff) | |
| download | mullvadvpn-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.rs | 18 |
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( |
