summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2023-09-20 09:41:48 +0200
committerBug Magnet <marco.nikic@mullvad.net>2023-09-20 09:41:48 +0200
commitd9fb71a84bcab8898a4e310f513bc2e15921b22d (patch)
treefbbac46d580796fbd288447faa2af2edba773f23
parentf600fd57797063054e643a53b6a70d31a7598589 (diff)
parent47e30d070034c222afb922016ba6f7618d6918ae (diff)
downloadmullvadvpn-d9fb71a84bcab8898a4e310f513bc2e15921b22d.tar.xz
mullvadvpn-d9fb71a84bcab8898a4e310f513bc2e15921b22d.zip
Merge branch 'extract-settings'
-rw-r--r--ios/MullvadVPN.xcodeproj/project.pbxproj502
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadREST.xcscheme2
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPN.xcscheme2
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme2
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNTests.xcscheme2
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/Operations.xcscheme2
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/OperationsTests.xcscheme2
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/PacketTunnel.xcscheme9
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/RelaySelector.xcscheme2
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/TunnelProviderMessaging.xcscheme2
-rw-r--r--ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/WireGuardGoBridge.xcscheme2
-rw-r--r--ios/MullvadVPN/AppDelegate.swift1
-rw-r--r--ios/MullvadVPN/Containers/Root/RootConfiguration.swift1
-rw-r--r--ios/MullvadVPN/Coordinators/ApplicationCoordinator.swift1
-rw-r--r--ios/MullvadVPN/Notifications/Notification Providers/AccountExpiryInAppNotificationProvider.swift1
-rw-r--r--ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift1
-rw-r--r--ios/MullvadVPN/Notifications/Notification Providers/RegisteredDeviceInAppNotificationProvider.swift1
-rw-r--r--ios/MullvadVPN/SceneDelegate.swift1
-rw-r--r--ios/MullvadVPN/SettingsManager/StoredDeviceData.swift49
-rw-r--r--ios/MullvadVPN/SettingsManager/TunnelSettingsV2.swift37
-rw-r--r--ios/MullvadVPN/SimulatorTunnelProvider/SimulatorTunnelProviderHost.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/LoadTunnelConfigurationOperation.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/RedeemVoucherOperation.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/RotateKeyOperation.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/SetAccountOperation.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelBlockObserver.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelInteractor.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelManager.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelObserver.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/UpdateAccountDataOperation.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/UpdateDeviceDataOperation.swift1
-rw-r--r--ios/MullvadVPN/TunnelManager/WgKeyRotation.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Account/AccountInteractor.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Account/AccountViewController.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Login/LoginInteractor.swift1
-rw-r--r--ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeInteractor.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Preferences/PreferencesDataSource.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Preferences/PreferencesInteractor.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Preferences/PreferencesViewModel.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Settings/SettingsInteractor.swift1
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/TunnelViewControllerInteractor.swift1
-rw-r--r--ios/MullvadVPNTests/DeviceCheckOperationTests.swift1
-rw-r--r--ios/MullvadVPNTests/WgKeyRotationTests.swift1
-rw-r--r--ios/PacketTunnel/DeviceCheck/DeviceCheckOperation.swift1
-rw-r--r--ios/PacketTunnel/DeviceCheck/DeviceStateAccessor.swift1
-rw-r--r--ios/PacketTunnel/DeviceCheck/DeviceStateAccessorProtocol.swift1
-rw-r--r--ios/PacketTunnel/PacketTunnelConfiguration.swift1
-rw-r--r--ios/PacketTunnel/PacketTunnelProvider.swift1
-rw-r--r--ios/Settings/DNSSettings.swift (renamed from ios/MullvadVPN/SettingsManager/DNSSettings.swift)42
-rw-r--r--ios/Settings/DeviceState.swift (renamed from ios/MullvadVPN/SettingsManager/DeviceState.swift)8
-rw-r--r--ios/Settings/KeychainSettingsStore.swift (renamed from ios/MullvadVPN/SettingsManager/KeychainSettingsStore.swift)14
-rw-r--r--ios/Settings/Migration.swift (renamed from ios/MullvadVPN/SettingsManager/Migration.swift)2
-rw-r--r--ios/Settings/MigrationManager.swift (renamed from ios/MullvadVPN/MigrationManager/MigrationManager.swift)18
-rw-r--r--ios/Settings/Settings.h19
-rw-r--r--ios/Settings/SettingsManager.swift (renamed from ios/MullvadVPN/SettingsManager/SettingsManager.swift)50
-rw-r--r--ios/Settings/SettingsParser.swift (renamed from ios/MullvadVPN/SettingsManager/SettingsParser.swift)14
-rw-r--r--ios/Settings/SettingsStore.swift (renamed from ios/MullvadVPN/SettingsManager/SettingsStore.swift)4
-rw-r--r--ios/Settings/StoredAccountData.swift (renamed from ios/MullvadVPN/SettingsManager/StoredAccountData.swift)18
-rw-r--r--ios/Settings/StoredDeviceData.swift67
-rw-r--r--ios/Settings/TunnelSettings.swift (renamed from ios/MullvadVPN/SettingsManager/TunnelSettings.swift)6
-rw-r--r--ios/Settings/TunnelSettingsV1.swift (renamed from ios/MullvadVPN/SettingsManager/TunnelSettingsV1.swift)34
-rw-r--r--ios/Settings/TunnelSettingsV2.swift57
63 files changed, 692 insertions, 312 deletions
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj
index 03de4dd1ab..3b3c0aaebf 100644
--- a/ios/MullvadVPN.xcodeproj/project.pbxproj
+++ b/ios/MullvadVPN.xcodeproj/project.pbxproj
@@ -18,12 +18,6 @@
063F027E2902B6EB001FA09F /* RelayCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5820675A26E6576800655B05 /* RelayCache.swift */; };
063F027F2902B6EB001FA09F /* CachedRelays.swift in Sources */ = {isa = PBXBuildFile; fileRef = 585DA87626B024A600B8C587 /* CachedRelays.swift */; };
063F028F2902BD8C001FA09F /* relays.json in Resources */ = {isa = PBXBuildFile; fileRef = 58F3C0A524A50155003E76BE /* relays.json */; };
- 06410DFE292CE18F00AFC18C /* KeychainSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410DFD292CE18F00AFC18C /* KeychainSettingsStore.swift */; };
- 06410DFF292CF16C00AFC18C /* KeychainSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410DFD292CE18F00AFC18C /* KeychainSettingsStore.swift */; };
- 06410E04292D0F7100AFC18C /* SettingsParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410E03292D0F7100AFC18C /* SettingsParser.swift */; };
- 06410E05292D0FC000AFC18C /* SettingsParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410E03292D0F7100AFC18C /* SettingsParser.swift */; };
- 06410E07292D108E00AFC18C /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410E06292D108E00AFC18C /* SettingsStore.swift */; };
- 06410E08292D117800AFC18C /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410E06292D108E00AFC18C /* SettingsStore.swift */; };
06799ACE28F98E1D00ACD94E /* MullvadREST.h in Headers */ = {isa = PBXBuildFile; fileRef = 06799ABE28F98E1D00ACD94E /* MullvadREST.h */; settings = {ATTRIBUTES = (Public, ); }; };
06799AD128F98E1D00ACD94E /* MullvadREST.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06799ABC28F98E1D00ACD94E /* MullvadREST.framework */; };
06799AD228F98E1D00ACD94E /* MullvadREST.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 06799ABC28F98E1D00ACD94E /* MullvadREST.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -49,8 +43,6 @@
06799AF328F98E4800ACD94E /* RESTAuthenticationProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FAE67028F83CA40033DD93 /* RESTAuthenticationProxy.swift */; };
06799AF428F98E4800ACD94E /* RESTAuthorization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FAE67928F83CA50033DD93 /* RESTAuthorization.swift */; };
06799AFC28F98EE300ACD94E /* AddressCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06AC114128F8413A0037AF9A /* AddressCache.swift */; };
- 068CE5742927B7A400A068BB /* Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068CE5732927B7A400A068BB /* Migration.swift */; };
- 068CE5782927BE4800A068BB /* Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068CE5732927B7A400A068BB /* Migration.swift */; };
0697D6E728F01513007A9E99 /* TransportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0697D6E628F01513007A9E99 /* TransportMonitor.swift */; };
06AC116228F94C450037AF9A /* ApplicationConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58BFA5CB22A7CE1F00A6173D /* ApplicationConfiguration.swift */; };
5803B4B02940A47300C23744 /* TunnelConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5803B4AF2940A47300C23744 /* TunnelConfiguration.swift */; };
@@ -65,8 +57,6 @@
580810E92A30E17300B74552 /* DeviceCheckRemoteServiceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580810E72A30E15500B74552 /* DeviceCheckRemoteServiceProtocol.swift */; };
580909D32876D09A0078138D /* RevokedDeviceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580909D22876D09A0078138D /* RevokedDeviceViewController.swift */; };
58092E542A8B832E00C3CC72 /* TunnelMonitorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58092E532A8B832E00C3CC72 /* TunnelMonitorTests.swift */; };
- 580F8B8328197881002E0998 /* TunnelSettingsV2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580F8B8228197881002E0998 /* TunnelSettingsV2.swift */; };
- 580F8B8428197884002E0998 /* TunnelSettingsV2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580F8B8228197881002E0998 /* TunnelSettingsV2.swift */; };
5811DE50239014550011EB53 /* NEVPNStatus+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5811DE4F239014550011EB53 /* NEVPNStatus+Debug.swift */; };
58138E61294871C600684F0C /* DeviceDataThrottling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58138E60294871C600684F0C /* DeviceDataThrottling.swift */; };
58153071294CBE8B00D1702E /* MullvadREST.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06799ABC28F98E1D00ACD94E /* MullvadREST.framework */; };
@@ -144,7 +134,6 @@
58727283265D173C00F315B2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 58727282265D173C00F315B2 /* LaunchScreen.storyboard */; };
587425C12299833500CA2045 /* RootContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587425C02299833500CA2045 /* RootContainerViewController.swift */; };
5875960A26F371FC00BF6711 /* Tunnel+Messaging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5875960926F371FC00BF6711 /* Tunnel+Messaging.swift */; };
- 5877D70F282137E8002FCFC7 /* SettingsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FF2C02281BDE02009EF542 /* SettingsManager.swift */; };
5877F94E2A0A59AA0052D9E9 /* NotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5877F94D2A0A59AA0052D9E9 /* NotificationResponse.swift */; };
5878A26F2907E7E00096FC88 /* ProblemReportInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5878A26E2907E7E00096FC88 /* ProblemReportInteractor.swift */; };
5878A27129091CF20096FC88 /* AccountInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5878A27029091CF20096FC88 /* AccountInteractor.swift */; };
@@ -157,8 +146,6 @@
5878F50029CDA742003D4BE2 /* UIView+AutoLayoutBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5878F4FF29CDA742003D4BE2 /* UIView+AutoLayoutBuilder.swift */; };
587988C728A2A01F00E3DF54 /* AccountDataThrottling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587988C628A2A01F00E3DF54 /* AccountDataThrottling.swift */; };
587A01FC23F1F0BE00B68763 /* SimulatorTunnelProviderHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587A01FB23F1F0BE00B68763 /* SimulatorTunnelProviderHost.swift */; };
- 587AD7C623421D7000E93A53 /* TunnelSettingsV1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587AD7C523421D7000E93A53 /* TunnelSettingsV1.swift */; };
- 587AD7C723421D8600E93A53 /* TunnelSettingsV1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587AD7C523421D7000E93A53 /* TunnelSettingsV1.swift */; };
587B7536266528A200DEF7E9 /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587B7535266528A200DEF7E9 /* NotificationManager.swift */; };
587B753B2666467500DEF7E9 /* NotificationBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587B753A2666467500DEF7E9 /* NotificationBannerView.swift */; };
587B753D2666468F00DEF7E9 /* NotificationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587B753C2666468F00DEF7E9 /* NotificationController.swift */; };
@@ -181,17 +168,13 @@
58907D9524D17B4E00CFC3F5 /* DisconnectSplitButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58907D9424D17B4E00CFC3F5 /* DisconnectSplitButton.swift */; };
58915D632A25F8400066445B /* DeviceCheckOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58915D622A25F8400066445B /* DeviceCheckOperationTests.swift */; };
58915D642A25F8B30066445B /* DeviceCheckOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FDF2D82A0BA11900C2B061 /* DeviceCheckOperation.swift */; };
- 58915D652A25F9E20066445B /* TunnelSettingsV2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580F8B8228197881002E0998 /* TunnelSettingsV2.swift */; };
58915D682A25FA080066445B /* DeviceCheckRemoteService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58915D672A25FA080066445B /* DeviceCheckRemoteService.swift */; };
58915D692A2601FB0066445B /* WgKeyRotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581DA2742A1E283E0046ED47 /* WgKeyRotation.swift */; };
- 58915D6A2A26031B0066445B /* DNSSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580F8B8528197958002E0998 /* DNSSettings.swift */; };
58915D6E2A26037A0066445B /* WireGuardKitTypes in Frameworks */ = {isa = PBXBuildFile; productRef = 58915D6D2A26037A0066445B /* WireGuardKitTypes */; };
5891BF1C25E3E3EB006D6FB0 /* Bundle+ProductVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5891BF1B25E3E3EB006D6FB0 /* Bundle+ProductVersion.swift */; };
5891BF5125E66B1E006D6FB0 /* UIBarButtonItem+KeyboardNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5891BF5025E66B1E006D6FB0 /* UIBarButtonItem+KeyboardNavigation.swift */; };
5892A45E265FABFF00890742 /* EmptyTableViewHeaderFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5892A45D265FABFF00890742 /* EmptyTableViewHeaderFooterView.swift */; };
5893716A28817A45004EE76C /* DeviceManagementViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5893716928817A45004EE76C /* DeviceManagementViewController.swift */; };
- 5893C6F929C1B480009090D1 /* DNSSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580F8B8528197958002E0998 /* DNSSettings.swift */; };
- 5893C6FA29C1B481009090D1 /* DNSSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580F8B8528197958002E0998 /* DNSSettings.swift */; };
58968FAE28743E2000B799DC /* TunnelInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58968FAD28743E2000B799DC /* TunnelInteractor.swift */; };
5896AE84246D5889005B36CB /* CustomDateComponentsFormatting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5896AE83246D5889005B36CB /* CustomDateComponentsFormatting.swift */; };
5896AE86246D6AD8005B36CB /* CustomDateComponentsFormattingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5896AE85246D6AD8005B36CB /* CustomDateComponentsFormattingTests.swift */; };
@@ -233,6 +216,24 @@
58B26E262943522400D5980C /* NotificationProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B26E252943522400D5980C /* NotificationProvider.swift */; };
58B26E282943527300D5980C /* SystemNotificationProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B26E272943527300D5980C /* SystemNotificationProvider.swift */; };
58B26E2A2943545A00D5980C /* NotificationManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B26E292943545A00D5980C /* NotificationManagerDelegate.swift */; };
+ 58B2FDD62AA71D2A003EB5C6 /* Settings.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B2FDD52AA71D2A003EB5C6 /* Settings.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 58B2FDD92AA71D2A003EB5C6 /* Settings.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58B2FDD32AA71D2A003EB5C6 /* Settings.framework */; };
+ 58B2FDDA2AA71D2A003EB5C6 /* Settings.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 58B2FDD32AA71D2A003EB5C6 /* Settings.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 58B2FDDE2AA71D5C003EB5C6 /* Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068CE5732927B7A400A068BB /* Migration.swift */; };
+ 58B2FDDF2AA71D5C003EB5C6 /* DNSSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580F8B8528197958002E0998 /* DNSSettings.swift */; };
+ 58B2FDE02AA71D5C003EB5C6 /* TunnelSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC202A77FFAF0052F1B1 /* TunnelSettings.swift */; };
+ 58B2FDE12AA71D5C003EB5C6 /* TunnelSettingsV1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587AD7C523421D7000E93A53 /* TunnelSettingsV1.swift */; };
+ 58B2FDE22AA71D5C003EB5C6 /* StoredAccountData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC232A7802520052F1B1 /* StoredAccountData.swift */; };
+ 58B2FDE32AA71D5C003EB5C6 /* StoredDeviceData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC272A7802AB0052F1B1 /* StoredDeviceData.swift */; };
+ 58B2FDE42AA71D5C003EB5C6 /* SettingsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FF2C02281BDE02009EF542 /* SettingsManager.swift */; };
+ 58B2FDE52AA71D5C003EB5C6 /* TunnelSettingsV2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580F8B8228197881002E0998 /* TunnelSettingsV2.swift */; };
+ 58B2FDE62AA71D5C003EB5C6 /* DeviceState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC2B2A7803A50052F1B1 /* DeviceState.swift */; };
+ 58B2FDE72AA71D5C003EB5C6 /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410E06292D108E00AFC18C /* SettingsStore.swift */; };
+ 58B2FDE82AA71D5C003EB5C6 /* KeychainSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410DFD292CE18F00AFC18C /* KeychainSettingsStore.swift */; };
+ 58B2FDE92AA71D5C003EB5C6 /* SettingsParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06410E03292D0F7100AFC18C /* SettingsParser.swift */; };
+ 58B2FDEB2AA72049003EB5C6 /* WireGuardKitTypes in Frameworks */ = {isa = PBXBuildFile; productRef = 58B2FDEA2AA72049003EB5C6 /* WireGuardKitTypes */; };
+ 58B2FDEE2AA72098003EB5C6 /* ApplicationConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58BFA5CB22A7CE1F00A6173D /* ApplicationConfiguration.swift */; };
+ 58B2FDEF2AA720C4003EB5C6 /* ApplicationTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58C76A072A33850E00100D75 /* ApplicationTarget.swift */; };
58B43C1925F77DB60002C8C3 /* TunnelControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B43C1825F77DB60002C8C3 /* TunnelControlView.swift */; };
58B465702A98C53300467203 /* RequestExecutorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B4656F2A98C53300467203 /* RequestExecutorTests.swift */; };
58B8644629C7972F005E107C /* CustomDateComponentsFormatting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5896AE83246D5889005B36CB /* CustomDateComponentsFormatting.swift */; };
@@ -385,8 +386,13 @@
58FD5BF024238EB300112C88 /* SKProduct+Formatting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FD5BEF24238EB300112C88 /* SKProduct+Formatting.swift */; };
58FD5BF42428C67600112C88 /* InAppPurchaseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FD5BF32428C67600112C88 /* InAppPurchaseButton.swift */; };
58FDF2D92A0BA11A00C2B061 /* DeviceCheckOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FDF2D82A0BA11900C2B061 /* DeviceCheckOperation.swift */; };
+ 58FE25BB2AA72188003D1918 /* MullvadLogging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58D223F3294C8FF00029F5F8 /* MullvadLogging.framework */; };
+ 58FE25BF2AA72311003D1918 /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D96B192A8247C100A5C673 /* MigrationManager.swift */; };
+ 58FE25C22AA72729003D1918 /* MullvadREST.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06799ABC28F98E1D00ACD94E /* MullvadREST.framework */; };
+ 58FE25C62AA72779003D1918 /* PacketTunnelCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C7A4362A863F440060C66F /* PacketTunnelCore.framework */; };
+ 58FE25CB2AA727A9003D1918 /* libRelaySelector.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5898D29829017DAC00EB5EBA /* libRelaySelector.a */; };
+ 58FE25CE2AA72802003D1918 /* Settings.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58B2FDD32AA71D2A003EB5C6 /* Settings.framework */; };
58FEEB58260B662E00A621A8 /* AutomaticKeyboardResponder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FEEB57260B662E00A621A8 /* AutomaticKeyboardResponder.swift */; };
- 58FF2C03281BDE02009EF542 /* SettingsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FF2C02281BDE02009EF542 /* SettingsManager.swift */; };
7A02D4EB2A9CEC7A00C19E31 /* MullvadVPNScreenshots.xctestplan in Resources */ = {isa = PBXBuildFile; fileRef = 7A02D4EA2A9CEC7A00C19E31 /* MullvadVPNScreenshots.xctestplan */; };
7A09C98129D99215000C2CAC /* String+FuzzyMatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A09C98029D99215000C2CAC /* String+FuzzyMatch.swift */; };
7A0C0F632A979C4A0058EFCE /* Coordinator+Router.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A0C0F622A979C4A0058EFCE /* Coordinator+Router.swift */; };
@@ -447,20 +453,11 @@
7AF9BE992A4E0FE900DBFEDB /* MarkdownStylingOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AF9BE982A4E0FE900DBFEDB /* MarkdownStylingOptions.swift */; };
A917351F29FAA9C400D5DCFD /* RESTTransportStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = A917351E29FAA9C400D5DCFD /* RESTTransportStrategy.swift */; };
A917352129FAAA5200D5DCFD /* TransportStrategyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A917352029FAAA5200D5DCFD /* TransportStrategyTests.swift */; };
- A92ECC212A77FFAF0052F1B1 /* TunnelSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC202A77FFAF0052F1B1 /* TunnelSettings.swift */; };
- A92ECC222A77FFAF0052F1B1 /* TunnelSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC202A77FFAF0052F1B1 /* TunnelSettings.swift */; };
- A92ECC242A7802520052F1B1 /* StoredAccountData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC232A7802520052F1B1 /* StoredAccountData.swift */; };
- A92ECC252A7802520052F1B1 /* StoredAccountData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC232A7802520052F1B1 /* StoredAccountData.swift */; };
- A92ECC262A7802520052F1B1 /* StoredAccountData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC232A7802520052F1B1 /* StoredAccountData.swift */; };
- A92ECC282A7802AB0052F1B1 /* StoredDeviceData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC272A7802AB0052F1B1 /* StoredDeviceData.swift */; };
- A92ECC292A7802AB0052F1B1 /* StoredDeviceData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC272A7802AB0052F1B1 /* StoredDeviceData.swift */; };
- A92ECC2A2A7802AB0052F1B1 /* StoredDeviceData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC272A7802AB0052F1B1 /* StoredDeviceData.swift */; };
- A92ECC2C2A7803A50052F1B1 /* DeviceState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC2B2A7803A50052F1B1 /* DeviceState.swift */; };
- A92ECC2D2A7803A50052F1B1 /* DeviceState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC2B2A7803A50052F1B1 /* DeviceState.swift */; };
- A92ECC2E2A7803A60052F1B1 /* DeviceState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92ECC2B2A7803A50052F1B1 /* DeviceState.swift */; };
A93D13782A1F60A6001EB0B1 /* shadowsocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 586F2BE129F6916F009E6924 /* shadowsocks.h */; settings = {ATTRIBUTES = (Private, ); }; };
A9467E7F2A29DEFE000DC21F /* RelayCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9467E7E2A29DEFE000DC21F /* RelayCacheTests.swift */; };
A9467E802A29E0A6000DC21F /* AddressCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9CF11FC2A0518E7001D9565 /* AddressCacheTests.swift */; };
+ A94D691A2ABAD66700413DD4 /* WireGuardKitTypes in Frameworks */ = {isa = PBXBuildFile; productRef = 58FE25E22AA72AE9003D1918 /* WireGuardKitTypes */; };
+ A94D691B2ABAD66700413DD4 /* WireGuardKitTypes in Frameworks */ = {isa = PBXBuildFile; productRef = 58FE25E72AA7399D003D1918 /* WireGuardKitTypes */; };
A95F86B72A1F53BA00245DAC /* URLSessionTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FAE67C28F83CA50033DD93 /* URLSessionTransport.swift */; };
A95F86B82A1F547000245DAC /* ShadowsocksProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F1FF1B29F06124007083C3 /* ShadowsocksProxy.swift */; };
A97F1F442A1F4E1A00ECEFDE /* MullvadTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = A97F1F432A1F4E1A00ECEFDE /* MullvadTransport.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -470,8 +467,6 @@
A9A8A8EB2A262AB30086D569 /* FileCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A8A8EA2A262AB30086D569 /* FileCache.swift */; };
A9AD31D72A6AB68B00141BE8 /* InputTextFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 582AE30F2440A6CA00E6733A /* InputTextFormatter.swift */; };
A9B2CF722A1F64CD0013CC6C /* MullvadREST.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06799ABC28F98E1D00ACD94E /* MullvadREST.framework */; };
- A9D96B1A2A8247C100A5C673 /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D96B192A8247C100A5C673 /* MigrationManager.swift */; };
- A9D96B1B2A8248F200A5C673 /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D96B192A8247C100A5C673 /* MigrationManager.swift */; };
A9D99B9A2A1F7C3200DE27D3 /* RESTTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FAE67D28F83CA50033DD93 /* RESTTransport.swift */; };
A9D99BA02A1F7F3A00DE27D3 /* TransportProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D99B9F2A1F7F3A00DE27D3 /* TransportProvider.swift */; };
A9D99BA52A1F808900DE27D3 /* RelayCache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 063F02732902B63F001FA09F /* RelayCache.framework */; };
@@ -581,6 +576,13 @@
remoteGlobalIDString = 06799ABB28F98E1D00ACD94E;
remoteInfo = MullvadREST;
};
+ 58B2FDD72AA71D2A003EB5C6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 58CE5E58224146200008646E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 58B2FDD22AA71D2A003EB5C6;
+ remoteInfo = Settings;
+ };
58C7A43F2A863F470060C66F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 58CE5E58224146200008646E /* Project object */;
@@ -770,6 +772,41 @@
remoteGlobalIDString = 06799ABB28F98E1D00ACD94E;
remoteInfo = MullvadREST;
};
+ 58FE25BD2AA72188003D1918 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 58CE5E58224146200008646E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 58D223F2294C8FF00029F5F8;
+ remoteInfo = MullvadLogging;
+ };
+ 58FE25C42AA72729003D1918 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 58CE5E58224146200008646E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 06799ABB28F98E1D00ACD94E;
+ remoteInfo = MullvadREST;
+ };
+ 58FE25C82AA72779003D1918 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 58CE5E58224146200008646E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 58C7A4352A863F440060C66F;
+ remoteInfo = PacketTunnelCore;
+ };
+ 58FE25CC2AA727A9003D1918 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 58CE5E58224146200008646E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 5898D29729017DAC00EB5EBA;
+ remoteInfo = RelaySelector;
+ };
+ 58FE25D02AA72802003D1918 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 58CE5E58224146200008646E /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 58B2FDD22AA71D2A003EB5C6;
+ remoteInfo = Settings;
+ };
7A88DCD92A8FABBE00D2FF0E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 58CE5E58224146200008646E /* Project object */;
@@ -865,6 +902,7 @@
files = (
58D223E7294C8F120029F5F8 /* MullvadTypes.framework in Embed Frameworks */,
58D223FA294C8FF10029F5F8 /* MullvadLogging.framework in Embed Frameworks */,
+ 58B2FDDA2AA71D2A003EB5C6 /* Settings.framework in Embed Frameworks */,
A9EC20F02A5D79ED0040D56E /* TunnelObfuscation.framework in Embed Frameworks */,
7ABCA5B42A9349F20044A708 /* Routing.framework in Embed Frameworks */,
06799AD228F98E1D00ACD94E /* MullvadREST.framework in Embed Frameworks */,
@@ -945,6 +983,26 @@
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
+ 58FE25E52AA72AE9003D1918 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 58FE25E92AA7399D003D1918 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
7A88DCF02A8FB08D00D2FF0E /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@@ -1214,6 +1272,8 @@
58B26E252943522400D5980C /* NotificationProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationProvider.swift; sourceTree = "<group>"; };
58B26E272943527300D5980C /* SystemNotificationProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemNotificationProvider.swift; sourceTree = "<group>"; };
58B26E292943545A00D5980C /* NotificationManagerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationManagerDelegate.swift; sourceTree = "<group>"; };
+ 58B2FDD32AA71D2A003EB5C6 /* Settings.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Settings.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 58B2FDD52AA71D2A003EB5C6 /* Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = "<group>"; };
58B43C1825F77DB60002C8C3 /* TunnelControlView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelControlView.swift; sourceTree = "<group>"; };
58B4656F2A98C53300467203 /* RequestExecutorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestExecutorTests.swift; sourceTree = "<group>"; };
58B93A1226C3F13600A55733 /* TunnelState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelState.swift; sourceTree = "<group>"; };
@@ -1389,7 +1449,6 @@
F028A5692A34D4E700C0CAA3 /* RedeemVoucherViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RedeemVoucherViewController.swift; sourceTree = "<group>"; };
F028A56B2A34D8E600C0CAA3 /* AddCreditSucceededViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddCreditSucceededViewController.swift; sourceTree = "<group>"; };
F03580242A13842C00E5DAFD /* IncreasedHitButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IncreasedHitButton.swift; sourceTree = "<group>"; };
- F0465B5B2A7927B40004089E /* AddCreditSucceededCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddCreditSucceededCoordinator.swift; sourceTree = "<group>"; };
F04FBE602A8379EE009278D7 /* AppPreferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppPreferences.swift; sourceTree = "<group>"; };
F07BF2572A26112D00042943 /* InputTextFormatterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputTextFormatterTests.swift; sourceTree = "<group>"; };
F07BF2612A26279100042943 /* RedeemVoucherOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RedeemVoucherOperation.swift; sourceTree = "<group>"; };
@@ -1401,7 +1460,6 @@
F0C2AEFC2A0BB5CC00986207 /* NotificationProviderIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationProviderIdentifier.swift; sourceTree = "<group>"; };
F0C6A8422AB08E54000777A8 /* RedeemVoucherViewConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedeemVoucherViewConfiguration.swift; sourceTree = "<group>"; };
F0C6FA802A66E23300F521F0 /* DeleteAccountOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteAccountOperation.swift; sourceTree = "<group>"; };
- F0C6FA822A6A729500F521F0 /* InAppPurchaseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InAppPurchaseCoordinator.swift; sourceTree = "<group>"; };
F0C6FA842A6A733700F521F0 /* InAppPurchaseInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InAppPurchaseInteractor.swift; sourceTree = "<group>"; };
F0DA87462A9CB9A2006044F1 /* AccountExpiryRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountExpiryRow.swift; sourceTree = "<group>"; };
F0DA87482A9CBA9F006044F1 /* AccountDeviceRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountDeviceRow.swift; sourceTree = "<group>"; };
@@ -1489,10 +1547,22 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 58B2FDD02AA71D2A003EB5C6 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 58FE25BB2AA72188003D1918 /* MullvadLogging.framework in Frameworks */,
+ 58B2FDEB2AA72049003EB5C6 /* WireGuardKitTypes in Frameworks */,
+ 58FE25C22AA72729003D1918 /* MullvadREST.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
58C7A4332A863F440060C66F /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ A94D691A2ABAD66700413DD4 /* WireGuardKitTypes in Frameworks */,
+ 58FE25CB2AA727A9003D1918 /* libRelaySelector.a in Frameworks */,
58C7A45C2A8640490060C66F /* MullvadLogging.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1501,6 +1571,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ A94D691B2ABAD66700413DD4 /* WireGuardKitTypes in Frameworks */,
58C7A43E2A863F470060C66F /* PacketTunnelCore.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1520,6 +1591,7 @@
06799AD128F98E1D00ACD94E /* MullvadREST.framework in Frameworks */,
063F02792902B63F001FA09F /* RelayCache.framework in Frameworks */,
A97F1F472A1F4E1A00ECEFDE /* MullvadTransport.framework in Frameworks */,
+ 58B2FDD92AA71D2A003EB5C6 /* Settings.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1528,6 +1600,8 @@
buildActionMask = 2147483647;
files = (
589C6A7D2A45B06800DAD3EF /* TunnelObfuscation.framework in Frameworks */,
+ 58FE25C62AA72779003D1918 /* PacketTunnelCore.framework in Frameworks */,
+ 58FE25CE2AA72802003D1918 /* Settings.framework in Frameworks */,
A9D99BA92A1F81B700DE27D3 /* MullvadTransport.framework in Frameworks */,
5898D2AB2901845400EB5EBA /* libRelaySelector.a in Frameworks */,
5898D2AC2901845400EB5EBA /* libTunnelProviderMessaging.a in Frameworks */,
@@ -1685,25 +1759,6 @@
path = Router;
sourceTree = "<group>";
};
- 580F8B88281A79A7002E0998 /* SettingsManager */ = {
- isa = PBXGroup;
- children = (
- 580F8B8528197958002E0998 /* DNSSettings.swift */,
- 06410DFD292CE18F00AFC18C /* KeychainSettingsStore.swift */,
- 068CE5732927B7A400A068BB /* Migration.swift */,
- 58FF2C02281BDE02009EF542 /* SettingsManager.swift */,
- 06410E03292D0F7100AFC18C /* SettingsParser.swift */,
- 06410E06292D108E00AFC18C /* SettingsStore.swift */,
- A92ECC232A7802520052F1B1 /* StoredAccountData.swift */,
- A92ECC272A7802AB0052F1B1 /* StoredDeviceData.swift */,
- 587AD7C523421D7000E93A53 /* TunnelSettingsV1.swift */,
- 580F8B8228197881002E0998 /* TunnelSettingsV2.swift */,
- A92ECC202A77FFAF0052F1B1 /* TunnelSettings.swift */,
- A92ECC2B2A7803A50052F1B1 /* DeviceState.swift */,
- );
- path = SettingsManager;
- sourceTree = "<group>";
- };
581943F228F8014500B0CB5E /* MullvadTypes */ = {
isa = PBXGroup;
children = (
@@ -2260,6 +2315,27 @@
path = UI;
sourceTree = "<group>";
};
+ 58B2FDD42AA71D2A003EB5C6 /* Settings */ = {
+ isa = PBXGroup;
+ children = (
+ 58B2FDD52AA71D2A003EB5C6 /* Settings.h */,
+ 580F8B8528197958002E0998 /* DNSSettings.swift */,
+ 06410DFD292CE18F00AFC18C /* KeychainSettingsStore.swift */,
+ 068CE5732927B7A400A068BB /* Migration.swift */,
+ 58FF2C02281BDE02009EF542 /* SettingsManager.swift */,
+ 06410E03292D0F7100AFC18C /* SettingsParser.swift */,
+ 06410E06292D108E00AFC18C /* SettingsStore.swift */,
+ A92ECC232A7802520052F1B1 /* StoredAccountData.swift */,
+ A92ECC272A7802AB0052F1B1 /* StoredDeviceData.swift */,
+ 587AD7C523421D7000E93A53 /* TunnelSettingsV1.swift */,
+ 580F8B8228197881002E0998 /* TunnelSettingsV2.swift */,
+ A92ECC202A77FFAF0052F1B1 /* TunnelSettings.swift */,
+ A92ECC2B2A7803A50052F1B1 /* DeviceState.swift */,
+ A9D96B192A8247C100A5C673 /* MigrationManager.swift */,
+ );
+ path = Settings;
+ sourceTree = "<group>";
+ };
58BDEB9E2A98F6B400F578F2 /* Mocks */ = {
isa = PBXGroup;
children = (
@@ -2365,9 +2441,9 @@
58C7A4432A863F490060C66F /* PacketTunnelCoreTests */,
7A88DCCF2A8FABBE00D2FF0E /* Routing */,
7A88DCDD2A8FABBE00D2FF0E /* RoutingTests */,
+ 58B2FDD42AA71D2A003EB5C6 /* Settings */,
58CE5E61224146200008646E /* Products */,
584F991F2902CBDD001F858D /* Frameworks */,
- F0EF50D02A8FA2C00031E8DF /* Recovered References */,
);
sourceTree = "<group>";
};
@@ -2394,6 +2470,7 @@
58C7A43D2A863F460060C66F /* PacketTunnelCoreTests.xctest */,
7A88DCCE2A8FABBE00D2FF0E /* Routing.framework */,
7A88DCD72A8FABBE00D2FF0E /* RoutingTests.xctest */,
+ 58B2FDD32AA71D2A003EB5C6 /* Settings.framework */,
);
name = Products;
sourceTree = "<group>";
@@ -2408,14 +2485,12 @@
58C774C929AB543C003A1A56 /* Containers */,
58CAF9F22983D32200BE19F7 /* Coordinators */,
583FE02329C1AC9F006E85F9 /* Extensions */,
- A9D96B182A82479700A5C673 /* MigrationManager */,
58B26E1F2943516500D5980C /* Notifications */,
586A950B2901250A007BAF2B /* Operations */,
5864859729A0D012006C5743 /* Presentation controllers */,
5864AF0629C78816005B0CD9 /* Protocols */,
585DA87526B0249A00B8C587 /* RelayCacheTracker */,
58E25F802837BBBB002CFB2C /* SceneDelegate.swift */,
- 580F8B88281A79A7002E0998 /* SettingsManager */,
583FE02629C1ADB6006E85F9 /* SimulatorTunnelProvider */,
5846226F26E229CD0035F7C2 /* StorePaymentManager */,
583FE02929C1B0E1006E85F9 /* Supporting Files */,
@@ -2627,14 +2702,6 @@
path = MullvadTransport;
sourceTree = "<group>";
};
- A9D96B182A82479700A5C673 /* MigrationManager */ = {
- isa = PBXGroup;
- children = (
- A9D96B192A8247C100A5C673 /* MigrationManager.swift */,
- );
- path = MigrationManager;
- sourceTree = "<group>";
- };
F028A5472A336E1900C0CAA3 /* RedeemVoucher */ = {
isa = PBXGroup;
children = (
@@ -2689,15 +2756,6 @@
path = AccountDeletion;
sourceTree = "<group>";
};
- F0EF50D02A8FA2C00031E8DF /* Recovered References */ = {
- isa = PBXGroup;
- children = (
- F0C6FA822A6A729500F521F0 /* InAppPurchaseCoordinator.swift */,
- F0465B5B2A7927B40004089E /* AddCreditSucceededCoordinator.swift */,
- );
- name = "Recovered References";
- sourceTree = "<group>";
- };
F0EF50D12A8FA47E0031E8DF /* ChangeLog */ = {
isa = PBXGroup;
children = (
@@ -2735,6 +2793,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 58B2FDCE2AA71D2A003EB5C6 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 58B2FDD62AA71D2A003EB5C6 /* Settings.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
58C7A4312A863F440060C66F /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@@ -2970,6 +3036,28 @@
productReference = 58B0A2A0238EE67E00BC001D /* MullvadVPNTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
+ 58B2FDD22AA71D2A003EB5C6 /* Settings */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 58B2FDDD2AA71D2B003EB5C6 /* Build configuration list for PBXNativeTarget "Settings" */;
+ buildPhases = (
+ 58B2FDCE2AA71D2A003EB5C6 /* Headers */,
+ 58B2FDCF2AA71D2A003EB5C6 /* Sources */,
+ 58B2FDD02AA71D2A003EB5C6 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 58FE25BE2AA72188003D1918 /* PBXTargetDependency */,
+ 58FE25C52AA72729003D1918 /* PBXTargetDependency */,
+ );
+ name = Settings;
+ packageProductDependencies = (
+ 58B2FDEA2AA72049003EB5C6 /* WireGuardKitTypes */,
+ );
+ productName = Settings;
+ productReference = 58B2FDD32AA71D2A003EB5C6 /* Settings.framework */;
+ productType = "com.apple.product-type.framework";
+ };
58C7A4352A863F440060C66F /* PacketTunnelCore */ = {
isa = PBXNativeTarget;
buildConfigurationList = 58C7A44B2A863F4A0060C66F /* Build configuration list for PBXNativeTarget "PacketTunnelCore" */;
@@ -2978,13 +3066,18 @@
58C7A4322A863F440060C66F /* Sources */,
58C7A4332A863F440060C66F /* Frameworks */,
58C7A4342A863F440060C66F /* Resources */,
+ 58FE25E52AA72AE9003D1918 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
58C7A45F2A8640490060C66F /* PBXTargetDependency */,
+ 58FE25CD2AA727A9003D1918 /* PBXTargetDependency */,
);
name = PacketTunnelCore;
+ packageProductDependencies = (
+ 58FE25E22AA72AE9003D1918 /* WireGuardKitTypes */,
+ );
productName = PacketTunnelCore;
productReference = 58C7A4362A863F440060C66F /* PacketTunnelCore.framework */;
productType = "com.apple.product-type.framework";
@@ -2996,6 +3089,7 @@
58C7A4392A863F450060C66F /* Sources */,
58C7A43A2A863F450060C66F /* Frameworks */,
58C7A43B2A863F450060C66F /* Resources */,
+ 58FE25E92AA7399D003D1918 /* Embed Frameworks */,
);
buildRules = (
);
@@ -3004,6 +3098,9 @@
58C7A4722A864B860060C66F /* PBXTargetDependency */,
);
name = PacketTunnelCoreTests;
+ packageProductDependencies = (
+ 58FE25E72AA7399D003D1918 /* WireGuardKitTypes */,
+ );
productName = PacketTunnelCoreTests;
productReference = 58C7A43D2A863F460060C66F /* PacketTunnelCoreTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
@@ -3034,6 +3131,7 @@
A9EC20F22A5D79ED0040D56E /* PBXTargetDependency */,
58C7A4482A863F490060C66F /* PBXTargetDependency */,
7ABCA5B62A9349F20044A708 /* PBXTargetDependency */,
+ 58B2FDD82AA71D2A003EB5C6 /* PBXTargetDependency */,
);
name = MullvadVPN;
packageProductDependencies = (
@@ -3065,6 +3163,8 @@
063F028C2902B83C001FA09F /* PBXTargetDependency */,
58FBDAA222A52A6800EB69A3 /* PBXTargetDependency */,
58153074294CBE8B00D1702E /* PBXTargetDependency */,
+ 58FE25C92AA72779003D1918 /* PBXTargetDependency */,
+ 58FE25D12AA72802003D1918 /* PBXTargetDependency */,
);
name = PacketTunnel;
packageProductDependencies = (
@@ -3364,6 +3464,7 @@
58695A9C2A4ADA9100328DB3 /* TunnelObfuscationTests */,
58C7A4352A863F440060C66F /* PacketTunnelCore */,
58C7A43C2A863F450060C66F /* PacketTunnelCoreTests */,
+ 58B2FDD22AA71D2A003EB5C6 /* Settings */,
7A88DCCD2A8FABBE00D2FF0E /* Routing */,
7A88DCD62A8FABBE00D2FF0E /* RoutingTests */,
);
@@ -3701,16 +3802,11 @@
buildActionMask = 2147483647;
files = (
A9AD31D72A6AB68B00141BE8 /* InputTextFormatter.swift in Sources */,
- 58915D6A2A26031B0066445B /* DNSSettings.swift in Sources */,
- A92ECC262A7802520052F1B1 /* StoredAccountData.swift in Sources */,
58915D692A2601FB0066445B /* WgKeyRotation.swift in Sources */,
- A92ECC2A2A7802AB0052F1B1 /* StoredDeviceData.swift in Sources */,
- A92ECC2E2A7803A60052F1B1 /* DeviceState.swift in Sources */,
580810E62A30E13D00B74552 /* DeviceStateAccessorProtocol.swift in Sources */,
58C3FA662A38549D006A450A /* MockFileCache.swift in Sources */,
58915D642A25F8B30066445B /* DeviceCheckOperation.swift in Sources */,
7AF6E5F12A95F4A500F2679D /* DurationTests.swift in Sources */,
- 58915D652A25F9E20066445B /* TunnelSettingsV2.swift in Sources */,
A9467E7F2A29DEFE000DC21F /* RelayCacheTests.swift in Sources */,
582A8A3A28BCE19B00D0F9FB /* FixedWidthIntegerArithmeticsTests.swift in Sources */,
58915D632A25F8400066445B /* DeviceCheckOperationTests.swift in Sources */,
@@ -3728,6 +3824,28 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 58B2FDCF2AA71D2A003EB5C6 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 58B2FDEE2AA72098003EB5C6 /* ApplicationConfiguration.swift in Sources */,
+ 58B2FDE52AA71D5C003EB5C6 /* TunnelSettingsV2.swift in Sources */,
+ 58B2FDE32AA71D5C003EB5C6 /* StoredDeviceData.swift in Sources */,
+ 58B2FDDF2AA71D5C003EB5C6 /* DNSSettings.swift in Sources */,
+ 58B2FDE02AA71D5C003EB5C6 /* TunnelSettings.swift in Sources */,
+ 58B2FDE42AA71D5C003EB5C6 /* SettingsManager.swift in Sources */,
+ 58B2FDE62AA71D5C003EB5C6 /* DeviceState.swift in Sources */,
+ 58FE25BF2AA72311003D1918 /* MigrationManager.swift in Sources */,
+ 58B2FDEF2AA720C4003EB5C6 /* ApplicationTarget.swift in Sources */,
+ 58B2FDDE2AA71D5C003EB5C6 /* Migration.swift in Sources */,
+ 58B2FDE12AA71D5C003EB5C6 /* TunnelSettingsV1.swift in Sources */,
+ 58B2FDE72AA71D5C003EB5C6 /* SettingsStore.swift in Sources */,
+ 58B2FDE92AA71D5C003EB5C6 /* SettingsParser.swift in Sources */,
+ 58B2FDE22AA71D5C003EB5C6 /* StoredAccountData.swift in Sources */,
+ 58B2FDE82AA71D5C003EB5C6 /* KeychainSettingsStore.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
58C7A4322A863F440060C66F /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -3782,14 +3900,12 @@
5846227126E229F20035F7C2 /* StoreSubscription.swift in Sources */,
58421030282D8A3C00F24E46 /* UpdateAccountDataOperation.swift in Sources */,
F0E8E4C92A604E7400ED26A3 /* AccountDeletionInteractor.swift in Sources */,
- 58FF2C03281BDE02009EF542 /* SettingsManager.swift in Sources */,
A9F360342AAB626300F53531 /* VPNConnectionProtocol.swift in Sources */,
F09A297D2A9F8A9B00EA3B6F /* RedeemVoucherContentView.swift in Sources */,
5803B4B02940A47300C23744 /* TunnelConfiguration.swift in Sources */,
587EB672271451E300123C75 /* PreferencesViewModel.swift in Sources */,
586A950C290125EE007BAF2B /* AlertPresenter.swift in Sources */,
58C3F4F92964B08300D72515 /* MapViewController.swift in Sources */,
- A92ECC2C2A7803A50052F1B1 /* DeviceState.swift in Sources */,
584D26C6270C8741004EA533 /* SettingsDNSTextCell.swift in Sources */,
58F2E148276A307400A79513 /* MapConnectionStatusOperation.swift in Sources */,
58BA693123EADA6A009DC256 /* SimulatorTunnelProvider.swift in Sources */,
@@ -3807,8 +3923,6 @@
F03580252A13842C00E5DAFD /* IncreasedHitButton.swift in Sources */,
58F8AC0E25D3F8CE002BE0ED /* ProblemReportReviewViewController.swift in Sources */,
5878A27129091CF20096FC88 /* AccountInteractor.swift in Sources */,
- 068CE5742927B7A400A068BB /* Migration.swift in Sources */,
- A92ECC282A7802AB0052F1B1 /* StoredDeviceData.swift in Sources */,
58CCA010224249A1004F3011 /* TunnelViewController.swift in Sources */,
58B26E22294351EA00D5980C /* InAppNotificationProvider.swift in Sources */,
5893716A28817A45004EE76C /* DeviceManagementViewController.swift in Sources */,
@@ -3818,7 +3932,6 @@
E158B360285381C60002F069 /* String+AccountFormatting.swift in Sources */,
582BB1B1229569620055B6EF /* UINavigationBar+Appearance.swift in Sources */,
58ACF6492655365700ACE4B7 /* PreferencesViewController.swift in Sources */,
- A9D96B1A2A8247C100A5C673 /* MigrationManager.swift in Sources */,
7ABE318D2A1CDD4500DF4963 /* UIFont+Weight.swift in Sources */,
58C774BE29A7A249003A1A56 /* CustomNavigationController.swift in Sources */,
E1FD0DF528AA7CE400299DB4 /* StatusActivityView.swift in Sources */,
@@ -3856,12 +3969,10 @@
58EF581125D69DB400AEBA94 /* StatusImageView.swift in Sources */,
58907D9524D17B4E00CFC3F5 /* DisconnectSplitButton.swift in Sources */,
58EE2E3B272FF814003BFF93 /* SettingsDataSourceDelegate.swift in Sources */,
- A92ECC242A7802520052F1B1 /* StoredAccountData.swift in Sources */,
5823FA5426CE49F700283BF8 /* TunnelObserver.swift in Sources */,
5888AD87227B17950051EB06 /* SelectLocationViewController.swift in Sources */,
58293FB3251241B4005D0BB5 /* CustomTextView.swift in Sources */,
586A950E290125F3007BAF2B /* ProductsRequestOperation.swift in Sources */,
- 5893C6F929C1B480009090D1 /* DNSSettings.swift in Sources */,
58F19E35228C15BA00C7710B /* SpinnerActivityIndicatorView.swift in Sources */,
5864859929A0D028006C5743 /* FormsheetPresentationController.swift in Sources */,
7A9CCCB52A96302800DD6A34 /* AddCreditSucceededCoordinator.swift in Sources */,
@@ -3894,7 +4005,6 @@
585B4B8726D9098900555C4C /* TunnelStatusNotificationProvider.swift in Sources */,
063F026628FFE11C001FA09F /* RESTCreateApplePaymentResponse+Localization.swift in Sources */,
58DF28A52417CB4B00E836B0 /* StorePaymentManager.swift in Sources */,
- A92ECC212A77FFAF0052F1B1 /* TunnelSettings.swift in Sources */,
583DA21425FA4B5C00318683 /* LocationDataSource.swift in Sources */,
587EB6742714520600123C75 /* PreferencesDataSourceDelegate.swift in Sources */,
582BB1AF229566420055B6EF /* SettingsCell.swift in Sources */,
@@ -3929,7 +4039,6 @@
5835B7CC233B76CB0096D79F /* TunnelManager.swift in Sources */,
58607A4D2947287800BC467D /* AccountExpiryInAppNotificationProvider.swift in Sources */,
58C8191829FAA2C400DEB1B4 /* NotificationConfiguration.swift in Sources */,
- 06410E07292D108E00AFC18C /* SettingsStore.swift in Sources */,
7A7AD28F29DEDB1C00480EF1 /* SettingsHeaderView.swift in Sources */,
58B93A1326C3F13600A55733 /* TunnelState.swift in Sources */,
58B26E262943522400D5980C /* NotificationProvider.swift in Sources */,
@@ -3942,7 +4051,6 @@
F0E8E4C12A602CCB00ED26A3 /* AccountDeletionContentView.swift in Sources */,
58B26E1E2943514300D5980C /* InAppNotificationDescriptor.swift in Sources */,
58421032282E42B000F24E46 /* UpdateDeviceDataOperation.swift in Sources */,
- 06410E04292D0F7100AFC18C /* SettingsParser.swift in Sources */,
5878A27D2909657C0096FC88 /* RevokedDeviceInteractor.swift in Sources */,
F0E8E4C32A602E0D00ED26A3 /* AccountDeletionViewModel.swift in Sources */,
58677710290975E9006F721F /* SettingsInteractorFactory.swift in Sources */,
@@ -3954,7 +4062,6 @@
581DA2752A1E283E0046ED47 /* WgKeyRotation.swift in Sources */,
7A83C4022A57FAA800DFB83A /* SettingsDNSInfoCell.swift in Sources */,
F0C6A8432AB08E54000777A8 /* RedeemVoucherViewConfiguration.swift in Sources */,
- 06410DFE292CE18F00AFC18C /* KeychainSettingsStore.swift in Sources */,
58FB865526E8BF3100F188BC /* StorePaymentManagerError.swift in Sources */,
58FD5BF42428C67600112C88 /* InAppPurchaseButton.swift in Sources */,
587D9676288989DB00CD8F1C /* NSLayoutConstraint+Helpers.swift in Sources */,
@@ -3974,7 +4081,6 @@
5896AE84246D5889005B36CB /* CustomDateComponentsFormatting.swift in Sources */,
5871167F2910035700D41AAC /* PreferencesInteractor.swift in Sources */,
7A9CCCC22A96302800DD6A34 /* SafariCoordinator.swift in Sources */,
- 587AD7C623421D7000E93A53 /* TunnelSettingsV1.swift in Sources */,
58E20771274672CA00DE5D77 /* LaunchViewController.swift in Sources */,
F0E8CC032A4C753B007ED3B4 /* WelcomeViewController.swift in Sources */,
584D26C4270C855B004EA533 /* PreferencesDataSource.swift in Sources */,
@@ -3989,7 +4095,6 @@
58ACF64B26553C3F00ACE4B7 /* SettingsSwitchCell.swift in Sources */,
7A09C98129D99215000C2CAC /* String+FuzzyMatch.swift in Sources */,
58A8EE5E2976DB00009C0F8D /* StorePaymentManagerError+Display.swift in Sources */,
- 580F8B8328197881002E0998 /* TunnelSettingsV2.swift in Sources */,
58A8EE5A2976BFBB009C0F8D /* SKError+Localized.swift in Sources */,
7A42DEC92A05164100B209BE /* SettingsInputCell.swift in Sources */,
5803B4B22940A48700C23744 /* TunnelStore.swift in Sources */,
@@ -4004,32 +4109,19 @@
files = (
5806767C27048E9B00C858CB /* PacketTunnelProvider.swift in Sources */,
581DA2762A1E2FD10046ED47 /* WgKeyRotation.swift in Sources */,
- 587AD7C723421D8600E93A53 /* TunnelSettingsV1.swift in Sources */,
- 5893C6FA29C1B481009090D1 /* DNSSettings.swift in Sources */,
580810E52A30E13A00B74552 /* DeviceStateAccessorProtocol.swift in Sources */,
58C7A45A2A863FDD0060C66F /* WgAdapterDeviceInfo.swift in Sources */,
580810E82A30E15500B74552 /* DeviceCheckRemoteServiceProtocol.swift in Sources */,
- 068CE5782927BE4800A068BB /* Migration.swift in Sources */,
58915D682A25FA080066445B /* DeviceCheckRemoteService.swift in Sources */,
- 06410E05292D0FC000AFC18C /* SettingsParser.swift in Sources */,
- A92ECC292A7802AB0052F1B1 /* StoredDeviceData.swift in Sources */,
- A9D96B1B2A8248F200A5C673 /* MigrationManager.swift in Sources */,
58E0729D28814AAE008902F8 /* PacketTunnelConfiguration.swift in Sources */,
58E0729F28814ACC008902F8 /* WireGuardLogLevel+Logging.swift in Sources */,
- 580F8B8428197884002E0998 /* TunnelSettingsV2.swift in Sources */,
- 06410E08292D117800AFC18C /* SettingsStore.swift in Sources */,
- A92ECC222A77FFAF0052F1B1 /* TunnelSettings.swift in Sources */,
58C76A092A33850E00100D75 /* ApplicationTarget.swift in Sources */,
583D86482A2678DC0060D63B /* DeviceStateAccessor.swift in Sources */,
58906DE02445C7A5002F0673 /* NEProviderStopReason+Debug.swift in Sources */,
- 06410DFF292CF16C00AFC18C /* KeychainSettingsStore.swift in Sources */,
58E072A128814B0E008902F8 /* MullvadEndpoint+WgEndpoint.swift in Sources */,
58C7A45B2A8640030060C66F /* PacketTunnelPathObserver.swift in Sources */,
06AC116228F94C450037AF9A /* ApplicationConfiguration.swift in Sources */,
- A92ECC252A7802520052F1B1 /* StoredAccountData.swift in Sources */,
- A92ECC2D2A7803A50052F1B1 /* DeviceState.swift in Sources */,
583FE02429C1ACB3006E85F9 /* RESTCreateApplePaymentResponse+Localization.swift in Sources */,
- 5877D70F282137E8002FCFC7 /* SettingsManager.swift in Sources */,
58CE38C728992C8700A6D6E5 /* WireGuardAdapterError+Localization.swift in Sources */,
58E511E828DDDF2400B0BCDE /* CodingErrors+CustomErrorDescription.swift in Sources */,
58FDF2D92A0BA11A00C2B061 /* DeviceCheckOperation.swift in Sources */,
@@ -4234,6 +4326,11 @@
isa = PBXTargetDependency;
productRef = 58915D6B2A2603700066445B /* WireGuardKitTypes */;
};
+ 58B2FDD82AA71D2A003EB5C6 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 58B2FDD22AA71D2A003EB5C6 /* Settings */;
+ targetProxy = 58B2FDD72AA71D2A003EB5C6 /* PBXContainerItemProxy */;
+ };
58C7A4402A863F470060C66F /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
platformFilter = ios;
@@ -4362,6 +4459,31 @@
target = 06799ABB28F98E1D00ACD94E /* MullvadREST */;
targetProxy = 58FBFBEB291622580020E046 /* PBXContainerItemProxy */;
};
+ 58FE25BE2AA72188003D1918 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 58D223F2294C8FF00029F5F8 /* MullvadLogging */;
+ targetProxy = 58FE25BD2AA72188003D1918 /* PBXContainerItemProxy */;
+ };
+ 58FE25C52AA72729003D1918 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 06799ABB28F98E1D00ACD94E /* MullvadREST */;
+ targetProxy = 58FE25C42AA72729003D1918 /* PBXContainerItemProxy */;
+ };
+ 58FE25C92AA72779003D1918 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 58C7A4352A863F440060C66F /* PacketTunnelCore */;
+ targetProxy = 58FE25C82AA72779003D1918 /* PBXContainerItemProxy */;
+ };
+ 58FE25CD2AA727A9003D1918 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 5898D29729017DAC00EB5EBA /* RelaySelector */;
+ targetProxy = 58FE25CC2AA727A9003D1918 /* PBXContainerItemProxy */;
+ };
+ 58FE25D12AA72802003D1918 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 58B2FDD22AA71D2A003EB5C6 /* Settings */;
+ targetProxy = 58FE25D02AA72802003D1918 /* PBXContainerItemProxy */;
+ };
7A88DCDA2A8FABBE00D2FF0E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 7A88DCCD2A8FABBE00D2FF0E /* Routing */;
@@ -4445,10 +4567,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -4457,6 +4581,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).RelayCache";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -4477,10 +4603,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -4489,6 +4617,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).RelayCache";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -4509,10 +4639,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = MullvadREST/Info.plist;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
@@ -4522,6 +4654,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).MullvadREST";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -4541,10 +4675,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = MullvadREST/Info.plist;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
@@ -4554,6 +4690,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).MullvadREST";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -4574,10 +4712,12 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = TunnelObfuscation/Info.plist;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Mullvad VPN AB. All rights reserved.";
@@ -4591,6 +4731,8 @@
"LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios-sim/debug";
"LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = "$(PROJECT_DIR)/../target/x86_64-apple-ios/debug";
MODULEMAP_PRIVATE_FILE = $PROJECT_DIR/TunnelObfuscation/module.private.modulemap;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).TunnelObfuscation";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
@@ -4611,10 +4753,12 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = TunnelObfuscation/Info.plist;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Mullvad VPN AB. All rights reserved.";
@@ -4628,6 +4772,8 @@
"LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=arm64]" = "$(PROJECT_DIR)/../target/aarch64-apple-ios-sim/release";
"LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = "$(PROJECT_DIR)/../target/x86_64-apple-ios/release";
MODULEMAP_PRIVATE_FILE = $PROJECT_DIR/TunnelObfuscation/module.private.modulemap;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).TunnelObfuscation";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
@@ -4805,6 +4951,82 @@
};
name = Release;
};
+ 58B2FDDB2AA71D2B003EB5C6 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273928487E3E006B77A4 /* Base.xcconfig */;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Mullvad VPN AB. All rights reserved.";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
+ PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).Settings";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ 58B2FDDC2AA71D2B003EB5C6 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5808273928487E3E006B77A4 /* Base.xcconfig */;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Mullvad VPN AB. All rights reserved.";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
+ PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).Settings";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
58C7A44C2A863F4A0060C66F /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5808273928487E3E006B77A4 /* Base.xcconfig */;
@@ -4812,6 +5034,7 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -4850,6 +5073,7 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -4895,7 +5119,7 @@
PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN.PacketTunnelCoreTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
- SUPPORTS_MACCATALYST = YES;
+ SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
@@ -4917,7 +5141,7 @@
PRODUCT_BUNDLE_IDENTIFIER = net.mullvad.MullvadVPN.PacketTunnelCoreTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
- SUPPORTS_MACCATALYST = YES;
+ SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
@@ -5166,10 +5390,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5178,6 +5404,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).Operations";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -5197,10 +5425,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5209,6 +5439,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).Operations";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -5228,10 +5460,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5240,6 +5474,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).MullvadTypes";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -5259,10 +5495,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5271,6 +5509,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).MullvadTypes";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -5290,10 +5530,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5302,6 +5544,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).MullvadLogging";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -5322,10 +5566,12 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 4;
DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5334,6 +5580,8 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).MullvadLogging";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
@@ -5416,7 +5664,7 @@
BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
@@ -5425,7 +5673,7 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- ENABLE_MODULE_VERIFIER = "$(CLANG_MODULES_ENABLE_VERIFIER_TOOL)";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5435,6 +5683,8 @@
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).Routing";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -5464,7 +5714,7 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- ENABLE_MODULE_VERIFIER = "$(CLANG_MODULES_ENABLE_VERIFIER_TOOL)";
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Mullvad VPN AB. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5474,6 +5724,8 @@
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).Routing";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -5543,6 +5795,7 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
@@ -5550,7 +5803,7 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Mullvad VPN AB. All rights reserved.";
INFOPLIST_OTHER_PREPROCESSOR_FLAGS = MullvadTransport/Info.plist;
@@ -5565,6 +5818,8 @@
"LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = "$(PROJECT_DIR)/../target/x86_64-apple-ios/debug";
MARKETING_VERSION = 2023.2;
MODULEMAP_PRIVATE_FILE = $PROJECT_DIR/MullvadTransport/module.private.modulemap;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).MullvadTransport";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -5587,6 +5842,7 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
@@ -5594,7 +5850,7 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- ENABLE_MODULE_VERIFIER = NO;
+ ENABLE_MODULE_VERIFIER = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 Mullvad VPN AB. All rights reserved.";
INFOPLIST_OTHER_PREPROCESSOR_FLAGS = MullvadTransport/Info.plist;
@@ -5609,6 +5865,8 @@
"LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=x86_64]" = "$(PROJECT_DIR)/../target/x86_64-apple-ios/release";
MARKETING_VERSION = 2023.2;
MODULEMAP_PRIVATE_FILE = $PROJECT_DIR/MullvadTransport/module.private.modulemap;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "$(APPLICATION_IDENTIFIER).MullvadTransport";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -5699,6 +5957,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 58B2FDDD2AA71D2B003EB5C6 /* Build configuration list for PBXNativeTarget "Settings" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 58B2FDDB2AA71D2B003EB5C6 /* Debug */,
+ 58B2FDDC2AA71D2B003EB5C6 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
58C7A44B2A863F4A0060C66F /* Build configuration list for PBXNativeTarget "PacketTunnelCore" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@@ -5862,6 +6129,11 @@
package = 58F097482A20C30000DA2DAD /* XCRemoteSwiftPackageReference "wireguard-apple" */;
productName = WireGuardKitTypes;
};
+ 58B2FDEA2AA72049003EB5C6 /* WireGuardKitTypes */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 58F097482A20C30000DA2DAD /* XCRemoteSwiftPackageReference "wireguard-apple" */;
+ productName = WireGuardKitTypes;
+ };
58D22419294C90380029F5F8 /* Logging */ = {
isa = XCSwiftPackageProductDependency;
package = 585834F624D2BC1F00A8AF56 /* XCRemoteSwiftPackageReference "swift-log" */;
@@ -5887,6 +6159,16 @@
package = 58F097482A20C30000DA2DAD /* XCRemoteSwiftPackageReference "wireguard-apple" */;
productName = WireGuardKit;
};
+ 58FE25E22AA72AE9003D1918 /* WireGuardKitTypes */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 58F097482A20C30000DA2DAD /* XCRemoteSwiftPackageReference "wireguard-apple" */;
+ productName = WireGuardKitTypes;
+ };
+ 58FE25E72AA7399D003D1918 /* WireGuardKitTypes */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 58F097482A20C30000DA2DAD /* XCRemoteSwiftPackageReference "wireguard-apple" */;
+ productName = WireGuardKitTypes;
+ };
/* End XCSwiftPackageProductDependency section */
};
rootObject = 58CE5E58224146200008646E /* Project object */;
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadREST.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadREST.xcscheme
index 6f3701be4c..6d3f3da286 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadREST.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadREST.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPN.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPN.xcscheme
index a5e1cc5310..e96e9b561d 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPN.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPN.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme
index 892171b577..bd48a92aef 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNScreenshots.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNTests.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNTests.xcscheme
index accf771445..6e98d6b3fa 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNTests.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/MullvadVPNTests.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/Operations.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/Operations.xcscheme
index 7c357f9c76..a00b97c593 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/Operations.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/Operations.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/OperationsTests.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/OperationsTests.xcscheme
index 0348fc11b5..9ccdf2737e 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/OperationsTests.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/OperationsTests.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/PacketTunnel.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/PacketTunnel.xcscheme
index 8f0330bdf1..e3d0f107cf 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/PacketTunnel.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/PacketTunnel.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
wasCreatedForAppExtension = "YES"
version = "2.0">
<BuildAction
@@ -56,7 +56,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
- launchStyle = "0"
+ launchStyle = "1"
askForAppToLaunch = "Yes"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
@@ -64,8 +64,7 @@
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
launchAutomaticallySubstyle = "2">
- <BuildableProductRunnable
- runnableDebuggingMode = "0">
+ <MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "58CE5E5F224146200008646E"
@@ -73,7 +72,7 @@
BlueprintName = "MullvadVPN"
ReferencedContainer = "container:MullvadVPN.xcodeproj">
</BuildableReference>
- </BuildableProductRunnable>
+ </MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/RelaySelector.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/RelaySelector.xcscheme
index cb72f06a28..21b976b3a7 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/RelaySelector.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/RelaySelector.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/TunnelProviderMessaging.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/TunnelProviderMessaging.xcscheme
index a41f0a8179..6f50842cf0 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/TunnelProviderMessaging.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/TunnelProviderMessaging.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/WireGuardGoBridge.xcscheme b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/WireGuardGoBridge.xcscheme
index f07cd8783e..aee4256082 100644
--- a/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/WireGuardGoBridge.xcscheme
+++ b/ios/MullvadVPN.xcodeproj/xcshareddata/xcschemes/WireGuardGoBridge.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1420"
+ LastUpgradeVersion = "1430"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/ios/MullvadVPN/AppDelegate.swift b/ios/MullvadVPN/AppDelegate.swift
index e5a96b2669..34a8f6463c 100644
--- a/ios/MullvadVPN/AppDelegate.swift
+++ b/ios/MullvadVPN/AppDelegate.swift
@@ -13,6 +13,7 @@ import MullvadTransport
import MullvadTypes
import Operations
import RelayCache
+import Settings
import StoreKit
import UIKit
import UserNotifications
diff --git a/ios/MullvadVPN/Containers/Root/RootConfiguration.swift b/ios/MullvadVPN/Containers/Root/RootConfiguration.swift
index c472f22a6a..a3a2de79a9 100644
--- a/ios/MullvadVPN/Containers/Root/RootConfiguration.swift
+++ b/ios/MullvadVPN/Containers/Root/RootConfiguration.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import Settings
struct RootDeviceInfoViewModel {
let configuration: RootConfiguration
diff --git a/ios/MullvadVPN/Coordinators/ApplicationCoordinator.swift b/ios/MullvadVPN/Coordinators/ApplicationCoordinator.swift
index 7f6cb1d474..31a3024f7f 100644
--- a/ios/MullvadVPN/Coordinators/ApplicationCoordinator.swift
+++ b/ios/MullvadVPN/Coordinators/ApplicationCoordinator.swift
@@ -11,6 +11,7 @@ import MullvadREST
import MullvadTypes
import RelayCache
import Routing
+import Settings
import UIKit
/**
diff --git a/ios/MullvadVPN/Notifications/Notification Providers/AccountExpiryInAppNotificationProvider.swift b/ios/MullvadVPN/Notifications/Notification Providers/AccountExpiryInAppNotificationProvider.swift
index da60a1396d..31bcb86b11 100644
--- a/ios/MullvadVPN/Notifications/Notification Providers/AccountExpiryInAppNotificationProvider.swift
+++ b/ios/MullvadVPN/Notifications/Notification Providers/AccountExpiryInAppNotificationProvider.swift
@@ -8,6 +8,7 @@
import Foundation
import MullvadTypes
+import Settings
final class AccountExpiryInAppNotificationProvider: NotificationProvider, InAppNotificationProvider {
private var accountExpiry: Date?
diff --git a/ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift b/ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift
index b8ad7054f0..a608b72cdd 100644
--- a/ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift
+++ b/ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import Settings
import UserNotifications
final class AccountExpirySystemNotificationProvider: NotificationProvider, SystemNotificationProvider {
diff --git a/ios/MullvadVPN/Notifications/Notification Providers/RegisteredDeviceInAppNotificationProvider.swift b/ios/MullvadVPN/Notifications/Notification Providers/RegisteredDeviceInAppNotificationProvider.swift
index b9f2bb6307..b9d23646cf 100644
--- a/ios/MullvadVPN/Notifications/Notification Providers/RegisteredDeviceInAppNotificationProvider.swift
+++ b/ios/MullvadVPN/Notifications/Notification Providers/RegisteredDeviceInAppNotificationProvider.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import Settings
import UIKit.UIColor
import UIKit.UIFont
diff --git a/ios/MullvadVPN/SceneDelegate.swift b/ios/MullvadVPN/SceneDelegate.swift
index bb1adca7a5..51cdef1e94 100644
--- a/ios/MullvadVPN/SceneDelegate.swift
+++ b/ios/MullvadVPN/SceneDelegate.swift
@@ -11,6 +11,7 @@ import MullvadREST
import MullvadTypes
import Operations
import RelayCache
+import Settings
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate, SettingsMigrationUIHandler {
diff --git a/ios/MullvadVPN/SettingsManager/StoredDeviceData.swift b/ios/MullvadVPN/SettingsManager/StoredDeviceData.swift
deleted file mode 100644
index cd971d5c7d..0000000000
--- a/ios/MullvadVPN/SettingsManager/StoredDeviceData.swift
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// StoredDeviceData.swift
-// MullvadVPN
-//
-// Created by Marco Nikic on 2023-07-31.
-// Copyright © 2023 Mullvad VPN AB. All rights reserved.
-//
-
-import Foundation
-import MullvadTypes
-import WireGuardKitTypes
-
-struct StoredDeviceData: Codable, Equatable {
- /// Device creation date.
- var creationDate: Date
-
- /// Device identifier.
- var identifier: String
-
- /// Device name.
- var name: String
-
- /// Whether relay hijacks DNS from this device.
- var hijackDNS: Bool
-
- /// IPv4 address + mask assigned to device.
- var ipv4Address: IPAddressRange
-
- /// IPv6 address + mask assigned to device.
- var ipv6Address: IPAddressRange
-
- /// WireGuard key data.
- var wgKeyData: StoredWgKeyData
-
- /// Returns capitalized device name.
- var capitalizedName: String {
- name.capitalized
- }
-
- /// Fill in part of the structure that contains device related properties from `Device` struct.
- mutating func update(from device: Device) {
- identifier = device.id
- name = device.name
- creationDate = device.created
- hijackDNS = device.hijackDNS
- ipv4Address = device.ipv4Address
- ipv6Address = device.ipv6Address
- }
-}
diff --git a/ios/MullvadVPN/SettingsManager/TunnelSettingsV2.swift b/ios/MullvadVPN/SettingsManager/TunnelSettingsV2.swift
deleted file mode 100644
index 821a848878..0000000000
--- a/ios/MullvadVPN/SettingsManager/TunnelSettingsV2.swift
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// TunnelSettingsV2.swift
-// MullvadVPN
-//
-// Created by pronebird on 27/04/2022.
-// Copyright © 2022 Mullvad VPN AB. All rights reserved.
-//
-
-import Foundation
-import MullvadTypes
-import struct Network.IPv4Address
-import struct WireGuardKitTypes.IPAddressRange
-import class WireGuardKitTypes.PrivateKey
-import class WireGuardKitTypes.PublicKey
-
-struct TunnelSettingsV2: Codable, Equatable {
- /// Relay constraints.
- var relayConstraints = RelayConstraints()
-
- /// DNS settings.
- var dnsSettings = DNSSettings()
-}
-
-struct StoredWgKeyData: Codable, Equatable {
- /// Private key creation date.
- var creationDate: Date
-
- /// Last date a rotation was attempted. Nil if last attempt was successful.
- var lastRotationAttemptDate: Date?
-
- /// Private key.
- var privateKey: PrivateKey
-
- /// Next private key we're trying to rotate to.
- /// Added in 2023.3
- var nextPrivateKey: PrivateKey?
-}
diff --git a/ios/MullvadVPN/SimulatorTunnelProvider/SimulatorTunnelProviderHost.swift b/ios/MullvadVPN/SimulatorTunnelProvider/SimulatorTunnelProviderHost.swift
index 2921905ea6..14abadd401 100644
--- a/ios/MullvadVPN/SimulatorTunnelProvider/SimulatorTunnelProviderHost.swift
+++ b/ios/MullvadVPN/SimulatorTunnelProvider/SimulatorTunnelProviderHost.swift
@@ -16,6 +16,7 @@ import MullvadTypes
import enum NetworkExtension.NEProviderStopReason
import RelayCache
import RelaySelector
+import Settings
import TunnelProviderMessaging
final class SimulatorTunnelProviderHost: SimulatorTunnelProviderDelegate {
diff --git a/ios/MullvadVPN/TunnelManager/LoadTunnelConfigurationOperation.swift b/ios/MullvadVPN/TunnelManager/LoadTunnelConfigurationOperation.swift
index 43fdea1c97..0380e7d4e0 100644
--- a/ios/MullvadVPN/TunnelManager/LoadTunnelConfigurationOperation.swift
+++ b/ios/MullvadVPN/TunnelManager/LoadTunnelConfigurationOperation.swift
@@ -10,6 +10,7 @@ import Foundation
import MullvadLogging
import MullvadTypes
import Operations
+import Settings
class LoadTunnelConfigurationOperation: ResultOperation<Void> {
private let logger = Logger(label: "LoadTunnelConfigurationOperation")
diff --git a/ios/MullvadVPN/TunnelManager/RedeemVoucherOperation.swift b/ios/MullvadVPN/TunnelManager/RedeemVoucherOperation.swift
index d87c61b37e..a184f6c8c0 100644
--- a/ios/MullvadVPN/TunnelManager/RedeemVoucherOperation.swift
+++ b/ios/MullvadVPN/TunnelManager/RedeemVoucherOperation.swift
@@ -11,6 +11,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
import Operations
+import Settings
class RedeemVoucherOperation: ResultOperation<REST.SubmitVoucherResponse> {
private let logger = Logger(label: "RedeemVoucherOperation")
diff --git a/ios/MullvadVPN/TunnelManager/RotateKeyOperation.swift b/ios/MullvadVPN/TunnelManager/RotateKeyOperation.swift
index 5f3c448160..e3344d9afa 100644
--- a/ios/MullvadVPN/TunnelManager/RotateKeyOperation.swift
+++ b/ios/MullvadVPN/TunnelManager/RotateKeyOperation.swift
@@ -11,6 +11,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
import Operations
+import Settings
import class WireGuardKitTypes.PrivateKey
class RotateKeyOperation: ResultOperation<Void> {
diff --git a/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift b/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift
index 77eeb02db6..72a673468a 100644
--- a/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift
+++ b/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift
@@ -11,6 +11,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
import Operations
+import Settings
import class WireGuardKitTypes.PrivateKey
import class WireGuardKitTypes.PublicKey
diff --git a/ios/MullvadVPN/TunnelManager/TunnelBlockObserver.swift b/ios/MullvadVPN/TunnelManager/TunnelBlockObserver.swift
index 2e327299d4..ba928ee40c 100644
--- a/ios/MullvadVPN/TunnelManager/TunnelBlockObserver.swift
+++ b/ios/MullvadVPN/TunnelManager/TunnelBlockObserver.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import Settings
final class TunnelBlockObserver: TunnelObserver {
typealias DidLoadConfigurationHandler = (TunnelManager) -> Void
diff --git a/ios/MullvadVPN/TunnelManager/TunnelInteractor.swift b/ios/MullvadVPN/TunnelManager/TunnelInteractor.swift
index ca42b56b52..b7cbef5be4 100644
--- a/ios/MullvadVPN/TunnelManager/TunnelInteractor.swift
+++ b/ios/MullvadVPN/TunnelManager/TunnelInteractor.swift
@@ -9,6 +9,7 @@
import Foundation
import RelayCache
import RelaySelector
+import Settings
protocol TunnelInteractor {
// MARK: - Tunnel manipulation
diff --git a/ios/MullvadVPN/TunnelManager/TunnelManager.swift b/ios/MullvadVPN/TunnelManager/TunnelManager.swift
index 710d663bed..9facc14552 100644
--- a/ios/MullvadVPN/TunnelManager/TunnelManager.swift
+++ b/ios/MullvadVPN/TunnelManager/TunnelManager.swift
@@ -14,6 +14,7 @@ import NetworkExtension
import Operations
import RelayCache
import RelaySelector
+import Settings
import StoreKit
import TunnelProviderMessaging
import UIKit
diff --git a/ios/MullvadVPN/TunnelManager/TunnelObserver.swift b/ios/MullvadVPN/TunnelManager/TunnelObserver.swift
index af5775cca9..bd930d56fd 100644
--- a/ios/MullvadVPN/TunnelManager/TunnelObserver.swift
+++ b/ios/MullvadVPN/TunnelManager/TunnelObserver.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import Settings
protocol TunnelObserver: AnyObject {
func tunnelManagerDidLoadConfiguration(_ manager: TunnelManager)
diff --git a/ios/MullvadVPN/TunnelManager/UpdateAccountDataOperation.swift b/ios/MullvadVPN/TunnelManager/UpdateAccountDataOperation.swift
index 1f52991650..be6d3742d8 100644
--- a/ios/MullvadVPN/TunnelManager/UpdateAccountDataOperation.swift
+++ b/ios/MullvadVPN/TunnelManager/UpdateAccountDataOperation.swift
@@ -11,6 +11,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
import Operations
+import Settings
class UpdateAccountDataOperation: ResultOperation<Void> {
private let logger = Logger(label: "UpdateAccountDataOperation")
diff --git a/ios/MullvadVPN/TunnelManager/UpdateDeviceDataOperation.swift b/ios/MullvadVPN/TunnelManager/UpdateDeviceDataOperation.swift
index 6d3b33ffd3..ceefe4bcc7 100644
--- a/ios/MullvadVPN/TunnelManager/UpdateDeviceDataOperation.swift
+++ b/ios/MullvadVPN/TunnelManager/UpdateDeviceDataOperation.swift
@@ -11,6 +11,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
import Operations
+import Settings
import class WireGuardKitTypes.PublicKey
class UpdateDeviceDataOperation: ResultOperation<StoredDeviceData> {
diff --git a/ios/MullvadVPN/TunnelManager/WgKeyRotation.swift b/ios/MullvadVPN/TunnelManager/WgKeyRotation.swift
index d7aec80b2e..b1dac73cb4 100644
--- a/ios/MullvadVPN/TunnelManager/WgKeyRotation.swift
+++ b/ios/MullvadVPN/TunnelManager/WgKeyRotation.swift
@@ -8,6 +8,7 @@
import Foundation
import MullvadTypes
+import Settings
import class WireGuardKitTypes.PrivateKey
import class WireGuardKitTypes.PublicKey
diff --git a/ios/MullvadVPN/View controllers/Account/AccountInteractor.swift b/ios/MullvadVPN/View controllers/Account/AccountInteractor.swift
index 8ad2fb25fe..19d4e39a4c 100644
--- a/ios/MullvadVPN/View controllers/Account/AccountInteractor.swift
+++ b/ios/MullvadVPN/View controllers/Account/AccountInteractor.swift
@@ -10,6 +10,7 @@ import Foundation
import MullvadREST
import MullvadTypes
import Operations
+import Settings
import StoreKit
final class AccountInteractor {
diff --git a/ios/MullvadVPN/View controllers/Account/AccountViewController.swift b/ios/MullvadVPN/View controllers/Account/AccountViewController.swift
index 435123dc4e..e8a6bda703 100644
--- a/ios/MullvadVPN/View controllers/Account/AccountViewController.swift
+++ b/ios/MullvadVPN/View controllers/Account/AccountViewController.swift
@@ -10,6 +10,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
import Operations
+import Settings
import StoreKit
import UIKit
diff --git a/ios/MullvadVPN/View controllers/Login/LoginInteractor.swift b/ios/MullvadVPN/View controllers/Login/LoginInteractor.swift
index 07a4ff1c4e..f7b54a66fe 100644
--- a/ios/MullvadVPN/View controllers/Login/LoginInteractor.swift
+++ b/ios/MullvadVPN/View controllers/Login/LoginInteractor.swift
@@ -8,6 +8,7 @@
import Foundation
import MullvadLogging
+import Settings
final class LoginInteractor {
private let tunnelManager: TunnelManager
diff --git a/ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeInteractor.swift b/ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeInteractor.swift
index 79f20ed675..55032e892b 100644
--- a/ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeInteractor.swift
+++ b/ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeInteractor.swift
@@ -11,6 +11,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
import Operations
+import Settings
import StoreKit
final class OutOfTimeInteractor {
diff --git a/ios/MullvadVPN/View controllers/Preferences/PreferencesDataSource.swift b/ios/MullvadVPN/View controllers/Preferences/PreferencesDataSource.swift
index 7aa4c82acc..eb134361d5 100644
--- a/ios/MullvadVPN/View controllers/Preferences/PreferencesDataSource.swift
+++ b/ios/MullvadVPN/View controllers/Preferences/PreferencesDataSource.swift
@@ -6,6 +6,7 @@
// Copyright © 2021 Mullvad VPN AB. All rights reserved.
//
+import Settings
import UIKit
final class PreferencesDataSource: UITableViewDiffableDataSource<
diff --git a/ios/MullvadVPN/View controllers/Preferences/PreferencesInteractor.swift b/ios/MullvadVPN/View controllers/Preferences/PreferencesInteractor.swift
index 66df78917a..bd4a5042a1 100644
--- a/ios/MullvadVPN/View controllers/Preferences/PreferencesInteractor.swift
+++ b/ios/MullvadVPN/View controllers/Preferences/PreferencesInteractor.swift
@@ -8,6 +8,7 @@
import Foundation
import RelayCache
+import Settings
final class PreferencesInteractor {
private let tunnelManager: TunnelManager
diff --git a/ios/MullvadVPN/View controllers/Preferences/PreferencesViewModel.swift b/ios/MullvadVPN/View controllers/Preferences/PreferencesViewModel.swift
index 85a381606a..66bda89769 100644
--- a/ios/MullvadVPN/View controllers/Preferences/PreferencesViewModel.swift
+++ b/ios/MullvadVPN/View controllers/Preferences/PreferencesViewModel.swift
@@ -7,6 +7,7 @@
//
import MullvadTypes
+import Settings
import UIKit
enum CustomDNSPrecondition {
diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift b/ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift
index b2ee13f66c..62688ce92d 100644
--- a/ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift
+++ b/ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift
@@ -6,6 +6,7 @@
// Copyright © 2021 Mullvad VPN AB. All rights reserved.
//
+import Settings
import UIKit
final class SettingsDataSource: UITableViewDiffableDataSource<
diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsInteractor.swift b/ios/MullvadVPN/View controllers/Settings/SettingsInteractor.swift
index 01787f69c3..3e773c48c6 100644
--- a/ios/MullvadVPN/View controllers/Settings/SettingsInteractor.swift
+++ b/ios/MullvadVPN/View controllers/Settings/SettingsInteractor.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import Settings
final class SettingsInteractor {
private let tunnelManager: TunnelManager
diff --git a/ios/MullvadVPN/View controllers/Tunnel/TunnelViewControllerInteractor.swift b/ios/MullvadVPN/View controllers/Tunnel/TunnelViewControllerInteractor.swift
index b29e924bcc..3df518ab84 100644
--- a/ios/MullvadVPN/View controllers/Tunnel/TunnelViewControllerInteractor.swift
+++ b/ios/MullvadVPN/View controllers/Tunnel/TunnelViewControllerInteractor.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import Settings
final class TunnelViewControllerInteractor {
private let tunnelManager: TunnelManager
diff --git a/ios/MullvadVPNTests/DeviceCheckOperationTests.swift b/ios/MullvadVPNTests/DeviceCheckOperationTests.swift
index 887194d3d9..fa7752e27a 100644
--- a/ios/MullvadVPNTests/DeviceCheckOperationTests.swift
+++ b/ios/MullvadVPNTests/DeviceCheckOperationTests.swift
@@ -9,6 +9,7 @@
import MullvadREST
import MullvadTypes
import Operations
+import Settings
import WireGuardKitTypes
import XCTest
diff --git a/ios/MullvadVPNTests/WgKeyRotationTests.swift b/ios/MullvadVPNTests/WgKeyRotationTests.swift
index f4e919f475..9234973861 100644
--- a/ios/MullvadVPNTests/WgKeyRotationTests.swift
+++ b/ios/MullvadVPNTests/WgKeyRotationTests.swift
@@ -7,6 +7,7 @@
//
import MullvadTypes
+import Settings
import struct WireGuardKitTypes.IPAddressRange
import class WireGuardKitTypes.PrivateKey
import XCTest
diff --git a/ios/PacketTunnel/DeviceCheck/DeviceCheckOperation.swift b/ios/PacketTunnel/DeviceCheck/DeviceCheckOperation.swift
index f04e7666f5..97bbf1df5e 100644
--- a/ios/PacketTunnel/DeviceCheck/DeviceCheckOperation.swift
+++ b/ios/PacketTunnel/DeviceCheck/DeviceCheckOperation.swift
@@ -11,6 +11,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
import Operations
+import Settings
import class WireGuardKitTypes.PrivateKey
import class WireGuardKitTypes.PublicKey
diff --git a/ios/PacketTunnel/DeviceCheck/DeviceStateAccessor.swift b/ios/PacketTunnel/DeviceCheck/DeviceStateAccessor.swift
index 7c3d3fdb54..e90669d0a3 100644
--- a/ios/PacketTunnel/DeviceCheck/DeviceStateAccessor.swift
+++ b/ios/PacketTunnel/DeviceCheck/DeviceStateAccessor.swift
@@ -8,6 +8,7 @@
import Foundation
import MullvadTypes
+import Settings
/// An object that provides access to `DeviceState` used by `DeviceCheckOperation`.
struct DeviceStateAccessor: DeviceStateAccessorProtocol {
diff --git a/ios/PacketTunnel/DeviceCheck/DeviceStateAccessorProtocol.swift b/ios/PacketTunnel/DeviceCheck/DeviceStateAccessorProtocol.swift
index 44f568e959..0be6990ba7 100644
--- a/ios/PacketTunnel/DeviceCheck/DeviceStateAccessorProtocol.swift
+++ b/ios/PacketTunnel/DeviceCheck/DeviceStateAccessorProtocol.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import Settings
/// A protocol that formalizes device state accessor dependency used by `DeviceCheckOperation`.
protocol DeviceStateAccessorProtocol {
diff --git a/ios/PacketTunnel/PacketTunnelConfiguration.swift b/ios/PacketTunnel/PacketTunnelConfiguration.swift
index 7cab5d3e22..601684e6d0 100644
--- a/ios/PacketTunnel/PacketTunnelConfiguration.swift
+++ b/ios/PacketTunnel/PacketTunnelConfiguration.swift
@@ -10,6 +10,7 @@ import Foundation
import MullvadTypes
import protocol Network.IPAddress
import RelaySelector
+import Settings
import WireGuardKit
struct PacketTunnelConfiguration {
diff --git a/ios/PacketTunnel/PacketTunnelProvider.swift b/ios/PacketTunnel/PacketTunnelProvider.swift
index df48ddf3a6..01dfbedf38 100644
--- a/ios/PacketTunnel/PacketTunnelProvider.swift
+++ b/ios/PacketTunnel/PacketTunnelProvider.swift
@@ -17,6 +17,7 @@ import Operations
import PacketTunnelCore
import RelayCache
import RelaySelector
+import Settings
import TunnelProviderMessaging
import WireGuardKit
diff --git a/ios/MullvadVPN/SettingsManager/DNSSettings.swift b/ios/Settings/DNSSettings.swift
index 81e563f5de..cae9de2928 100644
--- a/ios/MullvadVPN/SettingsManager/DNSSettings.swift
+++ b/ios/Settings/DNSSettings.swift
@@ -11,18 +11,16 @@ import MullvadTypes
import struct Network.IPv4Address
/// A struct describing Mullvad DNS blocking options.
-struct DNSBlockingOptions: OptionSet, Codable {
- typealias RawValue = UInt32
+public struct DNSBlockingOptions: OptionSet, Codable {
+ public let rawValue: UInt32
- let rawValue: RawValue
+ public static let blockAdvertising = DNSBlockingOptions(rawValue: 1 << 0)
+ public static let blockTracking = DNSBlockingOptions(rawValue: 1 << 1)
+ public static let blockMalware = DNSBlockingOptions(rawValue: 1 << 2)
+ public static let blockAdultContent = DNSBlockingOptions(rawValue: 1 << 3)
+ public static let blockGambling = DNSBlockingOptions(rawValue: 1 << 4)
- static let blockAdvertising = DNSBlockingOptions(rawValue: 1 << 0)
- static let blockTracking = DNSBlockingOptions(rawValue: 1 << 1)
- static let blockMalware = DNSBlockingOptions(rawValue: 1 << 2)
- static let blockAdultContent = DNSBlockingOptions(rawValue: 1 << 3)
- static let blockGambling = DNSBlockingOptions(rawValue: 1 << 4)
-
- var serverAddress: IPv4Address? {
+ public var serverAddress: IPv4Address? {
if isEmpty {
return nil
} else {
@@ -30,18 +28,18 @@ struct DNSBlockingOptions: OptionSet, Codable {
}
}
- init(rawValue: RawValue) {
+ public init(rawValue: UInt32) {
self.rawValue = rawValue
}
- init(from decoder: Decoder) throws {
+ public init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let rawValue = try container.decode(RawValue.self)
self.init(rawValue: rawValue)
}
- func encode(to encoder: Encoder) throws {
+ public func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
try container.encode(rawValue)
@@ -49,21 +47,21 @@ struct DNSBlockingOptions: OptionSet, Codable {
}
/// A struct that holds DNS settings.
-struct DNSSettings: Codable, Equatable {
+public struct DNSSettings: Codable, Equatable {
/// Maximum number of allowed DNS domains.
- static let maxAllowedCustomDNSDomains = 3
+ public static let maxAllowedCustomDNSDomains = 3
/// DNS blocking options.
- var blockingOptions: DNSBlockingOptions = []
+ public var blockingOptions: DNSBlockingOptions = []
/// Enable custom DNS.
- var enableCustomDNS = false
+ public var enableCustomDNS = false
/// Custom DNS domains.
- var customDNSDomains: [AnyIPAddress] = []
+ public var customDNSDomains: [AnyIPAddress] = []
/// Effective state of the custom DNS setting.
- var effectiveEnableCustomDNS: Bool {
+ public var effectiveEnableCustomDNS: Bool {
blockingOptions.isEmpty && enableCustomDNS && !customDNSDomains.isEmpty
}
@@ -77,9 +75,9 @@ struct DNSSettings: Codable, Equatable {
case enableCustomDNS, customDNSDomains
}
- init() {}
+ public init() {}
- init(from decoder: Decoder) throws {
+ public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
// Added in 2022.1
@@ -119,7 +117,7 @@ struct DNSSettings: Codable, Equatable {
}
}
- func encode(to encoder: Encoder) throws {
+ public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(blockingOptions, forKey: .blockingOptions)
diff --git a/ios/MullvadVPN/SettingsManager/DeviceState.swift b/ios/Settings/DeviceState.swift
index f3563480aa..052511d328 100644
--- a/ios/MullvadVPN/SettingsManager/DeviceState.swift
+++ b/ios/Settings/DeviceState.swift
@@ -8,7 +8,7 @@
import Foundation
-enum DeviceState: Codable, Equatable {
+public enum DeviceState: Codable, Equatable {
case loggedIn(StoredAccountData, StoredDeviceData)
case loggedOut
case revoked
@@ -18,7 +18,7 @@ enum DeviceState: Codable, Equatable {
case _1 = "device"
}
- var isLoggedIn: Bool {
+ public var isLoggedIn: Bool {
switch self {
case .loggedIn:
return true
@@ -27,7 +27,7 @@ enum DeviceState: Codable, Equatable {
}
}
- var accountData: StoredAccountData? {
+ public var accountData: StoredAccountData? {
switch self {
case let .loggedIn(accountData, _):
return accountData
@@ -36,7 +36,7 @@ enum DeviceState: Codable, Equatable {
}
}
- var deviceData: StoredDeviceData? {
+ public var deviceData: StoredDeviceData? {
switch self {
case let .loggedIn(_, deviceData):
return deviceData
diff --git a/ios/MullvadVPN/SettingsManager/KeychainSettingsStore.swift b/ios/Settings/KeychainSettingsStore.swift
index 00556b8ca5..ba0612de0d 100644
--- a/ios/MullvadVPN/SettingsManager/KeychainSettingsStore.swift
+++ b/ios/Settings/KeychainSettingsStore.swift
@@ -10,24 +10,24 @@ import Foundation
import MullvadTypes
import Security
-class KeychainSettingsStore: SettingsStore {
- let serviceName: String
- let accessGroup: String
+public class KeychainSettingsStore: SettingsStore {
+ public let serviceName: String
+ public let accessGroup: String
- init(serviceName: String, accessGroup: String) {
+ public init(serviceName: String, accessGroup: String) {
self.serviceName = serviceName
self.accessGroup = accessGroup
}
- func read(key: SettingsKey) throws -> Data {
+ public func read(key: SettingsKey) throws -> Data {
try readItemData(key)
}
- func write(_ data: Data, for key: SettingsKey) throws {
+ public func write(_ data: Data, for key: SettingsKey) throws {
try addOrUpdateItem(key, data: data)
}
- func delete(key: SettingsKey) throws {
+ public func delete(key: SettingsKey) throws {
try deleteItem(key)
}
diff --git a/ios/MullvadVPN/SettingsManager/Migration.swift b/ios/Settings/Migration.swift
index 79704c7b9b..0d9678deb5 100644
--- a/ios/MullvadVPN/SettingsManager/Migration.swift
+++ b/ios/Settings/Migration.swift
@@ -8,7 +8,7 @@
import Foundation
-protocol Migration {
+public protocol Migration {
func migrate(
with store: SettingsStore,
parser: SettingsParser,
diff --git a/ios/MullvadVPN/MigrationManager/MigrationManager.swift b/ios/Settings/MigrationManager.swift
index f2357bcb83..6348cf9471 100644
--- a/ios/MullvadVPN/MigrationManager/MigrationManager.swift
+++ b/ios/Settings/MigrationManager.swift
@@ -11,7 +11,7 @@ import MullvadLogging
import MullvadREST
import MullvadTypes
-enum SettingsMigrationResult {
+public enum SettingsMigrationResult {
/// Nothing to migrate.
case nothing
@@ -22,14 +22,16 @@ enum SettingsMigrationResult {
case failure(Error)
}
-struct MigrationManager {
+public struct MigrationManager {
private let logger = Logger(label: "MigrationManager")
+ public init() {}
+
/// Migrate settings store if needed.
///
/// The following types of error are expected to be returned by this method:
/// `SettingsMigrationError`, `UnsupportedSettingsVersionError`, `ReadSettingsVersionError`.
- func migrateSettings(
+ public func migrateSettings(
store: SettingsStore,
proxyFactory: REST.ProxyFactory,
migrationCompleted: @escaping (SettingsMigrationResult) -> Void
@@ -78,19 +80,19 @@ struct MigrationManager {
}
/// A wrapper type for errors returned by concrete migrations.
-struct SettingsMigrationError: LocalizedError, WrappingError {
+public struct SettingsMigrationError: LocalizedError, WrappingError {
private let inner: Error
- let sourceVersion, targetVersion: SchemaVersion
+ public let sourceVersion, targetVersion: SchemaVersion
- var underlyingError: Error? {
+ public var underlyingError: Error? {
inner
}
- var errorDescription: String? {
+ public var errorDescription: String? {
"Failed to migrate settings from \(sourceVersion) to \(targetVersion)."
}
- init(sourceVersion: SchemaVersion, targetVersion: SchemaVersion, underlyingError: Error) {
+ public init(sourceVersion: SchemaVersion, targetVersion: SchemaVersion, underlyingError: Error) {
self.sourceVersion = sourceVersion
self.targetVersion = targetVersion
inner = underlyingError
diff --git a/ios/Settings/Settings.h b/ios/Settings/Settings.h
new file mode 100644
index 0000000000..598468f6ea
--- /dev/null
+++ b/ios/Settings/Settings.h
@@ -0,0 +1,19 @@
+//
+// Settings.h
+// Settings
+//
+// Created by pronebird on 05/09/2023.
+// Copyright © 2023 Mullvad VPN AB. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+//! Project version number for Settings.
+FOUNDATION_EXPORT double SettingsVersionNumber;
+
+//! Project version string for Settings.
+FOUNDATION_EXPORT const unsigned char SettingsVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <Settings/PublicHeader.h>
+
+
diff --git a/ios/MullvadVPN/SettingsManager/SettingsManager.swift b/ios/Settings/SettingsManager.swift
index 91a73b8b07..953c052beb 100644
--- a/ios/MullvadVPN/SettingsManager/SettingsManager.swift
+++ b/ios/Settings/SettingsManager.swift
@@ -15,10 +15,10 @@ private let keychainServiceName = "Mullvad VPN"
private let accountTokenKey = "accountToken"
private let accountExpiryKey = "accountExpiry"
-enum SettingsManager {
+public enum SettingsManager {
private static let logger = Logger(label: "SettingsManager")
- static let store: SettingsStore = KeychainSettingsStore(
+ public static let store: SettingsStore = KeychainSettingsStore(
serviceName: keychainServiceName,
accessGroup: ApplicationConfiguration.securityGroupIdentifier
)
@@ -29,7 +29,7 @@ enum SettingsManager {
// MARK: - Last used account
- static func getLastUsedAccount() throws -> String {
+ public static func getLastUsedAccount() throws -> String {
let data = try store.read(key: .lastUsedAccount)
if let string = String(data: data, encoding: .utf8) {
@@ -39,7 +39,7 @@ enum SettingsManager {
}
}
- static func setLastUsedAccount(_ string: String?) throws {
+ public static func setLastUsedAccount(_ string: String?) throws {
if let string {
guard let data = string.data(using: .utf8) else {
throw StringEncodingError(string: string)
@@ -59,11 +59,11 @@ enum SettingsManager {
// MARK: - Should wipe settings
- static func getShouldWipeSettings() -> Bool {
+ public static func getShouldWipeSettings() -> Bool {
(try? store.read(key: .shouldWipeSettings)) != nil
}
- static func setShouldWipeSettings() {
+ public static func setShouldWipeSettings() {
do {
try store.write(Data(), for: .shouldWipeSettings)
} catch {
@@ -76,7 +76,7 @@ enum SettingsManager {
// MARK: - Settings
- static func readSettings() throws -> LatestTunnelSettings {
+ public static func readSettings() throws -> LatestTunnelSettings {
let storedVersion: Int
let data: Data
let parser = makeParser()
@@ -100,7 +100,7 @@ enum SettingsManager {
}
}
- static func writeSettings(_ settings: LatestTunnelSettings) throws {
+ public static func writeSettings(_ settings: LatestTunnelSettings) throws {
let parser = makeParser()
let data = try parser.producePayload(settings, version: SchemaVersion.current.rawValue)
@@ -109,14 +109,14 @@ enum SettingsManager {
// MARK: - Device state
- static func readDeviceState() throws -> DeviceState {
+ public static func readDeviceState() throws -> DeviceState {
let data = try store.read(key: .deviceState)
let parser = makeParser()
return try parser.parseUnversionedPayload(as: DeviceState.self, from: data)
}
- static func writeDeviceState(_ deviceState: DeviceState) throws {
+ public static func writeDeviceState(_ deviceState: DeviceState) throws {
let parser = makeParser()
let data = try parser.produceUnversionedPayload(deviceState)
@@ -125,7 +125,7 @@ enum SettingsManager {
/// Removes all legacy settings, device state and tunnel settings but keeps the last used
/// account number stored.
- static func resetStore(completely: Bool = false) {
+ public static func resetStore(completely: Bool = false) {
logger.debug("Reset store.")
do {
@@ -195,28 +195,28 @@ enum SettingsManager {
// MARK: - Supporting types
/// An error type describing a failure to read or parse settings version.
-struct ReadSettingsVersionError: LocalizedError, WrappingError {
+public struct ReadSettingsVersionError: LocalizedError, WrappingError {
private let inner: Error
- var underlyingError: Error? {
+ public var underlyingError: Error? {
inner
}
- var errorDescription: String? {
+ public var errorDescription: String? {
"Failed to read settings version."
}
- init(underlyingError: Error) {
+ public init(underlyingError: Error) {
inner = underlyingError
}
}
/// An error returned when stored settings version is unknown to the currently running app.
-struct UnsupportedSettingsVersionError: LocalizedError {
- let storedVersion: Int
- let currentVersion: SchemaVersion
+public struct UnsupportedSettingsVersionError: LocalizedError {
+ public let storedVersion: Int
+ public let currentVersion: SchemaVersion
- var errorDescription: String? {
+ public var errorDescription: String? {
"""
Stored settings version was not the same as current version, \
stored version: \(storedVersion), current version: \(currentVersion)
@@ -224,18 +224,18 @@ struct UnsupportedSettingsVersionError: LocalizedError {
}
}
-struct StringDecodingError: LocalizedError {
- let data: Data
+public struct StringDecodingError: LocalizedError {
+ public let data: Data
- var errorDescription: String? {
+ public var errorDescription: String? {
"Failed to decode string from data."
}
}
-struct StringEncodingError: LocalizedError {
- let string: String
+public struct StringEncodingError: LocalizedError {
+ public let string: String
- var errorDescription: String? {
+ public var errorDescription: String? {
"Failed to encode string into data."
}
}
diff --git a/ios/MullvadVPN/SettingsManager/SettingsParser.swift b/ios/Settings/SettingsParser.swift
index 60199afb51..16bd1ba7ff 100644
--- a/ios/MullvadVPN/SettingsManager/SettingsParser.swift
+++ b/ios/Settings/SettingsParser.swift
@@ -21,37 +21,37 @@ private struct VersionedPayload<T: Codable>: Codable {
var data: T
}
-struct SettingsParser {
+public struct SettingsParser {
/// The decoder used to decode values.
private let decoder: JSONDecoder
/// The encoder used to encode values.
private let encoder: JSONEncoder
- init(decoder: JSONDecoder, encoder: JSONEncoder) {
+ public init(decoder: JSONDecoder, encoder: JSONEncoder) {
self.decoder = decoder
self.encoder = encoder
}
/// Produces versioned data encoded as the given type
- func producePayload(_ payload: some Codable, version: Int) throws -> Data {
+ public func producePayload(_ payload: some Codable, version: Int) throws -> Data {
try encoder.encode(VersionedPayload(version: version, data: payload))
}
/// Produces unversioned data encoded as the given type
- func produceUnversionedPayload(_ payload: some Codable) throws -> Data {
+ public func produceUnversionedPayload(_ payload: some Codable) throws -> Data {
try encoder.encode(payload)
}
/// Returns settings version if found inside the stored data.
- func parseVersion(data: Data) throws -> Int {
+ public func parseVersion(data: Data) throws -> Int {
let header = try decoder.decode(VersionHeader.self, from: data)
return header.version
}
/// Returns unversioned payload parsed as the given type.
- func parseUnversionedPayload<T: Codable>(
+ public func parseUnversionedPayload<T: Codable>(
as type: T.Type,
from data: Data
) throws -> T {
@@ -59,7 +59,7 @@ struct SettingsParser {
}
/// Returns data from versioned payload parsed as the given type.
- func parsePayload<T: Codable>(
+ public func parsePayload<T: Codable>(
as type: T.Type,
from data: Data
) throws -> T {
diff --git a/ios/MullvadVPN/SettingsManager/SettingsStore.swift b/ios/Settings/SettingsStore.swift
index 55b565390f..4609ce8d39 100644
--- a/ios/MullvadVPN/SettingsManager/SettingsStore.swift
+++ b/ios/Settings/SettingsStore.swift
@@ -8,14 +8,14 @@
import Foundation
-enum SettingsKey: String, CaseIterable {
+public enum SettingsKey: String, CaseIterable {
case settings = "Settings"
case deviceState = "DeviceState"
case lastUsedAccount = "LastUsedAccount"
case shouldWipeSettings = "ShouldWipeSettings"
}
-protocol SettingsStore {
+public protocol SettingsStore {
func read(key: SettingsKey) throws -> Data
func write(_ data: Data, for key: SettingsKey) throws
func delete(key: SettingsKey) throws
diff --git a/ios/MullvadVPN/SettingsManager/StoredAccountData.swift b/ios/Settings/StoredAccountData.swift
index 4870c3018f..276982805c 100644
--- a/ios/MullvadVPN/SettingsManager/StoredAccountData.swift
+++ b/ios/Settings/StoredAccountData.swift
@@ -8,24 +8,30 @@
import Foundation
-struct StoredAccountData: Codable, Equatable {
+public struct StoredAccountData: Codable, Equatable {
/// Account identifier.
- var identifier: String
+ public var identifier: String
/// Account number.
- var number: String
+ public var number: String
/// Account expiry.
- var expiry: Date
+ public var expiry: Date
/// Returns `true` if account has expired.
- var isExpired: Bool {
+ public var isExpired: Bool {
expiry <= Date()
}
+
+ public init(identifier: String, number: String, expiry: Date) {
+ self.identifier = identifier
+ self.number = number
+ self.expiry = expiry
+ }
}
extension StoredAccountData {
- init(from decoder: Decoder) throws {
+ public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.identifier = try container.decode(String.self, forKey: .identifier)
self.number = try container.decode(String.self, forKey: .number)
diff --git a/ios/Settings/StoredDeviceData.swift b/ios/Settings/StoredDeviceData.swift
new file mode 100644
index 0000000000..a0d784af61
--- /dev/null
+++ b/ios/Settings/StoredDeviceData.swift
@@ -0,0 +1,67 @@
+//
+// StoredDeviceData.swift
+// MullvadVPN
+//
+// Created by Marco Nikic on 2023-07-31.
+// Copyright © 2023 Mullvad VPN AB. All rights reserved.
+//
+
+import Foundation
+import MullvadTypes
+import WireGuardKitTypes
+
+public struct StoredDeviceData: Codable, Equatable {
+ /// Device creation date.
+ public var creationDate: Date
+
+ /// Device identifier.
+ public var identifier: String
+
+ /// Device name.
+ public var name: String
+
+ /// Whether relay hijacks DNS from this device.
+ public var hijackDNS: Bool
+
+ /// IPv4 address + mask assigned to device.
+ public var ipv4Address: IPAddressRange
+
+ /// IPv6 address + mask assigned to device.
+ public var ipv6Address: IPAddressRange
+
+ /// WireGuard key data.
+ public var wgKeyData: StoredWgKeyData
+
+ /// Returns capitalized device name.
+ public var capitalizedName: String {
+ name.capitalized
+ }
+
+ public init(
+ creationDate: Date,
+ identifier: String,
+ name: String,
+ hijackDNS: Bool,
+ ipv4Address: IPAddressRange,
+ ipv6Address: IPAddressRange,
+ wgKeyData: StoredWgKeyData
+ ) {
+ self.creationDate = creationDate
+ self.identifier = identifier
+ self.name = name
+ self.hijackDNS = hijackDNS
+ self.ipv4Address = ipv4Address
+ self.ipv6Address = ipv6Address
+ self.wgKeyData = wgKeyData
+ }
+
+ /// Fill in part of the structure that contains device related properties from `Device` struct.
+ public mutating func update(from device: Device) {
+ identifier = device.id
+ name = device.name
+ creationDate = device.created
+ hijackDNS = device.hijackDNS
+ ipv4Address = device.ipv4Address
+ ipv6Address = device.ipv6Address
+ }
+}
diff --git a/ios/MullvadVPN/SettingsManager/TunnelSettings.swift b/ios/Settings/TunnelSettings.swift
index 91108d08be..f58c88c47c 100644
--- a/ios/MullvadVPN/SettingsManager/TunnelSettings.swift
+++ b/ios/Settings/TunnelSettings.swift
@@ -9,10 +9,10 @@
import Foundation
/// Alias to the latest version of the `TunnelSettings`.
-typealias LatestTunnelSettings = TunnelSettingsV2
+public typealias LatestTunnelSettings = TunnelSettingsV2
/// Settings and device state schema versions.
-enum SchemaVersion: Int, Equatable {
+public enum SchemaVersion: Int, Equatable {
/// Legacy settings format, stored as `TunnelSettingsV1`.
case v1 = 1
@@ -20,5 +20,5 @@ enum SchemaVersion: Int, Equatable {
case v2 = 2
/// Current schema version.
- static let current = SchemaVersion.v2
+ public static let current = SchemaVersion.v2
}
diff --git a/ios/MullvadVPN/SettingsManager/TunnelSettingsV1.swift b/ios/Settings/TunnelSettingsV1.swift
index da93003268..5148266e21 100644
--- a/ios/MullvadVPN/SettingsManager/TunnelSettingsV1.swift
+++ b/ios/Settings/TunnelSettingsV1.swift
@@ -14,24 +14,24 @@ import class WireGuardKitTypes.PrivateKey
import class WireGuardKitTypes.PublicKey
/// A struct that holds the configuration passed via `NETunnelProviderProtocol`.
-struct TunnelSettingsV1: Codable, Equatable {
- var relayConstraints = RelayConstraints()
- var interface = InterfaceSettings()
+public struct TunnelSettingsV1: Codable, Equatable {
+ public var relayConstraints = RelayConstraints()
+ public var interface = InterfaceSettings()
}
/// A struct that holds a tun interface configuration.
-struct InterfaceSettings: Codable, Equatable {
- var privateKey: PrivateKeyWithMetadata
- var nextPrivateKey: PrivateKeyWithMetadata?
+public struct InterfaceSettings: Codable, Equatable {
+ public var privateKey: PrivateKeyWithMetadata
+ public var nextPrivateKey: PrivateKeyWithMetadata?
- var addresses: [IPAddressRange]
- var dnsSettings: DNSSettings
+ public var addresses: [IPAddressRange]
+ public var dnsSettings: DNSSettings
private enum CodingKeys: String, CodingKey {
case privateKey, nextPrivateKey, addresses, dnsSettings
}
- init(
+ public init(
privateKey: PrivateKeyWithMetadata = PrivateKeyWithMetadata(),
nextPrivateKey: PrivateKeyWithMetadata? = nil,
addresses: [IPAddressRange] = [],
@@ -43,7 +43,7 @@ struct InterfaceSettings: Codable, Equatable {
self.dnsSettings = dnsSettings
}
- init(from decoder: Decoder) throws {
+ public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
privateKey = try container.decode(PrivateKeyWithMetadata.self, forKey: .privateKey)
@@ -60,7 +60,7 @@ struct InterfaceSettings: Codable, Equatable {
?? DNSSettings()
}
- func encode(to encoder: Encoder) throws {
+ public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(privateKey, forKey: .privateKey)
@@ -71,30 +71,30 @@ struct InterfaceSettings: Codable, Equatable {
}
/// A struct holding a private WireGuard key with associated metadata
-struct PrivateKeyWithMetadata: Equatable, Codable {
+public struct PrivateKeyWithMetadata: Equatable, Codable {
private enum CodingKeys: String, CodingKey {
case privateKey = "privateKeyData", creationDate
}
/// When the key was created
- let creationDate: Date
+ public let creationDate: Date
/// Private key
- let privateKey: PrivateKey
+ public let privateKey: PrivateKey
/// Public key
- var publicKey: PublicKey {
+ public var publicKey: PublicKey {
privateKey.publicKey
}
/// Initialize the new private key
- init() {
+ public init() {
privateKey = PrivateKey()
creationDate = Date()
}
/// Initialize with the existing private key
- init(privateKey: PrivateKey, createdAt: Date) {
+ public init(privateKey: PrivateKey, createdAt: Date) {
self.privateKey = privateKey
creationDate = createdAt
}
diff --git a/ios/Settings/TunnelSettingsV2.swift b/ios/Settings/TunnelSettingsV2.swift
new file mode 100644
index 0000000000..001cc3adb6
--- /dev/null
+++ b/ios/Settings/TunnelSettingsV2.swift
@@ -0,0 +1,57 @@
+//
+// TunnelSettingsV2.swift
+// MullvadVPN
+//
+// Created by pronebird on 27/04/2022.
+// Copyright © 2022 Mullvad VPN AB. All rights reserved.
+//
+
+import Foundation
+import MullvadTypes
+import struct Network.IPv4Address
+import struct WireGuardKitTypes.IPAddressRange
+import class WireGuardKitTypes.PrivateKey
+import class WireGuardKitTypes.PublicKey
+
+public struct TunnelSettingsV2: Codable, Equatable {
+ /// Relay constraints.
+ public var relayConstraints: RelayConstraints
+
+ /// DNS settings.
+ public var dnsSettings: DNSSettings
+
+ public init(
+ relayConstraints: RelayConstraints = RelayConstraints(),
+ dnsSettings: DNSSettings = DNSSettings()
+ ) {
+ self.relayConstraints = relayConstraints
+ self.dnsSettings = dnsSettings
+ }
+}
+
+public struct StoredWgKeyData: Codable, Equatable {
+ /// Private key creation date.
+ public var creationDate: Date
+
+ /// Last date a rotation was attempted. Nil if last attempt was successful.
+ public var lastRotationAttemptDate: Date?
+
+ /// Private key.
+ public var privateKey: PrivateKey
+
+ /// Next private key we're trying to rotate to.
+ /// Added in 2023.3
+ public var nextPrivateKey: PrivateKey?
+
+ public init(
+ creationDate: Date,
+ lastRotationAttemptDate: Date? = nil,
+ privateKey: PrivateKey,
+ nextPrivateKey: PrivateKey? = nil
+ ) {
+ self.creationDate = creationDate
+ self.lastRotationAttemptDate = lastRotationAttemptDate
+ self.privateKey = privateKey
+ self.nextPrivateKey = nextPrivateKey
+ }
+}