diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2023-10-12 14:43:20 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2023-10-13 10:51:02 +0200 |
| commit | 1503b2a26953eb01b070c347721922729b6828d6 (patch) | |
| tree | 588558914b15ed38350ac039c23783605c7d00f7 | |
| parent | 0e00f4056fbcf6b047fe1da7b4e4b4f24f9c9efc (diff) | |
| download | mullvadvpn-1503b2a26953eb01b070c347721922729b6828d6.tar.xz mullvadvpn-1503b2a26953eb01b070c347721922729b6828d6.zip | |
Log same-ip on each connection attempt
| -rw-r--r-- | ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift | 31 | ||||
| -rw-r--r-- | ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift | 21 |
2 files changed, 19 insertions, 33 deletions
diff --git a/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift b/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift index 3f4598da36..1c155ca7bc 100644 --- a/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift +++ b/ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift @@ -24,7 +24,6 @@ class PacketTunnelProvider: NEPacketTunnelProvider { private var appMessageHandler: AppMessageHandler! private var stateObserverTask: AnyTask? private var deviceChecker: DeviceChecker! - private var isLoggedSameIP = false override init() { Self.configureLogging() @@ -128,36 +127,6 @@ class PacketTunnelProvider: NEPacketTunnelProvider { } extension PacketTunnelProvider { - override func setTunnelNetworkSettings( - _ tunnelNetworkSettings: NETunnelNetworkSettings?, - completionHandler: ((Error?) -> Void)? = nil - ) { - if let networkSettings = tunnelNetworkSettings as? NEPacketTunnelNetworkSettings { - let ipv4Addresses = networkSettings.ipv4Settings?.addresses.compactMap { IPv4Address($0) } ?? [] - let ipv6Addresses = networkSettings.ipv6Settings?.addresses.compactMap { IPv6Address($0) } ?? [] - let allIPAddresses: [IPAddress] = ipv4Addresses + ipv6Addresses - - if !allIPAddresses.isEmpty, !isLoggedSameIP { - isLoggedSameIP = true - logIfDeviceHasSameIP(than: allIPAddresses) - } - } - - super.setTunnelNetworkSettings(tunnelNetworkSettings, completionHandler: completionHandler) - } - - private func logIfDeviceHasSameIP(than addresses: [IPAddress]) { - let hasIPv4SameAddress = addresses.compactMap { $0 as? IPv4Address } - .contains { $0 == ApplicationConfiguration.sameIPv4 } - let hasIPv6SameAddress = addresses.compactMap { $0 as? IPv6Address } - .contains { $0 == ApplicationConfiguration.sameIPv6 } - - let isUsingSameIP = (hasIPv4SameAddress || hasIPv6SameAddress) ? "" : "NOT " - providerLogger.debug("Same IP is \(isUsingSameIP)being used") - } -} - -extension PacketTunnelProvider { private static func configureLogging() { var loggerBuilder = LoggerBuilder() let pid = ProcessInfo.processInfo.processIdentifier diff --git a/ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift b/ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift index e373b0e573..ae815f3692 100644 --- a/ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift +++ b/ios/PacketTunnel/WireGuardAdapter/WgAdapter.swift @@ -14,16 +14,17 @@ import PacketTunnelCore import WireGuardKit struct WgAdapter: TunnelAdapterProtocol { + let logger = Logger(label: "WgAdapter") let adapter: WireGuardAdapter init(packetTunnelProvider: NEPacketTunnelProvider) { - let logger = Logger(label: "WireGuard") + let wgGoLogger = Logger(label: "WireGuard") adapter = WireGuardAdapter( with: packetTunnelProvider, shouldHandleReasserting: false, logHandler: { logLevel, string in - logger.log(level: logLevel.loggerLevel, "\(string)") + wgGoLogger.log(level: logLevel.loggerLevel, "\(string)") } ) } @@ -35,11 +36,27 @@ struct WgAdapter: TunnelAdapterProtocol { } catch WireGuardAdapterError.invalidState { try await adapter.start(tunnelConfiguration: wgConfig) } + + let tunAddresses = wgConfig.interface.addresses.map { $0.address } + // TUN addresses can be empty when adapter is configured for blocked state. + if !tunAddresses.isEmpty { + logIfDeviceHasSameIP(than: tunAddresses) + } } func stop() async throws { try await adapter.stop() } + + private func logIfDeviceHasSameIP(than addresses: [IPAddress]) { + let hasIPv4SameAddress = addresses.compactMap { $0 as? IPv4Address } + .contains { $0 == ApplicationConfiguration.sameIPv4 } + let hasIPv6SameAddress = addresses.compactMap { $0 as? IPv6Address } + .contains { $0 == ApplicationConfiguration.sameIPv6 } + + let isUsingSameIP = (hasIPv4SameAddress || hasIPv6SameAddress) ? "" : "NOT " + logger.debug("Same IP is \(isUsingSameIP)being used") + } } extension WgAdapter: TunnelDeviceInfoProtocol { |
