From ba3f0db92c141b7b6c300d0644a1679cee23b77b Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Sat, 16 Feb 2019 19:57:31 +0530 Subject: TunnelViewModel: Remove DNS from AllowedIPs when unchecking 'Exclude private IPs' Signed-off-by: Roopesh Chander --- WireGuard/WireGuard/UI/TunnelViewModel.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'WireGuard') diff --git a/WireGuard/WireGuard/UI/TunnelViewModel.swift b/WireGuard/WireGuard/UI/TunnelViewModel.swift index 8f95039..b299bea 100644 --- a/WireGuard/WireGuard/UI/TunnelViewModel.swift +++ b/WireGuard/WireGuard/UI/TunnelViewModel.swift @@ -424,12 +424,17 @@ class TunnelViewModel { shouldStronglyRecommendDNS = allowedIPStrings.contains(TunnelViewModel.PeerData.ipv4DefaultRouteString) || allowedIPStrings.isSuperset(of: TunnelViewModel.PeerData.ipv4DefaultRouteModRFC1918String) } + static func normalizedIPAddressRangeStrings(_ list: [String]) -> [String] { + return list.compactMap { IPAddressRange(from: $0) }.map { $0.stringRepresentation } + } + static func modifiedAllowedIPs(currentAllowedIPs: [String], excludePrivateIPs: Bool, dnsServers: [String]) -> [String] { - let ipv6Addresses = currentAllowedIPs.filter { $0.contains(":") } + let normalizedDNSServers = normalizedIPAddressRangeStrings(dnsServers) + let ipv6Addresses = normalizedIPAddressRangeStrings(currentAllowedIPs.filter { $0.contains(":") }) if excludePrivateIPs { return ipv6Addresses + TunnelViewModel.PeerData.ipv4DefaultRouteModRFC1918String + dnsServers } else { - return ipv6Addresses + [TunnelViewModel.PeerData.ipv4DefaultRouteString] + return ipv6Addresses.filter { !normalizedDNSServers.contains($0) } + [TunnelViewModel.PeerData.ipv4DefaultRouteString] } } -- cgit v1.2.3-59-g8ed1b