diff options
| author | David Lönnhager <david.l@mullvad.net> | 2023-11-08 12:57:06 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2023-11-13 10:53:39 +0100 |
| commit | 4575d5e105bf38b4a75abbfd20f431b6bccf5d18 (patch) | |
| tree | 55d05770c2a4362d958fb72e15764a4f9e3c9243 | |
| parent | e67621953939078ac297375fd584e432e848764c (diff) | |
| download | mullvadvpn-4575d5e105bf38b4a75abbfd20f431b6bccf5d18.tar.xz mullvadvpn-4575d5e105bf38b4a75abbfd20f431b6bccf5d18.zip | |
Add relay overrides setting
| -rw-r--r-- | mullvad-types/src/relay_constraints.rs | 19 | ||||
| -rw-r--r-- | mullvad-types/src/settings/mod.rs | 10 |
2 files changed, 25 insertions, 4 deletions
diff --git a/mullvad-types/src/relay_constraints.rs b/mullvad-types/src/relay_constraints.rs index fffc6e03de..219d0940ba 100644 --- a/mullvad-types/src/relay_constraints.rs +++ b/mullvad-types/src/relay_constraints.rs @@ -10,7 +10,12 @@ use crate::{ #[cfg(target_os = "android")] use jnix::{jni::objects::JObject, FromJava, IntoJava, JnixEnv}; use serde::{Deserialize, Serialize}; -use std::{collections::HashSet, fmt, str::FromStr}; +use std::{ + collections::HashSet, + fmt, + net::{Ipv4Addr, Ipv6Addr}, + str::FromStr, +}; use talpid_types::net::{openvpn::ProxySettings, IpVersion, TransportProtocol, TunnelType}; pub trait Match<T> { @@ -991,3 +996,15 @@ pub struct InternalBridgeConstraints { pub ownership: Constraint<Ownership>, pub transport_protocol: Constraint<TransportProtocol>, } + +/// Options to override for a particular relay to use instead of the ones specified in the relay +/// list +#[derive(Debug, Clone, Eq, PartialEq, Deserialize, Serialize)] +pub struct RelayOverride { + /// Hostname for which to override the given options + pub hostname: Hostname, + /// IPv4 address to use instead of the default + pub ipv4_addr_in: Option<Ipv4Addr>, + /// IPv6 address to use instead of the default + pub ipv6_addr_in: Option<Ipv6Addr>, +} diff --git a/mullvad-types/src/settings/mod.rs b/mullvad-types/src/settings/mod.rs index 5978c6a736..2ed2d79394 100644 --- a/mullvad-types/src/settings/mod.rs +++ b/mullvad-types/src/settings/mod.rs @@ -3,7 +3,7 @@ use crate::{ custom_list::CustomListsSettings, relay_constraints::{ BridgeConstraints, BridgeSettings, BridgeState, Constraint, GeographicLocationConstraint, - LocationConstraint, ObfuscationSettings, RelayConstraints, RelaySettings, + LocationConstraint, ObfuscationSettings, RelayConstraints, RelayOverride, RelaySettings, RelaySettingsFormatter, SelectedObfuscation, WireguardConstraints, }, wireguard, @@ -91,6 +91,9 @@ pub struct Settings { /// Options that should be applied to tunnels of a specific type regardless of where the relays /// might be located. pub tunnel_options: TunnelOptions, + /// Overrides for relays + #[cfg_attr(target_os = "android", jnix(skip))] + pub relay_overrides: Vec<RelayOverride>, /// Whether to notify users of beta updates. pub show_beta_releases: bool, /// Split tunneling settings @@ -131,16 +134,17 @@ impl Default for Settings { ..Default::default() }, bridge_state: BridgeState::Auto, + custom_lists: CustomListsSettings::default(), + api_access_methods: access_method::Settings::default(), allow_lan: false, block_when_disconnected: false, auto_connect: false, tunnel_options: TunnelOptions::default(), + relay_overrides: vec![], show_beta_releases: false, #[cfg(windows)] split_tunnel: SplitTunnelSettings::default(), settings_version: CURRENT_SETTINGS_VERSION, - custom_lists: CustomListsSettings::default(), - api_access_methods: access_method::Settings::default(), } } } |
