diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-06-15 10:07:48 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-06-18 10:24:52 +0200 |
| commit | 36c03bf406b601628979a33fcedb69c85f2db59f (patch) | |
| tree | 8ba3e7339c23d75b26506b48dfa9b70b142e2f07 | |
| parent | 2749175102717c74ff945c49302cef8a1ac00bad (diff) | |
| download | mullvadvpn-36c03bf406b601628979a33fcedb69c85f2db59f.tar.xz mullvadvpn-36c03bf406b601628979a33fcedb69c85f2db59f.zip | |
Add WireGuard data to settings struct
| -rw-r--r-- | mullvad-daemon/src/settings.rs | 7 | ||||
| -rw-r--r-- | mullvad-types/src/settings/mod.rs | 16 | ||||
| -rw-r--r-- | mullvad-types/src/wireguard.rs | 4 |
3 files changed, 24 insertions, 3 deletions
diff --git a/mullvad-daemon/src/settings.rs b/mullvad-daemon/src/settings.rs index 7862e21cd6..d8e2e9a465 100644 --- a/mullvad-daemon/src/settings.rs +++ b/mullvad-daemon/src/settings.rs @@ -4,7 +4,7 @@ use log::{debug, error, info}; use mullvad_types::{ relay_constraints::{BridgeSettings, BridgeState, RelaySettingsUpdate}, settings::{DnsOptions, Settings}, - wireguard::RotationInterval, + wireguard::{RotationInterval, WireguardData}, }; use std::{ ops::Deref, @@ -176,6 +176,11 @@ impl SettingsPersister { self.update(should_save).await } + pub async fn set_wireguard(&mut self, wireguard: Option<WireguardData>) -> Result<bool, Error> { + let should_save = self.settings.set_wireguard(wireguard); + self.update(should_save).await + } + pub async fn update_relay_settings( &mut self, update: RelaySettingsUpdate, diff --git a/mullvad-types/src/settings/mod.rs b/mullvad-types/src/settings/mod.rs index 0430f530ea..faddb9ad0c 100644 --- a/mullvad-types/src/settings/mod.rs +++ b/mullvad-types/src/settings/mod.rs @@ -38,6 +38,8 @@ pub enum Error { #[cfg_attr(target_os = "android", jnix(package = "net.mullvad.mullvadvpn.model"))] pub struct Settings { account_token: Option<String>, + #[cfg_attr(target_os = "android", jnix(skip))] + wireguard: Option<wireguard::WireguardData>, relay_settings: RelaySettings, #[cfg_attr(target_os = "android", jnix(skip))] pub bridge_settings: BridgeSettings, @@ -65,6 +67,7 @@ impl Default for Settings { fn default() -> Self { Settings { account_token: None, + wireguard: None, relay_settings: RelaySettings::Normal(RelayConstraints { location: Constraint::Only(LocationConstraint::Country("se".to_owned())), ..Default::default() @@ -120,6 +123,19 @@ impl Settings { } } + pub fn get_wireguard(&self) -> Option<wireguard::WireguardData> { + self.wireguard.clone() + } + + pub fn set_wireguard(&mut self, wireguard: Option<wireguard::WireguardData>) -> bool { + if wireguard != self.wireguard { + self.wireguard = wireguard; + true + } else { + false + } + } + pub fn get_relay_settings(&self) -> RelaySettings { self.relay_settings.clone() } diff --git a/mullvad-types/src/wireguard.rs b/mullvad-types/src/wireguard.rs index cbe05363ec..2991eb1a1d 100644 --- a/mullvad-types/src/wireguard.rs +++ b/mullvad-types/src/wireguard.rs @@ -14,7 +14,7 @@ pub const DEFAULT_ROTATION_INTERVAL: Duration = if cfg!(target_os = "android") { }; /// Contains account specific wireguard data -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct WireguardData { pub private_key: wireguard::PrivateKey, pub addresses: AssociatedAddresses, @@ -140,7 +140,7 @@ pub struct PublicKey { /// Contains a pair of local link addresses that are paired with a specific wireguard /// public/private keypair. -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)] pub struct AssociatedAddresses { pub ipv4_address: ipnetwork::Ipv4Network, pub ipv6_address: ipnetwork::Ipv6Network, |
