Skip to content

Commit

Permalink
PacketTunnel: backport same IP logging.
Browse files Browse the repository at this point in the history
Commit: cfde812
  • Loading branch information
Andrej Mihajlov committed Oct 5, 2023
1 parent 00b6502 commit a2e29f5
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions ios/PacketTunnel/PacketTunnelProvider/PacketTunnelProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
private var appMessageHandler: AppMessageHandler!
private var stateObserverTask: AnyTask?
private var deviceChecker: DeviceChecker!
private var isLoggedSameIP = false

override init() {
Self.configureLogging()
Expand Down Expand Up @@ -120,6 +121,36 @@ 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()
Expand Down

0 comments on commit a2e29f5

Please sign in to comment.