diff options
| -rw-r--r-- | ios/MullvadVPN/TunnelSettings.swift | 5 | ||||
| -rw-r--r-- | ios/PacketTunnel/PacketTunnelProvider.swift | 25 |
2 files changed, 20 insertions, 10 deletions
diff --git a/ios/MullvadVPN/TunnelSettings.swift b/ios/MullvadVPN/TunnelSettings.swift index 9f3b47162d..fcbdebbe81 100644 --- a/ios/MullvadVPN/TunnelSettings.swift +++ b/ios/MullvadVPN/TunnelSettings.swift @@ -73,6 +73,11 @@ struct DNSSettings: Codable, Equatable { /// Custom DNS domains. var customDNSDomains: [AnyIPAddress] = [] + /// Effective state of the custom DNS setting. + var effectiveEnableCustomDNS: Bool { + return !blockAdvertising && !blockTracking && enableCustomDNS && !customDNSDomains.isEmpty + } + private enum CodingKeys: String, CodingKey { case blockAdvertising, blockTracking, enableCustomDNS, customDNSDomains } diff --git a/ios/PacketTunnel/PacketTunnelProvider.swift b/ios/PacketTunnel/PacketTunnelProvider.swift index 8bd55358b8..cff2438130 100644 --- a/ios/PacketTunnel/PacketTunnelProvider.swift +++ b/ios/PacketTunnel/PacketTunnelProvider.swift @@ -292,7 +292,6 @@ struct PacketTunnelConfiguration { } extension PacketTunnelConfiguration { - var wgTunnelConfig: TunnelConfiguration { let mullvadEndpoint = selectorResult.endpoint var peers = [mullvadEndpoint.ipv4RelayEndpoint] @@ -323,15 +322,21 @@ extension PacketTunnelConfiguration { let mullvadEndpoint = selectorResult.endpoint let dnsSettings = tunnelSettings.interface.dnsSettings - switch (dnsSettings.blockAdvertising, dnsSettings.blockTracking) { - case (true, false): - return [IPv4Address("100.64.0.1")!] - case (false, true): - return [IPv4Address("100.64.0.2")!] - case (true, true): - return [IPv4Address("100.64.0.3")!] - case (false, false): - return [mullvadEndpoint.ipv4Gateway, mullvadEndpoint.ipv6Gateway] + if dnsSettings.effectiveEnableCustomDNS { + let dnsServers = dnsSettings.customDNSDomains + .prefix(DNSSettings.maxAllowedCustomDNSDomains) + return Array(dnsServers) + } else { + switch (dnsSettings.blockAdvertising, dnsSettings.blockTracking) { + case (true, false): + return [IPv4Address("100.64.0.1")!] + case (false, true): + return [IPv4Address("100.64.0.2")!] + case (true, true): + return [IPv4Address("100.64.0.3")!] + case (false, false): + return [mullvadEndpoint.ipv4Gateway, mullvadEndpoint.ipv6Gateway] + } } } } |
