Complete jazzy documentation
This commit is contained in:
parent
70f8c6cc2b
commit
c442d44a0f
13
.jazzy.yaml
13
.jazzy.yaml
|
@ -43,16 +43,19 @@ custom_categories:
|
||||||
- NETCPSocket
|
- NETCPSocket
|
||||||
- NETunnelInterface
|
- NETunnelInterface
|
||||||
- NEUDPSocket
|
- NEUDPSocket
|
||||||
- NSNotification
|
|
||||||
- name: Manager
|
- name: Manager
|
||||||
children:
|
children:
|
||||||
- VPN
|
- VPN
|
||||||
- VPNProvider
|
|
||||||
- MockVPNProvider
|
|
||||||
- VPNConfiguration
|
- VPNConfiguration
|
||||||
- NetworkExtensionVPNConfiguration
|
- VPNProvider
|
||||||
|
- VPNProviderIPC
|
||||||
- VPNStatus
|
- VPNStatus
|
||||||
- NSNotification
|
- NetworkExtensionLocator
|
||||||
|
- NetworkExtensionNativeLocator
|
||||||
|
- NetworkExtensionTunnelLocator
|
||||||
|
- NetworkExtensionVPNConfiguration
|
||||||
|
- NetworkExtensionVPNProvider
|
||||||
|
- MockVPNProvider
|
||||||
- name: Protocols/OpenVPN
|
- name: Protocols/OpenVPN
|
||||||
children:
|
children:
|
||||||
- OpenVPN
|
- OpenVPN
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
/// :nodoc:
|
/// Simulates a VPN provider.
|
||||||
public class MockVPNProvider: VPNProvider, VPNProviderIPC {
|
public class MockVPNProvider: VPNProvider, VPNProviderIPC {
|
||||||
|
|
||||||
// MARK: VPNProvider
|
// MARK: VPNProvider
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import NetworkExtension
|
import NetworkExtension
|
||||||
|
|
||||||
|
/// Entity able to look up a `NEVPNManager`.
|
||||||
public protocol NetworkExtensionLocator {
|
public protocol NetworkExtensionLocator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,8 +37,10 @@ public protocol NetworkExtensionLocator {
|
||||||
func lookup(completionHandler: @escaping (NEVPNManager?, Error?) -> Void)
|
func lookup(completionHandler: @escaping (NEVPNManager?, Error?) -> Void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Locator for native VPN protocols.
|
||||||
public class NetworkExtensionNativeLocator: NetworkExtensionLocator {
|
public class NetworkExtensionNativeLocator: NetworkExtensionLocator {
|
||||||
|
|
||||||
|
/// :nodoc:
|
||||||
public init() {
|
public init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,9 +58,15 @@ public class NetworkExtensionNativeLocator: NetworkExtensionLocator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Locator for tunnel VPN protocols.
|
||||||
public class NetworkExtensionTunnelLocator: NetworkExtensionLocator {
|
public class NetworkExtensionTunnelLocator: NetworkExtensionLocator {
|
||||||
private let bundleIdentifier: String
|
private let bundleIdentifier: String
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initializes the locator with the bundle identifier of the tunnel provider.
|
||||||
|
|
||||||
|
- Parameter bundleIdentifier: The bundle identifier of the tunnel provider.
|
||||||
|
*/
|
||||||
public init(bundleIdentifier: String) {
|
public init(bundleIdentifier: String) {
|
||||||
self.bundleIdentifier = bundleIdentifier
|
self.bundleIdentifier = bundleIdentifier
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ import SwiftyBeaver
|
||||||
|
|
||||||
private let log = SwiftyBeaver.self
|
private let log = SwiftyBeaver.self
|
||||||
|
|
||||||
|
/// `VPNProvider` based on the NetworkExtension framework.
|
||||||
public class NetworkExtensionVPNProvider: VPNProvider {
|
public class NetworkExtensionVPNProvider: VPNProvider {
|
||||||
private var manager: NEVPNManager?
|
private var manager: NEVPNManager?
|
||||||
|
|
||||||
|
@ -36,6 +37,11 @@ public class NetworkExtensionVPNProvider: VPNProvider {
|
||||||
|
|
||||||
private var lastNotifiedStatus: VPNStatus?
|
private var lastNotifiedStatus: VPNStatus?
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initializes a provider with a `NetworkExtensionLocator`.
|
||||||
|
|
||||||
|
- Parameter locator: A `NetworkExtensionLocator` able to locate a `NEVPNManager`.
|
||||||
|
*/
|
||||||
public init(locator: NetworkExtensionLocator) {
|
public init(locator: NetworkExtensionLocator) {
|
||||||
self.locator = locator
|
self.locator = locator
|
||||||
|
|
||||||
|
@ -177,7 +183,7 @@ public class NetworkExtensionVPNProvider: VPNProvider {
|
||||||
|
|
||||||
// MARK: Helpers
|
// MARK: Helpers
|
||||||
|
|
||||||
public func lookup(completionHandler: @escaping (NEVPNManager?, Error?) -> Void) {
|
func lookup(completionHandler: @escaping (NEVPNManager?, Error?) -> Void) {
|
||||||
locator.lookup(completionHandler: completionHandler)
|
locator.lookup(completionHandler: completionHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
/// Common IPC functions supported by interactive VPN providers.
|
||||||
public protocol VPNProviderIPC {
|
public protocol VPNProviderIPC {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
//
|
||||||
|
// NativeProvider.swift
|
||||||
|
// TunnelKit
|
||||||
|
//
|
||||||
|
// Created by Davide De Rosa on 4/11/21.
|
||||||
|
// Copyright (c) 2021 Davide De Rosa. All rights reserved.
|
||||||
|
//
|
||||||
|
// https://github.com/passepartoutvpn
|
||||||
|
//
|
||||||
|
// This file is part of TunnelKit.
|
||||||
|
//
|
||||||
|
// TunnelKit is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// TunnelKit is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with TunnelKit. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
/// `VPNProvider` for native IPSec/IKEv2 configurations.
|
||||||
|
public class NativeProvider: VPNProvider {
|
||||||
|
private let provider: NetworkExtensionVPNProvider
|
||||||
|
|
||||||
|
/// :nodoc:
|
||||||
|
public init() {
|
||||||
|
provider = NetworkExtensionVPNProvider(locator: NetworkExtensionNativeLocator())
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: VPNProvider
|
||||||
|
|
||||||
|
public var isPrepared: Bool {
|
||||||
|
return provider.isPrepared
|
||||||
|
}
|
||||||
|
|
||||||
|
public var isEnabled: Bool {
|
||||||
|
return provider.isEnabled
|
||||||
|
}
|
||||||
|
|
||||||
|
public var status: VPNStatus {
|
||||||
|
return provider.status
|
||||||
|
}
|
||||||
|
|
||||||
|
public func prepare(completionHandler: (() -> Void)?) {
|
||||||
|
provider.prepare(completionHandler: completionHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func install(configuration: VPNConfiguration, completionHandler: ((Error?) -> Void)?) {
|
||||||
|
provider.install(configuration: configuration, completionHandler: completionHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func connect(completionHandler: ((Error?) -> Void)?) {
|
||||||
|
provider.connect(completionHandler: completionHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func disconnect(completionHandler: ((Error?) -> Void)?) {
|
||||||
|
provider.disconnect(completionHandler: completionHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func reconnect(configuration: VPNConfiguration, completionHandler: ((Error?) -> Void)?) {
|
||||||
|
provider.reconnect(configuration: configuration, completionHandler: completionHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func uninstall(completionHandler: (() -> Void)?) {
|
||||||
|
provider.uninstall(completionHandler: completionHandler)
|
||||||
|
}
|
||||||
|
}
|
|
@ -26,10 +26,15 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import NetworkExtension
|
import NetworkExtension
|
||||||
|
|
||||||
/// :nodoc:
|
/// `VPNProvider` for OpenVPN protocol.
|
||||||
public class OpenVPNProvider: VPNProvider, VPNProviderIPC {
|
public class OpenVPNProvider: VPNProvider, VPNProviderIPC {
|
||||||
private let provider: NetworkExtensionVPNProvider
|
private let provider: NetworkExtensionVPNProvider
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initializes a provider with the bundle identifier of the `OpenVPNTunnelProvider`.
|
||||||
|
|
||||||
|
- Parameter bundleIdentifier: The bundle identifier of the `OpenVPNTunnelProvider`.
|
||||||
|
*/
|
||||||
public init(bundleIdentifier: String) {
|
public init(bundleIdentifier: String) {
|
||||||
provider = NetworkExtensionVPNProvider(locator: NetworkExtensionTunnelLocator(bundleIdentifier: bundleIdentifier))
|
provider = NetworkExtensionVPNProvider(locator: NetworkExtensionTunnelLocator(bundleIdentifier: bundleIdentifier))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue