diff options
| author | Steffen Ernst <steffen.ernst@mullvad.net> | 2025-02-05 13:36:13 +0100 |
|---|---|---|
| committer | Bug Magnet <marco.nikic@mullvad.net> | 2025-02-18 11:50:41 +0100 |
| commit | 0f629c6d1158301f6f0314630e1d4f80ecc100ae (patch) | |
| tree | 7ab079f3c6fa5c49bc77429c1f238a63c210a7c7 | |
| parent | ff1427d2fc62b80b7ec06af6e4c3840d8ca70157 (diff) | |
| download | mullvadvpn-0f629c6d1158301f6f0314630e1d4f80ecc100ae.tar.xz mullvadvpn-0f629c6d1158301f6f0314630e1d4f80ecc100ae.zip | |
Add settings for excludeLocalNetworks
| -rw-r--r-- | ios/MullvadSettings/TunnelSettings.swift | 9 | ||||
| -rw-r--r-- | ios/MullvadSettings/TunnelSettingsV6.swift | 8 | ||||
| -rw-r--r-- | ios/MullvadSettings/TunnelSettingsV7.swift | 56 | ||||
| -rw-r--r-- | ios/MullvadVPN.xcodeproj/project.pbxproj | 4 |
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 */, |
