diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2021-10-11 15:08:28 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2021-11-03 13:30:52 +0100 |
| commit | d1ffa0fac1ff22394bccf6551f7476e22fbd2dcc (patch) | |
| tree | 3c04b17dbfe2554c7e0ff21b7992ccbb4b4e1a61 /ios | |
| parent | 117f08339a687886a43ab68fb2f9c3f58a6c77e1 (diff) | |
| download | mullvadvpn-d1ffa0fac1ff22394bccf6551f7476e22fbd2dcc.tar.xz mullvadvpn-d1ffa0fac1ff22394bccf6551f7476e22fbd2dcc.zip | |
PacketTunnel: apply custom DNS configuration
Diffstat (limited to 'ios')
| -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] + } } } } |
