summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2024-01-30 14:27:57 +0100
committerBug Magnet <marco.nikic@mullvad.net>2024-01-30 14:27:57 +0100
commit620b3f5f29213c23d0d27ee2e3653b266256d429 (patch)
treef98213ede61acc6a899e102303eb6b26cebde49b
parente93f97c9cf677563d7cc4cea9852538cf7c2dcaf (diff)
parent03f17f3c36fc16071721a2f038bebd9fdb78f793 (diff)
downloadmullvadvpn-620b3f5f29213c23d0d27ee2e3653b266256d429.tar.xz
mullvadvpn-620b3f5f29213c23d0d27ee2e3653b266256d429.zip
Merge branch 'trigger-the-local-network-alert-before-trying-local-ios-465'
-rw-r--r--ios/MullvadVPN.xcodeproj/project.pbxproj4
-rw-r--r--ios/MullvadVPN/AccessMethodRepository/LocalNetworkProbe.swift28
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/Add/AddAccessMethodCoordinator.swift1
-rw-r--r--ios/MullvadVPN/Supporting Files/Info.plist2
4 files changed, 35 insertions, 0 deletions
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj
index 6ea30d83c4..f65b281bb3 100644
--- a/ios/MullvadVPN.xcodeproj/project.pbxproj
+++ b/ios/MullvadVPN.xcodeproj/project.pbxproj
@@ -616,6 +616,7 @@
A97D25B42B0CB59300946B2D /* TunnelObfuscationStub.swift in Sources */ = {isa = PBXBuildFile; fileRef = A97D25B32B0CB59300946B2D /* TunnelObfuscationStub.swift */; };
A97D30172AE6B5E90045C0E4 /* StoredWgKeyData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A97D30162AE6B5E90045C0E4 /* StoredWgKeyData.swift */; };
A97FF5502A0D2FFC00900996 /* NSFileCoordinator+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A97FF54F2A0D2FFC00900996 /* NSFileCoordinator+Extensions.swift */; };
+ A98502032B627B120061901E /* LocalNetworkProbe.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98502022B627B120061901E /* LocalNetworkProbe.swift */; };
A988A3E22AFE54AC0008D2C7 /* AccountExpiry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A6F2FA62AFBB9AE006D0856 /* AccountExpiry.swift */; };
A988DF272ADE86ED00D807EF /* WireGuardObfuscationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = A988DF252ADE86ED00D807EF /* WireGuardObfuscationSettings.swift */; };
A988DF2A2ADE880300D807EF /* TunnelSettingsV3.swift in Sources */ = {isa = PBXBuildFile; fileRef = A988DF282ADE880300D807EF /* TunnelSettingsV3.swift */; };
@@ -1772,6 +1773,7 @@
A97D25B32B0CB59300946B2D /* TunnelObfuscationStub.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelObfuscationStub.swift; sourceTree = "<group>"; };
A97D30162AE6B5E90045C0E4 /* StoredWgKeyData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoredWgKeyData.swift; sourceTree = "<group>"; };
A97FF54F2A0D2FFC00900996 /* NSFileCoordinator+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSFileCoordinator+Extensions.swift"; sourceTree = "<group>"; };
+ A98502022B627B120061901E /* LocalNetworkProbe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalNetworkProbe.swift; sourceTree = "<group>"; };
A988DF252ADE86ED00D807EF /* WireGuardObfuscationSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WireGuardObfuscationSettings.swift; sourceTree = "<group>"; };
A988DF282ADE880300D807EF /* TunnelSettingsV3.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelSettingsV3.swift; sourceTree = "<group>"; };
A9A1DE782AD5708E0073F689 /* TransportStrategy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransportStrategy.swift; sourceTree = "<group>"; };
@@ -2169,6 +2171,7 @@
5827B0A22B0E068800CCBBA1 /* AccessMethodRepository */ = {
isa = PBXGroup;
children = (
+ A98502022B627B120061901E /* LocalNetworkProbe.swift */,
58EF87562B16330B00C098B2 /* ProxyConfigurationTester.swift */,
58EF875C2B1638BF00C098B2 /* ProxyConfigurationTesterProtocol.swift */,
);
@@ -4896,6 +4899,7 @@
F0C6FA852A6A733700F521F0 /* InAppPurchaseInteractor.swift in Sources */,
58CEB2F92AFD136E00E6E088 /* UIBackgroundConfiguration+Extensions.swift in Sources */,
5878F50029CDA742003D4BE2 /* UIView+AutoLayoutBuilder.swift in Sources */,
+ A98502032B627B120061901E /* LocalNetworkProbe.swift in Sources */,
583FE01029C0F532006E85F9 /* CustomSplitViewController.swift in Sources */,
7A6F2FA92AFD0842006D0856 /* CustomDNSDataSource.swift in Sources */,
58EF580B25D69D7A00AEBA94 /* ProblemReportSubmissionOverlayView.swift in Sources */,
diff --git a/ios/MullvadVPN/AccessMethodRepository/LocalNetworkProbe.swift b/ios/MullvadVPN/AccessMethodRepository/LocalNetworkProbe.swift
new file mode 100644
index 0000000000..a231e11acb
--- /dev/null
+++ b/ios/MullvadVPN/AccessMethodRepository/LocalNetworkProbe.swift
@@ -0,0 +1,28 @@
+//
+// LocalNetworkProbe.swift
+// MullvadVPN
+//
+// Created by Marco Nikic on 2024-01-25.
+// Copyright © 2024 Mullvad VPN AB. All rights reserved.
+//
+
+import Foundation
+import Network
+
+struct LocalNetworkProbe {
+ /// Does a best effort attempt to trigger the local network privacy alert.
+ func triggerLocalNetworkPrivacyAlert() {
+ let dispatchQueue = DispatchQueue(label: "com.mullvad.localNetworkAlert")
+ let localIpv4Connection = NWConnection(
+ to: NWEndpoint.hostPort(host: .ipv4(.broadcast), port: .any),
+ using: .udp
+ )
+ localIpv4Connection.start(queue: dispatchQueue)
+
+ let localIpv6Connection = NWConnection(
+ to: NWEndpoint.hostPort(host: .ipv6(.broadcast), port: .any),
+ using: .udp
+ )
+ localIpv6Connection.start(queue: dispatchQueue)
+ }
+}
diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Add/AddAccessMethodCoordinator.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Add/AddAccessMethodCoordinator.swift
index 8c81f79f6e..d6ea38a426 100644
--- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Add/AddAccessMethodCoordinator.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Add/AddAccessMethodCoordinator.swift
@@ -46,6 +46,7 @@ class AddAccessMethodCoordinator: Coordinator, Presentable, Presenting {
setUpControllerNavigationItem(controller)
controller.delegate = self
+ LocalNetworkProbe().triggerLocalNetworkPrivacyAlert()
navigationController.pushViewController(controller, animated: false)
}
diff --git a/ios/MullvadVPN/Supporting Files/Info.plist b/ios/MullvadVPN/Supporting Files/Info.plist
index a4d5f8c98e..3c3dd00b6f 100644
--- a/ios/MullvadVPN/Supporting Files/Info.plist
+++ b/ios/MullvadVPN/Supporting Files/Info.plist
@@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
+ <key>NSLocalNetworkUsageDescription</key>
+ <string>The app needs this to connect and test a new method.</string>
<key>ApplicationSecurityGroupIdentifier</key>
<string>$(SECURITY_GROUP_IDENTIFIER)</string>
<key>MainApplicationIdentifier</key>