From 1e886eaca73e288cf82a0f3af1050087cd4c359a Mon Sep 17 00:00:00 2001 From: Sergey Abramchuk Date: Thu, 9 Mar 2017 19:08:24 +0300 Subject: [PATCH] Define OpenVPNAdapterPacketFlow and use it instead of NEPacketTunnelFlow object to simplify testing --- OpenVPN Adapter/OpenVPNAdapter+Public.h | 10 +++++++--- OpenVPN Adapter/OpenVPNAdapter.mm | 4 ++-- .../NEPacketTunnelFlow+OpenVPN.swift | 13 +++++++++++++ OpenVPN Tunnel Provider/PacketTunnelProvider.swift | 4 ++-- 4 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift diff --git a/OpenVPN Adapter/OpenVPNAdapter+Public.h b/OpenVPN Adapter/OpenVPNAdapter+Public.h index b101e62..188f819 100644 --- a/OpenVPN Adapter/OpenVPNAdapter+Public.h +++ b/OpenVPN Adapter/OpenVPNAdapter+Public.h @@ -10,14 +10,19 @@ #import "OpenVPNAdapter.h" -@class NEPacketTunnelFlow; @class NEPacketTunnelNetworkSettings; +@protocol OpenVPNAdapterPacketFlow + +- (void)readPacketsWithCompletionHandler:(nonnull void (^)(NSArray * _Nonnull packets, NSArray * _Nonnull protocols))completionHandler; +- (BOOL)writePackets:(nonnull NSArray *)packets withProtocols:(nonnull NSArray *)protocols; + +@end @protocol OpenVPNAdapterDelegate - (void)configureTunnelWithSettings:(nonnull NEPacketTunnelNetworkSettings *)settings - callback:(nonnull void (^)(NEPacketTunnelFlow * __nullable flow))callback + callback:(nonnull void (^)(id _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; diff --git a/OpenVPN Adapter/OpenVPNAdapter.mm b/OpenVPN Adapter/OpenVPNAdapter.mm index 129f3a2..a3fd300 100644 --- a/OpenVPN Adapter/OpenVPNAdapter.mm +++ b/OpenVPN Adapter/OpenVPNAdapter.mm @@ -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 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 _Nullable flow) { self.packetFlow = flow; dispatch_semaphore_signal(sema); }]; diff --git a/OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift b/OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift new file mode 100644 index 0000000..1588f82 --- /dev/null +++ b/OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift @@ -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 { } diff --git a/OpenVPN Tunnel Provider/PacketTunnelProvider.swift b/OpenVPN Tunnel Provider/PacketTunnelProvider.swift index 7b5c971..cc34c7f 100644 --- a/OpenVPN Tunnel Provider/PacketTunnelProvider.swift +++ b/OpenVPN Tunnel Provider/PacketTunnelProvider.swift @@ -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) { - + } }