mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-02-11 00:00:08 +08:00
Define OpenVPNAdapterPacketFlow and use it instead of NEPacketTunnelFlow object to simplify testing
This commit is contained in:
@@ -10,14 +10,19 @@
|
||||
|
||||
#import "OpenVPNAdapter.h"
|
||||
|
||||
@class NEPacketTunnelFlow;
|
||||
@class NEPacketTunnelNetworkSettings;
|
||||
|
||||
@protocol OpenVPNAdapterPacketFlow <NSObject>
|
||||
|
||||
- (void)readPacketsWithCompletionHandler:(nonnull void (^)(NSArray<NSData *> * _Nonnull packets, NSArray<NSNumber *> * _Nonnull protocols))completionHandler;
|
||||
- (BOOL)writePackets:(nonnull NSArray<NSData *> *)packets withProtocols:(nonnull NSArray<NSNumber *> *)protocols;
|
||||
|
||||
@end
|
||||
|
||||
@protocol OpenVPNAdapterDelegate <NSObject>
|
||||
|
||||
- (void)configureTunnelWithSettings:(nonnull NEPacketTunnelNetworkSettings *)settings
|
||||
callback:(nonnull void (^)(NEPacketTunnelFlow * __nullable flow))callback
|
||||
callback:(nonnull void (^)(id<OpenVPNAdapterPacketFlow> _Nullable flow))callback
|
||||
NS_SWIFT_NAME(configureTunnel(settings:callback:));
|
||||
|
||||
- (void)handleEvent:(OpenVPNEvent)event
|
||||
@@ -29,7 +34,6 @@ NS_SWIFT_NAME(handle(error:));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface OpenVPNAdapter (Provider)
|
||||
|
||||
@property (strong, nonatomic, nullable) NSString *username;
|
||||
|
||||
@@ -43,7 +43,7 @@ NSString * const OpenVPNAdapterErrorEventKey = @"me.ss-abramchuk.openvpn-adapter
|
||||
@property CFSocketRef vpnSocket;
|
||||
@property CFSocketRef tunSocket;
|
||||
|
||||
@property (weak, nonatomic) NEPacketTunnelFlow *packetFlow;
|
||||
@property (weak, nonatomic) id<OpenVPNAdapterPacketFlow> packetFlow;
|
||||
|
||||
- (void)readTUNPackets;
|
||||
- (void)readVPNData:(NSData *)data;
|
||||
@@ -199,7 +199,7 @@ static void socketCallback(CFSocketRef socket, CFSocketCallBackType type, CFData
|
||||
|
||||
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
|
||||
|
||||
[self.delegate configureTunnelWithSettings:networkSettings callback:^(NEPacketTunnelFlow * _Nullable flow) {
|
||||
[self.delegate configureTunnelWithSettings:networkSettings callback:^(id<OpenVPNAdapterPacketFlow> _Nullable flow) {
|
||||
self.packetFlow = flow;
|
||||
dispatch_semaphore_signal(sema);
|
||||
}];
|
||||
|
||||
13
OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift
Normal file
13
OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift
Normal file
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// NEPacketTunnelFlow+OpenVPN.swift
|
||||
// OpenVPN iOS Client
|
||||
//
|
||||
// Created by Sergey Abramchuk on 09.03.17.
|
||||
//
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import NetworkExtension
|
||||
import OpenVPNAdapter
|
||||
|
||||
extension NEPacketTunnelFlow: OpenVPNAdapterPacketFlow { }
|
||||
@@ -74,7 +74,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||
|
||||
extension PacketTunnelProvider: OpenVPNAdapterDelegate {
|
||||
|
||||
func configureTunnel(settings: NEPacketTunnelNetworkSettings, callback: @escaping (NEPacketTunnelFlow?) -> Void) {
|
||||
func configureTunnel(settings: NEPacketTunnelNetworkSettings, callback: @escaping (OpenVPNAdapterPacketFlow?) -> Void) {
|
||||
setTunnelNetworkSettings(settings) { (error) in
|
||||
callback(error == nil ? self.packetFlow : nil)
|
||||
}
|
||||
@@ -85,7 +85,7 @@ extension PacketTunnelProvider: OpenVPNAdapterDelegate {
|
||||
}
|
||||
|
||||
func handle(error: Error) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user