aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/Shared/Model/Configuration.swift
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2018-11-10 19:08:21 +0530
committerRoopesh Chander <roop@roopc.net>2018-11-11 01:17:36 +0530
commit4b7094d652c657de0b802dcee91f0ccf2e07bb58 (patch)
treeb6c1b06b43aebb27f3292261c33d6e19d4b8eb59 /WireGuard/Shared/Model/Configuration.swift
parentModel: ActivityType enum to represent VPN-on-demand options (diff)
downloadwireguard-apple-4b7094d652c657de0b802dcee91f0ccf2e07bb58.tar.xz
wireguard-apple-4b7094d652c657de0b802dcee91f0ccf2e07bb58.zip
Model: Add activationType to tunnel configuration
We make sure existing tunnel serializations can be deserialized correctly. We also bump up the tunnelConfigurationVersion, because the tunnel configuration contents have changed. Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to '')
-rw-r--r--WireGuard/Shared/Model/Configuration.swift6
1 files changed, 6 insertions, 0 deletions
diff --git a/WireGuard/Shared/Model/Configuration.swift b/WireGuard/Shared/Model/Configuration.swift
index 45c29c1..f6598bb 100644
--- a/WireGuard/Shared/Model/Configuration.swift
+++ b/WireGuard/Shared/Model/Configuration.swift
@@ -7,9 +7,11 @@ import Foundation
final class TunnelConfiguration {
var interface: InterfaceConfiguration
let peers: [PeerConfiguration]
+ var activationType: ActivationType
init(interface: InterfaceConfiguration, peers: [PeerConfiguration]) {
self.interface = interface
self.peers = peers
+ self.activationType = .activateManually
let peerPublicKeysArray = peers.map { $0.publicKey }
let peerPublicKeysSet = Set<Data>(peerPublicKeysArray)
@@ -61,11 +63,15 @@ extension TunnelConfiguration: Decodable {
enum CodingKeys: CodingKey {
case interface
case peers
+ case activationType
}
convenience init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
let interface = try values.decode(InterfaceConfiguration.self, forKey: .interface)
let peers = try values.decode([PeerConfiguration].self, forKey: .peers)
+ let activationType = (try? values.decode(ActivationType.self, forKey: .activationType)) ?? .activateManually
+
self.init(interface: interface, peers: peers)
+ self.activationType = activationType
}
}