diff options
author | Roopesh Chander <roop@roopc.net> | 2019-02-21 17:56:52 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2019-02-21 17:57:13 +0530 |
commit | 69a064d954fe39c8dc7299814fda47470b488b62 (patch) | |
tree | f71ff838b5ed3a1887033d01ba7c483f3adf3964 /WireGuard/WireGuard/UI/TunnelViewModel.swift | |
parent | macOS: On saving, update AllowedIPs with the current DNS servers (diff) | |
download | wireguard-apple-69a064d954fe39c8dc7299814fda47470b488b62.tar.xz wireguard-apple-69a064d954fe39c8dc7299814fda47470b488b62.zip |
iOS: On changing DNS, update AllowedIPs with the current DNS servers
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard/UI/TunnelViewModel.swift')
-rw-r--r-- | WireGuard/WireGuard/UI/TunnelViewModel.swift | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/WireGuard/WireGuard/UI/TunnelViewModel.swift b/WireGuard/WireGuard/UI/TunnelViewModel.swift index b299bea..9daf1aa 100644 --- a/WireGuard/WireGuard/UI/TunnelViewModel.swift +++ b/WireGuard/WireGuard/UI/TunnelViewModel.swift @@ -432,7 +432,7 @@ class TunnelViewModel { let normalizedDNSServers = normalizedIPAddressRangeStrings(dnsServers) let ipv6Addresses = normalizedIPAddressRangeStrings(currentAllowedIPs.filter { $0.contains(":") }) if excludePrivateIPs { - return ipv6Addresses + TunnelViewModel.PeerData.ipv4DefaultRouteModRFC1918String + dnsServers + return ipv6Addresses + TunnelViewModel.PeerData.ipv4DefaultRouteModRFC1918String + normalizedDNSServers } else { return ipv6Addresses.filter { !normalizedDNSServers.contains($0) } + [TunnelViewModel.PeerData.ipv4DefaultRouteString] } @@ -523,6 +523,17 @@ class TunnelViewModel { } } + func updateDNSServersInAllowedIPsIfRequired(oldDNSServers: String, newDNSServers: String) -> Bool { + guard peersData.count == 1, let firstPeer = peersData.first else { return false } + guard firstPeer.shouldAllowExcludePrivateIPsControl && firstPeer.excludePrivateIPsValue else { return false } + let allowedIPStrings = firstPeer[.allowedIPs].splitToArray(trimmingCharacters: .whitespacesAndNewlines) + let oldDNSServerStrings = TunnelViewModel.PeerData.normalizedIPAddressRangeStrings(oldDNSServers.splitToArray(trimmingCharacters: .whitespacesAndNewlines)) + let newDNSServerStrings = TunnelViewModel.PeerData.normalizedIPAddressRangeStrings(newDNSServers.splitToArray(trimmingCharacters: .whitespacesAndNewlines)) + let updatedAllowedIPStrings = allowedIPStrings.filter { !oldDNSServerStrings.contains($0) } + newDNSServerStrings + firstPeer[.allowedIPs] = updatedAllowedIPStrings.joined(separator: ", ") + return true + } + func save() -> SaveResult<TunnelConfiguration> { let interfaceSaveResult = interfaceData.save() let peerSaveResults = peersData.map { $0.save() } // Save all, to help mark erroring fields in red |