Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
181 lines (140 sloc) 5.55 KB
//
// OpenVPNAdapter.h
// OpenVPN Adapter
//
// Created by Sergey Abramchuk on 11.02.17.
//
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, OpenVPNAdapterEvent);
@class NEPacketTunnelFlow;
@class NEPacketTunnelNetworkSettings;
@protocol OpenVPNAdapterPacketFlow;
@class OpenVPNAdapter;
@class OpenVPNConfiguration;
@class OpenVPNConnectionInfo;
@class OpenVPNCredentials;
@class OpenVPNInterfaceStats;
@class OpenVPNProperties;
@class OpenVPNTransportStats;
@class OpenVPNSessionToken;
@protocol OpenVPNAdapterDelegate <NSObject>
/**
This method is called once the network settings to be used have been established.
The receiver should call the completion handler once these settings have been set, returning a NEPacketTunnelFlow object for
the TUN interface, or nil if an error occurred.
@param openVPNAdapter The OpenVPNAdapter instance requesting this information.
@param networkSettings The NEPacketTunnelNetworkSettings to be used for the tunnel. Provides nil to clear out the network settings.
@param completionHandler The completion handler to be called with a NEPacketTunnelFlow object, or nil if an error occurred or the network settings were cleared out.
*/
- (void)openVPNAdapter:(OpenVPNAdapter *)openVPNAdapter
configureTunnelWithNetworkSettings:(nullable NEPacketTunnelNetworkSettings *)networkSettings
completionHandler:(void (^)(id<OpenVPNAdapterPacketFlow> _Nullable packetFlow))completionHandler
NS_SWIFT_NAME(openVPNAdapter(_:configureTunnelWithNetworkSettings:completionHandler:));
/**
Informs the receiver that an OpenVPN error has occurred.
Some errors are fatal and should trigger the diconnection of the tunnel, check for fatal errors with the
OpenVPNAdapterErrorFatalKey.
@param openVPNAdapter The OpenVPNAdapter instance which encountered the error.
@param error The error which has occurred.
*/
- (void)openVPNAdapter:(OpenVPNAdapter *)openVPNAdapter handleError:(NSError *)error;
/**
Informs the receiver that an OpenVPN event has occurred.
@param openVPNAdapter The OpenVPNAdapter instance which encountered the event.
@param event The event which has occurred.
@param message An accompanying message, may be nil.
*/
- (void)openVPNAdapter:(OpenVPNAdapter *)openVPNAdapter
handleEvent:(OpenVPNAdapterEvent)event
message:(nullable NSString *)message
NS_SWIFT_NAME(openVPNAdapter(_:handleEvent:message:));
@optional
/**
Informs the receiver that an OpenVPN message has been logged.
@param openVPNAdapter The OpenVPNAdapter instance which encountered the log message.
@param logMessage The log message.
*/
- (void)openVPNAdapter:(OpenVPNAdapter *)openVPNAdapter handleLogMessage:(NSString *)logMessage;
/**
Informs the receiver that a clock tick has occurred.
Clock ticks can be configured with an OpenVPNConfiguration object.
@param openVPNAdapter The OpenVPNAdapter instance which encountered the clock tick.
*/
- (void)openVPNAdapterDidReceiveClockTick:(OpenVPNAdapter *)openVPNAdapter;
@end
@interface OpenVPNAdapter : NSObject
/**
The OpenVPN core copyright message.
*/
@property (nonatomic, class, readonly) NSString *copyright;
/**
The OpenVPN platform.
*/
@property (nonatomic, class, readonly) NSString *platform;
/**
The object that acts as the delegate of the adapter.
*/
@property (nonatomic, weak) id<OpenVPNAdapterDelegate> delegate;
/**
The session name, nil unless the tunnel is connected.
*/
@property (nonatomic, nullable, readonly) NSString *sessionName;
/**
The connection information, nil unless the tunnel is connected.
*/
@property (nonatomic, nullable, readonly) OpenVPNConnectionInfo *connectionInformation;
/**
The interface statistics.
*/
@property (nonatomic, readonly) OpenVPNInterfaceStats *interfaceStatistics;
/**
The session token, nil unless the tunnel is connected.
*/
@property (nonatomic, nullable, readonly) OpenVPNSessionToken *sessionToken;
/**
The transport statistics.
*/
@property (nonatomic, readonly) OpenVPNTransportStats *transportStatistics;
/**
Applies the given configuration object.
Call this method prior to connecting, this method has no effect after calling connect.
@param configuration The configuration object.
@param error If there is an error applying the configuration, upon return contains an error object that describes the problem.
@return A properties object describing the configuration which has been applied.
*/
- (nullable OpenVPNProperties *)applyConfiguration:(OpenVPNConfiguration *)configuration
error:(NSError **)error
NS_SWIFT_NAME(apply(configuration:));
/**
Provides credentials to the receiver.
@param credentials The credentials object.
@param error If there is an error providing the credentials, upon return contains an error object that describes the problem.
@return Returns YES if this method was successful, otherwise NO.
*/
- (BOOL)provideCredentials:(OpenVPNCredentials *)credentials error:(NSError **)error NS_SWIFT_NAME(provide(credentials:));
/**
Starts the tunnel.
*/
- (void)connect;
/**
Pauses the tunnel.
@param reason The reason for pausing the tunnel.
*/
- (void)pauseWithReason:(NSString *)reason NS_SWIFT_NAME(pause(withReason:));
/**
Resumes the connection.
*/
- (void)resume;
/**
Reconnects after a given time period, perhaps due to an interface change.
@param timeInterval The time interval to wait before reconnecting.
*/
- (void)reconnectAfterTimeInterval:(NSTimeInterval)timeInterval NS_SWIFT_NAME(reconnect(afterTimeInterval:));
/**
Disconnect from the tunnel.
*/
- (void)disconnect;
@end
NS_ASSUME_NONNULL_END
You can’t perform that action at this time.