From cc122d7463f98ab3f26d46ab849173ffd58d7951 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Mon, 12 Nov 2018 14:02:09 +0530 Subject: Model, Tunnels manager: Rewrite the model for VPN-on-demand The VPN-on-demand settings should not be part of the tunnel configuration. Rather, the onDemandRules stored in the tunnel provider configuration serve as the one place where the VPN-on-demand settings are stored. Signed-off-by: Roopesh Chander --- WireGuard/Shared/Model/ActivationType.swift | 66 ---------------------- WireGuard/Shared/Model/Configuration.swift | 22 +------- .../NETunnelProviderProtocol+Extension.swift | 2 +- 3 files changed, 2 insertions(+), 88 deletions(-) delete mode 100644 WireGuard/Shared/Model/ActivationType.swift (limited to 'WireGuard/Shared') diff --git a/WireGuard/Shared/Model/ActivationType.swift b/WireGuard/Shared/Model/ActivationType.swift deleted file mode 100644 index ea5927d..0000000 --- a/WireGuard/Shared/Model/ActivationType.swift +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-License-Identifier: MIT -// Copyright © 2018 WireGuard LLC. All Rights Reserved. - -enum ActivationType { - case activateManually - case useOnDemandOverWifiAndCellular - case useOnDemandOverWifiOnly - case useOnDemandOverCellularOnly -} - -extension ActivationType: Codable { - // We use separate coding keys in case we might have a enum with associated values in the future - enum CodingKeys: CodingKey { - case activateManually - case useOnDemandOverWifiAndCellular - case useOnDemandOverWifiOnly - case useOnDemandOverCellularOnly - } - - // Decoding error - enum DecodingError: Error { - case invalidInput - } - - // Encoding - func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - switch self { - case .activateManually: - try container.encode(true, forKey: CodingKeys.activateManually) - case .useOnDemandOverWifiAndCellular: - try container.encode(true, forKey: CodingKeys.useOnDemandOverWifiAndCellular) - case .useOnDemandOverWifiOnly: - try container.encode(true, forKey: CodingKeys.useOnDemandOverWifiOnly) - case .useOnDemandOverCellularOnly: - try container.encode(true, forKey: CodingKeys.useOnDemandOverCellularOnly) - } - } - - // Decoding - init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: CodingKeys.self) - - if let isValid = try? container.decode(Bool.self, forKey: CodingKeys.activateManually), isValid { - self = .activateManually - return - } - - if let isValid = try? container.decode(Bool.self, forKey: CodingKeys.useOnDemandOverWifiAndCellular), isValid { - self = .useOnDemandOverWifiAndCellular - return - } - - if let isValid = try? container.decode(Bool.self, forKey: CodingKeys.useOnDemandOverWifiOnly), isValid { - self = .useOnDemandOverWifiOnly - return - } - - if let isValid = try? container.decode(Bool.self, forKey: CodingKeys.useOnDemandOverCellularOnly), isValid { - self = .useOnDemandOverCellularOnly - return - } - - throw DecodingError.invalidInput - } -} diff --git a/WireGuard/Shared/Model/Configuration.swift b/WireGuard/Shared/Model/Configuration.swift index f6598bb..41ff7bc 100644 --- a/WireGuard/Shared/Model/Configuration.swift +++ b/WireGuard/Shared/Model/Configuration.swift @@ -4,14 +4,12 @@ import Foundation @available(OSX 10.14, iOS 12.0, *) -final class TunnelConfiguration { +final class TunnelConfiguration: Codable { 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(peerPublicKeysArray) @@ -57,21 +55,3 @@ struct PeerConfiguration: Codable { if (publicKey.count != 32) { fatalError("Invalid public key") } } } - -extension TunnelConfiguration: Encodable { } -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 - } -} diff --git a/WireGuard/Shared/NETunnelProviderProtocol+Extension.swift b/WireGuard/Shared/NETunnelProviderProtocol+Extension.swift index 591b0eb..ec8b294 100644 --- a/WireGuard/Shared/NETunnelProviderProtocol+Extension.swift +++ b/WireGuard/Shared/NETunnelProviderProtocol+Extension.swift @@ -14,7 +14,7 @@ extension NETunnelProviderProtocol { providerBundleIdentifier = "\(appId).network-extension" providerConfiguration = [ "tunnelConfiguration": serializedTunnelConfiguration, - "tunnelConfigurationVersion": 2 + "tunnelConfigurationVersion": 1 ] let endpoints = tunnelConfiguration.peers.compactMap({$0.endpoint}) -- cgit v1.2.3-59-g8ed1b