summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSteffen Ernst <steffen.ernst@mullvad.net>2025-02-05 13:36:13 +0100
committerBug Magnet <marco.nikic@mullvad.net>2025-02-18 11:50:41 +0100
commit0f629c6d1158301f6f0314630e1d4f80ecc100ae (patch)
tree7ab079f3c6fa5c49bc77429c1f238a63c210a7c7
parentff1427d2fc62b80b7ec06af6e4c3840d8ca70157 (diff)
downloadmullvadvpn-0f629c6d1158301f6f0314630e1d4f80ecc100ae.tar.xz
mullvadvpn-0f629c6d1158301f6f0314630e1d4f80ecc100ae.zip
Add settings for excludeLocalNetworks
-rw-r--r--ios/MullvadSettings/TunnelSettings.swift9
-rw-r--r--ios/MullvadSettings/TunnelSettingsV6.swift8
-rw-r--r--ios/MullvadSettings/TunnelSettingsV7.swift56
-rw-r--r--ios/MullvadVPN.xcodeproj/project.pbxproj4
4 files changed, 74 insertions, 3 deletions
diff --git a/ios/MullvadSettings/TunnelSettings.swift b/ios/MullvadSettings/TunnelSettings.swift
index 0bc620a3fb..17670bc032 100644
--- a/ios/MullvadSettings/TunnelSettings.swift
+++ b/ios/MullvadSettings/TunnelSettings.swift
@@ -9,7 +9,7 @@
import Foundation
/// Alias to the latest version of the `TunnelSettings`.
-public typealias LatestTunnelSettings = TunnelSettingsV6
+public typealias LatestTunnelSettings = TunnelSettingsV7
/// Protocol all TunnelSettings must adhere to, for upgrade purposes.
public protocol TunnelSettings: Codable, Sendable {
@@ -36,6 +36,9 @@ public enum SchemaVersion: Int, Equatable, Sendable {
/// V5 format with DAITA settings, stored as `TunnelSettingsV6`.
case v6 = 6
+ /// V6 format with Local network sharing, stored as `TunnelSettingsV7`.
+ case v7 = 7
+
var settingsType: any TunnelSettings.Type {
switch self {
case .v1: return TunnelSettingsV1.self
@@ -44,6 +47,7 @@ public enum SchemaVersion: Int, Equatable, Sendable {
case .v4: return TunnelSettingsV4.self
case .v5: return TunnelSettingsV5.self
case .v6: return TunnelSettingsV6.self
+ case .v7: return TunnelSettingsV7.self
}
}
@@ -55,9 +59,10 @@ public enum SchemaVersion: Int, Equatable, Sendable {
case .v4: return .v5
case .v5: return .v6
case .v6: return .v6
+ case .v7: return .v7
}
}
/// Current schema version.
- public static let current = SchemaVersion.v6
+ public static let current = SchemaVersion.v7
}
diff --git a/ios/MullvadSettings/TunnelSettingsV6.swift b/ios/MullvadSettings/TunnelSettingsV6.swift
index 0d130a3ff8..9bfccce2df 100644
--- a/ios/MullvadSettings/TunnelSettingsV6.swift
+++ b/ios/MullvadSettings/TunnelSettingsV6.swift
@@ -45,6 +45,12 @@ public struct TunnelSettingsV6: Codable, Equatable, TunnelSettings, Sendable {
}
public func upgradeToNextVersion() -> any TunnelSettings {
- self
+ TunnelSettingsV7(relayConstraints: relayConstraints,
+ dnsSettings: dnsSettings,
+ wireGuardObfuscation: wireGuardObfuscation,
+ tunnelQuantumResistance: tunnelQuantumResistance,
+ tunnelMultihopState: tunnelMultihopState,
+ daita: daita,
+ localNetworkSharing: false)
}
}
diff --git a/ios/MullvadSettings/TunnelSettingsV7.swift b/ios/MullvadSettings/TunnelSettingsV7.swift
new file mode 100644
index 0000000000..09314d3014
--- /dev/null
+++ b/ios/MullvadSettings/TunnelSettingsV7.swift
@@ -0,0 +1,56 @@
+//
+// TunnelSettingsV6 2.swift
+// MullvadVPN
+//
+// Created by Steffen Ernst on 2025-02-04.
+// Copyright © 2025 Mullvad VPN AB. All rights reserved.
+//
+
+
+import Foundation
+import MullvadTypes
+
+public struct TunnelSettingsV7: Codable, Equatable, TunnelSettings, Sendable {
+ /// Relay constraints.
+ public var relayConstraints: RelayConstraints
+
+ /// DNS settings.
+ public var dnsSettings: DNSSettings
+
+ /// WireGuard obfuscation settings
+ public var wireGuardObfuscation: WireGuardObfuscationSettings
+
+ /// Whether Post Quantum exchanges are enabled.
+ public var tunnelQuantumResistance: TunnelQuantumResistance
+
+ /// Whether Multihop is enabled.
+ public var tunnelMultihopState: MultihopState
+
+ /// DAITA settings.
+ public var daita: DAITASettings
+
+ /// Local networks sharing.
+ public var localNetworkSharing: Bool
+
+ public init(
+ relayConstraints: RelayConstraints = RelayConstraints(),
+ dnsSettings: DNSSettings = DNSSettings(),
+ wireGuardObfuscation: WireGuardObfuscationSettings = WireGuardObfuscationSettings(),
+ tunnelQuantumResistance: TunnelQuantumResistance = .automatic,
+ tunnelMultihopState: MultihopState = .off,
+ daita: DAITASettings = DAITASettings(),
+ localNetworkSharing: Bool = false
+ ) {
+ self.relayConstraints = relayConstraints
+ self.dnsSettings = dnsSettings
+ self.wireGuardObfuscation = wireGuardObfuscation
+ self.tunnelQuantumResistance = tunnelQuantumResistance
+ self.tunnelMultihopState = tunnelMultihopState
+ self.daita = daita
+ self.localNetworkSharing = localNetworkSharing
+ }
+
+ public func upgradeToNextVersion() -> any TunnelSettings {
+ self
+ }
+}
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj
index cc8a72cc14..bfb1ebfd44 100644
--- a/ios/MullvadVPN.xcodeproj/project.pbxproj
+++ b/ios/MullvadVPN.xcodeproj/project.pbxproj
@@ -1064,6 +1064,7 @@
F0FADDEC2BE90AB0000D0B02 /* LaunchArguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F1EF8C2BE8FF0A00CED01D /* LaunchArguments.swift */; };
F910A4312D4A1B41002FF3BB /* InAppPurchaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F910A4302D4A1B3B002FF3BB /* InAppPurchaseCoordinator.swift */; };
F910A43A2D4A283D002FF3BB /* InAppPurchaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F910A4392D4A2839002FF3BB /* InAppPurchaseViewController.swift */; };
+ F910A8572D523812002FF3BB /* TunnelSettingsV7.swift in Sources */ = {isa = PBXBuildFile; fileRef = F910A8562D523812002FF3BB /* TunnelSettingsV7.swift */; };
F95C1C252D3E5E8E00EBE769 /* UIAlertController+InAppPurchase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F95C1C242D3E5E7A00EBE769 /* UIAlertController+InAppPurchase.swift */; };
F910A4012D3FF23A002FF3BB /* View+Modifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = F910A4002D3FF22E002FF3BB /* View+Modifier.swift */; };
F998EFF82D359C4600D88D01 /* SKProduct+Formatting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FD5BEF24238EB300112C88 /* SKProduct+Formatting.swift */; };
@@ -2329,6 +2330,7 @@
F0F316182BF3572B0078DBCF /* RelaySelectorResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelaySelectorResult.swift; sourceTree = "<group>"; };
F0F3161A2BF358590078DBCF /* NoRelaysSatisfyingConstraintsError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NoRelaysSatisfyingConstraintsError.swift; sourceTree = "<group>"; };
F0FBD98E2C4A60CC00EE5323 /* KeyExchangingResultStub.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyExchangingResultStub.swift; sourceTree = "<group>"; };
+ F910A8562D523812002FF3BB /* TunnelSettingsV7.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelSettingsV7.swift; sourceTree = "<group>"; };
F910A4002D3FF22E002FF3BB /* View+Modifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Modifier.swift"; sourceTree = "<group>"; };
F95C1C242D3E5E7A00EBE769 /* UIAlertController+InAppPurchase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIAlertController+InAppPurchase.swift"; sourceTree = "<group>"; };
F910A4302D4A1B3B002FF3BB /* InAppPurchaseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InAppPurchaseCoordinator.swift; sourceTree = "<group>"; };
@@ -3548,6 +3550,7 @@
A93181A02B727ED700E341D2 /* TunnelSettingsV4.swift */,
F0E61CA82BF2911D000C4A95 /* TunnelSettingsV5.swift */,
F0C13FE52C64FB3400BD087D /* TunnelSettingsV6.swift */,
+ F910A8562D523812002FF3BB /* TunnelSettingsV7.swift */,
A988DF252ADE86ED00D807EF /* WireGuardObfuscationSettings.swift */,
);
path = MullvadSettings;
@@ -5799,6 +5802,7 @@
58B2FDDE2AA71D5C003EB5C6 /* Migration.swift in Sources */,
F05769BB2C6661EE00D9778B /* TunnelSettingsStrategy.swift in Sources */,
F0D7FF8F2B31DF5900E0FDE5 /* AccessMethodRepository.swift in Sources */,
+ F910A8572D523812002FF3BB /* TunnelSettingsV7.swift in Sources */,
58B2FDE12AA71D5C003EB5C6 /* TunnelSettingsV1.swift in Sources */,
449872E12B7BBC5400094DDC /* TunnelSettingsUpdate.swift in Sources */,
58B2FDE72AA71D5C003EB5C6 /* SettingsStore.swift in Sources */,