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 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 {
|
||||
|
||||
lazy var vpnAdapter: OpenVPNAdapter = {
|
||||
let adapter = OpenVPNAdapter()
|
||||
let adapter = OpenVPNAdapter(packetFlow: packetFlow)
|
||||
adapter.delegate = self
|
||||
|
||||
return adapter
|
||||
@@ -226,7 +231,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||
// WiFi the adapter still uses cellular data. Changing reachability forces
|
||||
// reconnection so the adapter will use actual connection.
|
||||
vpnReachability.startTracking { [weak self] status in
|
||||
guard status != .notReachable else { return }
|
||||
guard status == .reachableViaWiFi else { return }
|
||||
self?.vpnAdapter.reconnect(interval: 5)
|
||||
}
|
||||
|
||||
@@ -255,15 +260,13 @@ extension PacketTunnelProvider: OpenVPNAdapterDelegate {
|
||||
// `OpenVPNAdapterPacketFlow` method signatures are similar to `NEPacketTunnelFlow` so
|
||||
// you can just extend that class to adopt `OpenVPNAdapterPacketFlow` protocol and
|
||||
// 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
|
||||
// send empty string to NEDNSSettings.matchDomains
|
||||
networkSettings?.dnsSettings?.matchDomains = [""]
|
||||
|
||||
// Specify the network settings for the current tunneling session.
|
||||
setTunnelNetworkSettings(settings) { (error) in
|
||||
completionHandler(error == nil ? self.packetFlow : nil)
|
||||
}
|
||||
// Set the network settings for the current tunneling session.
|
||||
setTunnelNetworkSettings(networkSettings, completionHandler: completionHandler)
|
||||
}
|
||||
|
||||
// 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
|
||||
|
||||
Reference in New Issue
Block a user