aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI
diff options
context:
space:
mode:
authorEric Kuck <eric@bluelinelabs.com>2018-12-20 10:46:26 -0600
committerEric Kuck <eric@bluelinelabs.com>2018-12-20 10:46:26 -0600
commit5618c465a2e6ee4ccefd005ed439206062cd6ba6 (patch)
tree8ced66791c2df834dd88303b7a56229c1248cff2 /WireGuard/WireGuard/UI
parentTunnelErrors: Remove unused error (diff)
downloadwireguard-apple-5618c465a2e6ee4ccefd005ed439206062cd6ba6.tar.xz
wireguard-apple-5618c465a2e6ee4ccefd005ed439206062cd6ba6.zip
Added a String->[String] helper
Signed-off-by: Eric Kuck <eric@bluelinelabs.com>
Diffstat (limited to '')
-rw-r--r--WireGuard/WireGuard/UI/TunnelViewModel.swift32
-rw-r--r--WireGuard/WireGuard/UI/iOS/String+ArrayConversion.swift32
2 files changed, 42 insertions, 22 deletions
diff --git a/WireGuard/WireGuard/UI/TunnelViewModel.swift b/WireGuard/WireGuard/UI/TunnelViewModel.swift
index 7e19bb7..1a88da2 100644
--- a/WireGuard/WireGuard/UI/TunnelViewModel.swift
+++ b/WireGuard/WireGuard/UI/TunnelViewModel.swift
@@ -117,9 +117,8 @@ class TunnelViewModel {
var errorMessages = [String]()
if let addressesString = scratchpad[.addresses] {
var addresses = [IPAddressRange]()
- for addressString in addressesString.split(separator: ",") {
- let trimmedString = addressString.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
- if let address = IPAddressRange(from: trimmedString) {
+ for addressString in addressesString.splitToArray(trimmingCharacters: .whitespacesAndNewlines) {
+ if let address = IPAddressRange(from: addressString) {
addresses.append(address)
} else {
fieldsWithError.insert(.addresses)
@@ -146,9 +145,8 @@ class TunnelViewModel {
}
if let dnsString = scratchpad[.dns] {
var dnsServers = [DNSServer]()
- for dnsServerString in dnsString.split(separator: ",") {
- let trimmedString = dnsServerString.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
- if let dnsServer = DNSServer(from: trimmedString) {
+ for dnsServerString in dnsString.splitToArray(trimmingCharacters: .whitespacesAndNewlines) {
+ if let dnsServer = DNSServer(from: dnsServerString) {
dnsServers.append(dnsServer)
} else {
fieldsWithError.insert(.dns)
@@ -169,7 +167,7 @@ class TunnelViewModel {
if TunnelViewModel.interfaceFieldsWithControl.contains(field) {
return true
}
- return (!self[field].isEmpty)
+ return !self[field].isEmpty
}
// TODO: Cache this to avoid recomputing
}
@@ -263,9 +261,8 @@ class TunnelViewModel {
}
if let allowedIPsString = scratchpad[.allowedIPs] {
var allowedIPs = [IPAddressRange]()
- for allowedIPString in allowedIPsString.split(separator: ",") {
- let trimmedString = allowedIPString.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
- if let allowedIP = IPAddressRange(from: trimmedString) {
+ for allowedIPString in allowedIPsString.splitToArray(trimmingCharacters: .whitespacesAndNewlines) {
+ if let allowedIP = IPAddressRange(from: allowedIPString) {
allowedIPs.append(allowedIP)
} else {
fieldsWithError.insert(.allowedIPs)
@@ -326,11 +323,7 @@ class TunnelViewModel {
if scratchpad.isEmpty {
populateScratchpad()
}
- let allowedIPStrings = Set<String>(
- (scratchpad[.allowedIPs] ?? "")
- .split(separator: ",")
- .map { $0.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) }
- )
+ let allowedIPStrings = Set<String>(scratchpad[.allowedIPs].splitToArray(trimmingCharacters: .whitespacesAndNewlines))
if allowedIPStrings.contains(TunnelViewModel.PeerData.ipv4DefaultRouteString) {
shouldAllowExcludePrivateIPsControl = true
excludePrivateIPsValue = false
@@ -344,12 +337,8 @@ class TunnelViewModel {
}
func excludePrivateIPsValueChanged(isOn: Bool, dnsServers: String) {
- let allowedIPStrings = (scratchpad[.allowedIPs] ?? "")
- .split(separator: ",")
- .map { $0.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) }
- let dnsServerStrings = dnsServers
- .split(separator: ",")
- .map { $0.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) }
+ let allowedIPStrings = scratchpad[.allowedIPs].splitToArray(trimmingCharacters: .whitespacesAndNewlines)
+ let dnsServerStrings = dnsServers.splitToArray(trimmingCharacters: .whitespacesAndNewlines)
let ipv6Addresses = allowedIPStrings.filter { $0.contains(":") }
let modifiedAllowedIPStrings: [String]
if isOn {
@@ -476,5 +465,4 @@ extension TunnelViewModel {
static func defaultActivateOnDemandOption() -> ActivateOnDemandOption {
return .useOnDemandOverWiFiOrCellular
}
-
}
diff --git a/WireGuard/WireGuard/UI/iOS/String+ArrayConversion.swift b/WireGuard/WireGuard/UI/iOS/String+ArrayConversion.swift
new file mode 100644
index 0000000..9b69cf4
--- /dev/null
+++ b/WireGuard/WireGuard/UI/iOS/String+ArrayConversion.swift
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018 WireGuard LLC. All Rights Reserved.
+
+import Foundation
+
+extension String {
+
+ func splitToArray(separator: Character = ",", trimmingCharacters: CharacterSet? = nil) -> [String] {
+ return split(separator: separator)
+ .map {
+ if let charSet = trimmingCharacters {
+ return $0.trimmingCharacters(in: charSet)
+ } else {
+ return String($0)
+ }
+ }
+ }
+
+}
+
+extension Optional where Wrapped == String {
+
+ func splitToArray(separator: Character = ",", trimmingCharacters: CharacterSet? = nil) -> [String] {
+ switch self {
+ case .none:
+ return []
+ case .some(let wrapped):
+ return wrapped.splitToArray(separator: separator, trimmingCharacters: trimmingCharacters)
+ }
+ }
+
+}