Model: Use DNSServer in the Configuration model
Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
parent
e1b8b67890
commit
722b3f6c7b
|
@ -24,7 +24,7 @@ struct InterfaceConfiguration: Codable {
|
|||
var addresses: [IPAddressRange] = []
|
||||
var listenPort: UInt16? = nil
|
||||
var mtu: UInt64? = nil
|
||||
var dns: String? = nil
|
||||
var dns: [DNSServer] = []
|
||||
|
||||
init(name: String, privateKey: Data) {
|
||||
self.name = name
|
||||
|
|
|
@ -74,8 +74,8 @@ class TunnelViewModel {
|
|||
if let mtu = config.mtu {
|
||||
scratchpad[.mtu] = String(mtu)
|
||||
}
|
||||
if let dns = config.dns {
|
||||
scratchpad[.dns] = String(dns)
|
||||
if (!config.dns.isEmpty) {
|
||||
scratchpad[.dns] = config.dns.map { $0.stringRepresentation() }.joined(separator: ", ")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -124,9 +124,18 @@ class TunnelViewModel {
|
|||
errorMessages.append("Interface's MTU should be a number")
|
||||
}
|
||||
}
|
||||
// TODO: Validate DNS
|
||||
if let dnsString = scratchpad[.dns] {
|
||||
config.dns = dnsString
|
||||
var dnsServers: [DNSServer] = []
|
||||
for dnsServerString in dnsString.split(separator: ",") {
|
||||
let trimmedString = dnsServerString.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
|
||||
if let dnsServer = DNSServer(from: trimmedString) {
|
||||
dnsServers.append(dnsServer)
|
||||
} else {
|
||||
fieldsWithError.insert(.dns)
|
||||
errorMessages.append("Interface's DNS should be a list of comma-separated IP addresses")
|
||||
}
|
||||
}
|
||||
config.dns = dnsServers
|
||||
}
|
||||
|
||||
guard (errorMessages.isEmpty) else {
|
||||
|
|
Loading…
Reference in New Issue