aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/Shared
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-12-22 00:28:18 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2018-12-22 00:28:18 +0100
commit4ed646973ee4e1871cda792083bf4fe70afa8c3f (patch)
tree4f7df25ce19ada60ed792c729e562cb2b367a72b /WireGuard/Shared
parentFix paren typo (diff)
downloadwireguard-apple-4ed646973ee4e1871cda792083bf4fe70afa8c3f.tar.xz
wireguard-apple-4ed646973ee4e1871cda792083bf4fe70afa8c3f.zip
Move name from interface to tunnel
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'WireGuard/Shared')
-rw-r--r--WireGuard/Shared/LegacyConfigMigration.swift4
-rw-r--r--WireGuard/Shared/Model/InterfaceConfiguration.swift6
-rw-r--r--WireGuard/Shared/Model/TunnelConfiguration.swift4
-rw-r--r--WireGuard/Shared/NETunnelProviderProtocol+Extension.swift7
-rw-r--r--WireGuard/Shared/TunnelConfiguration+WgQuickConfig.swift12
5 files changed, 17 insertions, 16 deletions
diff --git a/WireGuard/Shared/LegacyConfigMigration.swift b/WireGuard/Shared/LegacyConfigMigration.swift
index 6d27fa5..b67301f 100644
--- a/WireGuard/Shared/LegacyConfigMigration.swift
+++ b/WireGuard/Shared/LegacyConfigMigration.swift
@@ -96,7 +96,7 @@ struct LegacyInterfaceConfiguration: LegacyModel {
let dns: [LegacyDNSServer]
var migrated: InterfaceConfiguration {
- var interface = InterfaceConfiguration(name: name, privateKey: privateKey)
+ var interface = InterfaceConfiguration(privateKey: privateKey)
interface.addresses = addresses.migrated
interface.listenPort = listenPort
interface.mtu = mtu
@@ -167,7 +167,7 @@ final class LegacyTunnelConfiguration: LegacyModel {
let peers: [LegacyPeerConfiguration]
var migrated: TunnelConfiguration {
- return TunnelConfiguration(interface: interface.migrated, peers: peers.migrated)
+ return TunnelConfiguration(name: interface.name, interface: interface.migrated, peers: peers.migrated)
}
}
diff --git a/WireGuard/Shared/Model/InterfaceConfiguration.swift b/WireGuard/Shared/Model/InterfaceConfiguration.swift
index ff804a6..ef33907 100644
--- a/WireGuard/Shared/Model/InterfaceConfiguration.swift
+++ b/WireGuard/Shared/Model/InterfaceConfiguration.swift
@@ -4,18 +4,16 @@
import Foundation
struct InterfaceConfiguration {
- var name: String?
var privateKey: Data
var addresses = [IPAddressRange]()
var listenPort: UInt16?
var mtu: UInt16?
var dns = [DNSServer]()
- init(name: String?, privateKey: Data) {
- self.name = name
- self.privateKey = privateKey
+ init(privateKey: Data) {
if privateKey.count != TunnelConfiguration.keyLength {
fatalError("Invalid private key")
}
+ self.privateKey = privateKey
}
}
diff --git a/WireGuard/Shared/Model/TunnelConfiguration.swift b/WireGuard/Shared/Model/TunnelConfiguration.swift
index 2e394ee..bee3c9d 100644
--- a/WireGuard/Shared/Model/TunnelConfiguration.swift
+++ b/WireGuard/Shared/Model/TunnelConfiguration.swift
@@ -4,14 +4,16 @@
import Foundation
final class TunnelConfiguration {
+ var name: String?
var interface: InterfaceConfiguration
let peers: [PeerConfiguration]
static let keyLength = 32
- init(interface: InterfaceConfiguration, peers: [PeerConfiguration]) {
+ init(name: String?, interface: InterfaceConfiguration, peers: [PeerConfiguration]) {
self.interface = interface
self.peers = peers
+ self.name = name
let peerPublicKeysArray = peers.map { $0.publicKey }
let peerPublicKeysSet = Set<Data>(peerPublicKeysArray)
diff --git a/WireGuard/Shared/NETunnelProviderProtocol+Extension.swift b/WireGuard/Shared/NETunnelProviderProtocol+Extension.swift
index 2f6ea1f..258c968 100644
--- a/WireGuard/Shared/NETunnelProviderProtocol+Extension.swift
+++ b/WireGuard/Shared/NETunnelProviderProtocol+Extension.swift
@@ -27,13 +27,14 @@ extension NETunnelProviderProtocol {
serverAddress = "Multiple endpoints"
}
- username = tunnelConfiguration.interface.name
+ //TODO(roopc): Why are we doing this? Just for kicks? Is it useful? Seems needless.
+ username = tunnelConfiguration.name
}
- func tunnelConfiguration(name: String?) -> TunnelConfiguration? {
+ func asTunnelConfiguration(called name: String? = nil) -> TunnelConfiguration? {
migrateConfigurationIfNeeded()
guard let serializedConfig = providerConfiguration?[Keys.wgQuickConfig.rawValue] as? String else { return nil }
- return try? TunnelConfiguration(serializedConfig, name: name)
+ return try? TunnelConfiguration(fromWgQuickConfig: serializedConfig, called: name)
}
}
diff --git a/WireGuard/Shared/TunnelConfiguration+WgQuickConfig.swift b/WireGuard/Shared/TunnelConfiguration+WgQuickConfig.swift
index 96b5413..94e1079 100644
--- a/WireGuard/Shared/TunnelConfiguration+WgQuickConfig.swift
+++ b/WireGuard/Shared/TunnelConfiguration+WgQuickConfig.swift
@@ -20,8 +20,8 @@ extension TunnelConfiguration {
case invalidPeer
}
- //swiftlint:disable:next cyclomatic_complexity function_body_length
- convenience init(_ wgQuickConfig: String, name: String?) throws {
+ //swiftlint:disable:next function_body_length cyclomatic_complexity
+ convenience init(fromWgQuickConfig wgQuickConfig: String, called name: String? = nil) throws {
var interfaceConfiguration: InterfaceConfiguration?
var peerConfigurations = [PeerConfiguration]()
@@ -62,7 +62,7 @@ extension TunnelConfiguration {
if isLastLine || lowercasedLine == "[interface]" || lowercasedLine == "[peer]" {
// Previous section has ended; process the attributes collected so far
if parserState == .inInterfaceSection {
- guard let interface = TunnelConfiguration.collate(interfaceAttributes: attributes, name: name) else { throw ParseError.invalidInterface }
+ guard let interface = TunnelConfiguration.collate(interfaceAttributes: attributes) else { throw ParseError.invalidInterface }
guard interfaceConfiguration == nil else { throw ParseError.multipleInterfaces }
interfaceConfiguration = interface
} else if parserState == .inPeerSection {
@@ -87,7 +87,7 @@ extension TunnelConfiguration {
}
if let interfaceConfiguration = interfaceConfiguration {
- self.init(interface: interfaceConfiguration, peers: peerConfigurations)
+ self.init(name: name, interface: interfaceConfiguration, peers: peerConfigurations)
} else {
throw ParseError.noInterface
}
@@ -133,11 +133,11 @@ extension TunnelConfiguration {
}
//swiftlint:disable:next cyclomatic_complexity
- private static func collate(interfaceAttributes attributes: [String: String], name: String?) -> InterfaceConfiguration? {
+ private static func collate(interfaceAttributes attributes: [String: String]) -> InterfaceConfiguration? {
// required wg fields
guard let privateKeyString = attributes["privatekey"] else { return nil }
guard let privateKey = Data(base64Encoded: privateKeyString), privateKey.count == TunnelConfiguration.keyLength else { return nil }
- var interface = InterfaceConfiguration(name: name, privateKey: privateKey)
+ var interface = InterfaceConfiguration(privateKey: privateKey)
// other wg fields
if let listenPortString = attributes["listenport"] {
guard let listenPort = UInt16(listenPortString) else { return nil }