From 35b51fef7a4030a60d0e250010e13c12171b7caa Mon Sep 17 00:00:00 2001 From: Jon Petersson Date: Thu, 9 Nov 2023 16:49:15 +0100 Subject: [PATCH] Exclude build folder from Swiftlint --- ios/.swiftlint.yml | 1 + ios/MullvadVPN/AppDelegate.swift | 23 +++--- .../Actor/PacketTunnelActor.swift | 82 ++++++++++++------- 3 files changed, 68 insertions(+), 38 deletions(-) diff --git a/ios/.swiftlint.yml b/ios/.swiftlint.yml index 5a66346daa4f..1d834d495456 100644 --- a/ios/.swiftlint.yml +++ b/ios/.swiftlint.yml @@ -18,6 +18,7 @@ included: # case-sensitive paths to include during linting. `--path` is ignored excluded: # case-sensitive paths to ignore during linting. Takes precedence over `included` - AdditionalAssets - Assets + - Build - Configurations - MullvadVPNScreenshots diff --git a/ios/MullvadVPN/AppDelegate.swift b/ios/MullvadVPN/AppDelegate.swift index bd8265b50c18..ec1ae459002e 100644 --- a/ios/MullvadVPN/AppDelegate.swift +++ b/ios/MullvadVPN/AppDelegate.swift @@ -69,16 +69,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD ) tunnelStore = TunnelStore(application: application) - - tunnelManager = TunnelManager( - application: application, - tunnelStore: tunnelStore, - relayCacheTracker: relayCacheTracker, - accountsProxy: accountsProxy, - devicesProxy: devicesProxy, - apiProxy: apiProxy, - accessTokenManager: proxyFactory.configuration.accessTokenManager - ) + tunnelManager = createTunnelManager(application: application) let constraintsUpdater = RelayConstraintsUpdater() relayConstraintsObserver = TunnelBlockObserver(didUpdateTunnelSettings: { _, settings in @@ -122,6 +113,18 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD return true } + private func createTunnelManager(application: UIApplication) -> TunnelManager { + return TunnelManager( + application: application, + tunnelStore: tunnelStore, + relayCacheTracker: relayCacheTracker, + accountsProxy: accountsProxy, + devicesProxy: devicesProxy, + apiProxy: apiProxy, + accessTokenManager: proxyFactory.configuration.accessTokenManager + ) + } + private func setUpProxies(containerURL: URL) { proxyFactory = REST.ProxyFactory.makeProxyFactory( transportProvider: REST.AnyTransportProvider { [weak self] in diff --git a/ios/PacketTunnelCore/Actor/PacketTunnelActor.swift b/ios/PacketTunnelCore/Actor/PacketTunnelActor.swift index 8d432ae3d1d2..6f72ef90859e 100644 --- a/ios/PacketTunnelCore/Actor/PacketTunnelActor.swift +++ b/ios/PacketTunnelCore/Actor/PacketTunnelActor.swift @@ -281,23 +281,14 @@ extension PacketTunnelActor { settings: Settings, reason: ReconnectReason ) throws -> ConnectionState? { - let relayConstraints = settings.relayConstraints - let privateKey = settings.privateKey - switch state { case .initial: - return ConnectionState( - selectedRelay: try selectRelay( - nextRelay: nextRelay, - relayConstraints: relayConstraints, - currentRelay: nil, - connectionAttemptCount: 0 - ), - relayConstraints: relayConstraints, - currentKey: privateKey, + return try makeConnectionStateInner( + nextRelay: nextRelay, + settings: settings, keyPolicy: .useCurrent, networkReachability: defaultPathObserver.defaultPath?.networkReachability ?? .undetermined, - connectionAttemptCount: 0 + lastKeyRotation: nil ) case var .connecting(connState), var .reconnecting(connState): @@ -312,6 +303,8 @@ extension PacketTunnelActor { fallthrough case var .connected(connState): + let relayConstraints = settings.relayConstraints + connState.selectedRelay = try selectRelay( nextRelay: nextRelay, relayConstraints: relayConstraints, @@ -319,23 +312,16 @@ extension PacketTunnelActor { connectionAttemptCount: connState.connectionAttemptCount ) connState.relayConstraints = relayConstraints - connState.currentKey = privateKey + connState.currentKey = settings.privateKey return connState case let .error(blockedState): - return ConnectionState( - selectedRelay: try selectRelay( - nextRelay: nextRelay, - relayConstraints: relayConstraints, - currentRelay: nil, - connectionAttemptCount: 0 - ), - relayConstraints: relayConstraints, - currentKey: privateKey, + return try makeConnectionStateInner( + nextRelay: nextRelay, + settings: settings, keyPolicy: blockedState.keyPolicy, networkReachability: blockedState.networkReachability, - connectionAttemptCount: 0, lastKeyRotation: blockedState.lastKeyRotation ) @@ -344,14 +330,52 @@ extension PacketTunnelActor { } } + /** + Create a connection state when `State` is either `.inital` or `.error`. + + - Parameters: + - nextRelay: Next relay to connect to. + - settings: Current settings. + - keyPolicy: Current key that should be used by the tunnel. + - networkReachability: Network connectivity outside of tunnel. + - lastKeyRotation: Last time packet tunnel rotated the key. + + - Returns: New connection state, or `nil` if new relay cannot be selected. + */ + private func makeConnectionStateInner( + nextRelay: NextRelay, + settings: Settings, + keyPolicy: KeyPolicy, + networkReachability: NetworkReachability, + lastKeyRotation: Date? + ) throws -> ConnectionState? { + let relayConstraints = settings.relayConstraints + let privateKey = settings.privateKey + + return ConnectionState( + selectedRelay: try selectRelay( + nextRelay: nextRelay, + relayConstraints: relayConstraints, + currentRelay: nil, + connectionAttemptCount: 0 + ), + relayConstraints: relayConstraints, + currentKey: privateKey, + keyPolicy: keyPolicy, + networkReachability: networkReachability, + connectionAttemptCount: 0, + lastKeyRotation: lastKeyRotation + ) + } + /** Select next relay to connect to based on `NextRelay` and other input parameters. - Parameters: - - nextRelay: next relay to connect to. - - relayConstraints: relay constraints. - - currentRelay: currently selected relay. - - connectionAttemptCount: number of failed connection attempts so far. + - nextRelay: next relay to connect to. + - relayConstraints: relay constraints. + - currentRelay: currently selected relay. + - connectionAttemptCount: number of failed connection attempts so far. - Returns: selector result that contains the credentials of the next relay that the tunnel should connect to. */ @@ -383,3 +407,5 @@ extension PacketTunnelActor { } extension PacketTunnelActor: PacketTunnelActorProtocol {} + +// swiftlint:disable:this file_length