From 8e6624e113793d022571b33903f483d68d245712 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Tue, 23 Nov 2021 12:20:47 +0100 Subject: [PATCH] Strip dependencies on TunnelKitCore - TunnelKitManager - TunnelKitIKE - TunnelKitOpenVPNManager --- Package.swift | 6 ++---- Sources/TunnelKit/Exports.swift | 1 - Sources/TunnelKitCore/CoreConfiguration.swift | 2 -- Sources/TunnelKitCore/EndpointProtocol.swift | 5 ++--- Sources/TunnelKitIKE/NativeProvider.swift | 4 ++-- Sources/TunnelKitManager/MockVPNProvider.swift | 2 +- Sources/TunnelKitManager/NetworkExtensionVPNProvider.swift | 6 +++--- Sources/TunnelKitManager/VPNProvider.swift | 3 ++- .../ConfigurationError.swift | 0 .../OpenVPNProvider+Configuration.swift | 4 +--- Sources/TunnelKitOpenVPNManager/OpenVPNProvider.swift | 6 +++--- 11 files changed, 16 insertions(+), 23 deletions(-) rename Sources/{TunnelKitCore => TunnelKitOpenVPNCore}/ConfigurationError.swift (100%) diff --git a/Package.swift b/Package.swift index a35b414..c2755b6 100644 --- a/Package.swift +++ b/Package.swift @@ -57,18 +57,16 @@ let package = Package( .target( name: "TunnelKitManager", dependencies: [ - "TunnelKitCore" + "SwiftyBeaver" ]), .target( name: "TunnelKitAppExtension", dependencies: [ - "TunnelKitCore", - "SwiftyBeaver" + "TunnelKitCore" ]), .target( name: "TunnelKitIKE", dependencies: [ - "TunnelKitCore", "TunnelKitManager" ]), .target( diff --git a/Sources/TunnelKit/Exports.swift b/Sources/TunnelKit/Exports.swift index 4feee2c..24e466a 100644 --- a/Sources/TunnelKit/Exports.swift +++ b/Sources/TunnelKit/Exports.swift @@ -1,2 +1 @@ -@_exported import TunnelKitCore @_exported import TunnelKitManager diff --git a/Sources/TunnelKitCore/CoreConfiguration.swift b/Sources/TunnelKitCore/CoreConfiguration.swift index 8581d22..19aada3 100644 --- a/Sources/TunnelKitCore/CoreConfiguration.swift +++ b/Sources/TunnelKitCore/CoreConfiguration.swift @@ -60,8 +60,6 @@ public class CoreConfiguration { public static var versionIdentifier: String? public static let logsSensitiveData = false - - public static var reconnectionDelay = 2.0 } extension CustomStringConvertible { diff --git a/Sources/TunnelKitCore/EndpointProtocol.swift b/Sources/TunnelKitCore/EndpointProtocol.swift index 91fffb8..dce241f 100644 --- a/Sources/TunnelKitCore/EndpointProtocol.swift +++ b/Sources/TunnelKitCore/EndpointProtocol.swift @@ -75,9 +75,8 @@ public struct EndpointProtocol: RawRepresentable, Equatable, CustomStringConvert extension EndpointProtocol: Codable { public init(from decoder: Decoder) throws { let container = try decoder.singleValueContainer() - guard let proto = try EndpointProtocol(rawValue: container.decode(String.self)) else { - throw ConfigurationError.malformed(option: "remote/proto") - } + let rawValue = try container.decode(String.self) + let proto = EndpointProtocol(rawValue: rawValue) ?? EndpointProtocol(.udp, 1198) self.init(proto.socketType, proto.port) } diff --git a/Sources/TunnelKitIKE/NativeProvider.swift b/Sources/TunnelKitIKE/NativeProvider.swift index 0668ec7..ea01d3c 100644 --- a/Sources/TunnelKitIKE/NativeProvider.swift +++ b/Sources/TunnelKitIKE/NativeProvider.swift @@ -64,8 +64,8 @@ public class NativeProvider: VPNProvider { provider.disconnect(completionHandler: completionHandler) } - public func reconnect(configuration: VPNConfiguration, completionHandler: ((Error?) -> Void)?) { - provider.reconnect(configuration: configuration, completionHandler: completionHandler) + public func reconnect(configuration: VPNConfiguration, delay: Double? = nil, completionHandler: ((Error?) -> Void)?) { + provider.reconnect(configuration: configuration, delay: delay, completionHandler: completionHandler) } public func uninstall(completionHandler: (() -> Void)?) { diff --git a/Sources/TunnelKitManager/MockVPNProvider.swift b/Sources/TunnelKitManager/MockVPNProvider.swift index ae13592..9d8c1b2 100644 --- a/Sources/TunnelKitManager/MockVPNProvider.swift +++ b/Sources/TunnelKitManager/MockVPNProvider.swift @@ -63,7 +63,7 @@ public class MockVPNProvider: VPNProvider, VPNProviderIPC { completionHandler?(nil) } - public func reconnect(configuration: VPNConfiguration, completionHandler: ((Error?) -> Void)?) { + public func reconnect(configuration: VPNConfiguration, delay: Double?, completionHandler: ((Error?) -> Void)?) { isEnabled = true status = .connected NotificationCenter.default.post(name: VPN.didChangeStatus, object: self) diff --git a/Sources/TunnelKitManager/NetworkExtensionVPNProvider.swift b/Sources/TunnelKitManager/NetworkExtensionVPNProvider.swift index 5ca93b7..48aa244 100644 --- a/Sources/TunnelKitManager/NetworkExtensionVPNProvider.swift +++ b/Sources/TunnelKitManager/NetworkExtensionVPNProvider.swift @@ -26,7 +26,6 @@ import Foundation import NetworkExtension import SwiftyBeaver -import TunnelKitCore private let log = SwiftyBeaver.self @@ -147,10 +146,11 @@ public class NetworkExtensionVPNProvider: VPNProvider { manager.saveToPreferences(completionHandler: completionHandler) } - public func reconnect(configuration: VPNConfiguration, completionHandler: ((Error?) -> Void)?) { + public func reconnect(configuration: VPNConfiguration, delay: Double? = nil, completionHandler: ((Error?) -> Void)?) { guard let configuration = configuration as? NetworkExtensionVPNConfiguration else { fatalError("Not a NetworkExtensionVPNConfiguration") } + let delay = delay ?? 2.0 install(configuration: configuration) { error in guard error == nil else { completionHandler?(error) @@ -161,7 +161,7 @@ public class NetworkExtensionVPNProvider: VPNProvider { } if self.status != .disconnected { self.manager?.connection.stopVPNTunnel() - DispatchQueue.main.asyncAfter(deadline: .now() + CoreConfiguration.reconnectionDelay, execute: connectBlock) + DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: connectBlock) } else { connectBlock() } diff --git a/Sources/TunnelKitManager/VPNProvider.swift b/Sources/TunnelKitManager/VPNProvider.swift index 3d534c2..eb5dde7 100644 --- a/Sources/TunnelKitManager/VPNProvider.swift +++ b/Sources/TunnelKitManager/VPNProvider.swift @@ -72,9 +72,10 @@ public protocol VPNProvider: AnyObject { Reconnects to the VPN. - Parameter configuration: The `VPNConfiguration` to install. + - Parameter delay: The reconnection delay in seconds. - Parameter completionHandler: The completion handler with an optional error. */ - func reconnect(configuration: VPNConfiguration, completionHandler: ((Error?) -> Void)?) + func reconnect(configuration: VPNConfiguration, delay: Double?, completionHandler: ((Error?) -> Void)?) /** Uninstalls the VPN profile. diff --git a/Sources/TunnelKitCore/ConfigurationError.swift b/Sources/TunnelKitOpenVPNCore/ConfigurationError.swift similarity index 100% rename from Sources/TunnelKitCore/ConfigurationError.swift rename to Sources/TunnelKitOpenVPNCore/ConfigurationError.swift diff --git a/Sources/TunnelKitOpenVPNManager/OpenVPNProvider+Configuration.swift b/Sources/TunnelKitOpenVPNManager/OpenVPNProvider+Configuration.swift index c82f462..5d03394 100644 --- a/Sources/TunnelKitOpenVPNManager/OpenVPNProvider+Configuration.swift +++ b/Sources/TunnelKitOpenVPNManager/OpenVPNProvider+Configuration.swift @@ -37,10 +37,8 @@ import Foundation import NetworkExtension import SwiftyBeaver -import TunnelKitCore -import TunnelKitOpenVPNCore import TunnelKitManager -import CTunnelKitCore +import TunnelKitOpenVPNCore import __TunnelKitUtils private let log = SwiftyBeaver.self diff --git a/Sources/TunnelKitOpenVPNManager/OpenVPNProvider.swift b/Sources/TunnelKitOpenVPNManager/OpenVPNProvider.swift index 0efa490..cf5c8bf 100644 --- a/Sources/TunnelKitOpenVPNManager/OpenVPNProvider.swift +++ b/Sources/TunnelKitOpenVPNManager/OpenVPNProvider.swift @@ -25,8 +25,8 @@ import Foundation import NetworkExtension -import TunnelKitOpenVPNCore import TunnelKitManager +import TunnelKitOpenVPNCore /// `VPNProvider` for OpenVPN protocol. public class OpenVPNProvider: VPNProvider, VPNProviderIPC { @@ -71,8 +71,8 @@ public class OpenVPNProvider: VPNProvider, VPNProviderIPC { provider.disconnect(completionHandler: completionHandler) } - public func reconnect(configuration: VPNConfiguration, completionHandler: ((Error?) -> Void)?) { - provider.reconnect(configuration: configuration, completionHandler: completionHandler) + public func reconnect(configuration: VPNConfiguration, delay: Double? = nil, completionHandler: ((Error?) -> Void)?) { + provider.reconnect(configuration: configuration, delay: delay, completionHandler: completionHandler) } public func uninstall(completionHandler: (() -> Void)?) {