mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-04-24 00:00:05 +08:00
Update readme
This commit is contained in:
@@ -141,10 +141,15 @@ Packet Tunnel Provider extension uses [`NEPacketTunnelProvider`](https://develop
|
|||||||
import NetworkExtension
|
import NetworkExtension
|
||||||
import OpenVPNAdapter
|
import OpenVPNAdapter
|
||||||
|
|
||||||
|
// Extend NEPacketTunnelFlow to adopt OpenVPNAdapterPacketFlow protocol so that
|
||||||
|
// `self.packetFlow` could be sent to `completionHandler` callback of OpenVPNAdapterDelegate
|
||||||
|
// method openVPNAdapter(openVPNAdapter:configureTunnelWithNetworkSettings:completionHandler).
|
||||||
|
extension NEPacketTunnelFlow: OpenVPNAdapterPacketFlow {}
|
||||||
|
|
||||||
class PacketTunnelProvider: NEPacketTunnelProvider {
|
class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||||
|
|
||||||
lazy var vpnAdapter: OpenVPNAdapter = {
|
lazy var vpnAdapter: OpenVPNAdapter = {
|
||||||
let adapter = OpenVPNAdapter()
|
let adapter = OpenVPNAdapter(packetFlow: packetFlow)
|
||||||
adapter.delegate = self
|
adapter.delegate = self
|
||||||
|
|
||||||
return adapter
|
return adapter
|
||||||
@@ -226,7 +231,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
|||||||
// WiFi the adapter still uses cellular data. Changing reachability forces
|
// WiFi the adapter still uses cellular data. Changing reachability forces
|
||||||
// reconnection so the adapter will use actual connection.
|
// reconnection so the adapter will use actual connection.
|
||||||
vpnReachability.startTracking { [weak self] status in
|
vpnReachability.startTracking { [weak self] status in
|
||||||
guard status != .notReachable else { return }
|
guard status == .reachableViaWiFi else { return }
|
||||||
self?.vpnAdapter.reconnect(interval: 5)
|
self?.vpnAdapter.reconnect(interval: 5)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,15 +260,13 @@ extension PacketTunnelProvider: OpenVPNAdapterDelegate {
|
|||||||
// `OpenVPNAdapterPacketFlow` method signatures are similar to `NEPacketTunnelFlow` so
|
// `OpenVPNAdapterPacketFlow` method signatures are similar to `NEPacketTunnelFlow` so
|
||||||
// you can just extend that class to adopt `OpenVPNAdapterPacketFlow` protocol and
|
// you can just extend that class to adopt `OpenVPNAdapterPacketFlow` protocol and
|
||||||
// send `self.packetFlow` to `completionHandler` callback.
|
// send `self.packetFlow` to `completionHandler` callback.
|
||||||
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings?, completionHandler: @escaping (OpenVPNAdapterPacketFlow?) -> Void) {
|
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings?, completionHandler: @escaping (Error?) -> Void) {
|
||||||
// In order to direct all DNS queries first to the VPN DNS servers before the primary DNS servers
|
// In order to direct all DNS queries first to the VPN DNS servers before the primary DNS servers
|
||||||
// send empty string to NEDNSSettings.matchDomains
|
// send empty string to NEDNSSettings.matchDomains
|
||||||
networkSettings?.dnsSettings?.matchDomains = [""]
|
networkSettings?.dnsSettings?.matchDomains = [""]
|
||||||
|
|
||||||
// Specify the network settings for the current tunneling session.
|
// Set the network settings for the current tunneling session.
|
||||||
setTunnelNetworkSettings(settings) { (error) in
|
setTunnelNetworkSettings(networkSettings, completionHandler: completionHandler)
|
||||||
completionHandler(error == nil ? self.packetFlow : nil)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process events returned by the OpenVPN library
|
// Process events returned by the OpenVPN library
|
||||||
@@ -322,11 +325,6 @@ extension PacketTunnelProvider: OpenVPNAdapterDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extend NEPacketTunnelFlow to adopt OpenVPNAdapterPacketFlow protocol so that
|
|
||||||
// `self.packetFlow` could be sent to `completionHandler` callback of OpenVPNAdapterDelegate
|
|
||||||
// method openVPNAdapter(openVPNAdapter:configureTunnelWithNetworkSettings:completionHandler).
|
|
||||||
extension NEPacketTunnelFlow: OpenVPNAdapterPacketFlow {}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|||||||
Reference in New Issue
Block a user