Wrap disable cert, ssl debug level and compression mede properties

This commit is contained in:
Sergey Abramchuk
2017-04-24 12:58:04 +03:00
parent b8861003a3
commit dcf06ced20
2 changed files with 95 additions and 3 deletions

View File

@@ -10,10 +10,17 @@
// TODO: Wrap ClientAPI::Config into Objective-C class
/**
Transport protocol options
*/
typedef NS_ENUM(NSInteger, OpenVPNTransportProtocol) {
///
OpenVPNTransportProtocolUDP,
///
OpenVPNTransportProtocolTCP,
///
OpenVPNTransportProtocolAdaptive,
/// Use a transport protocol specified in the profile
OpenVPNTransportProtocolDefault
};
@@ -29,6 +36,20 @@ typedef NS_ENUM(NSInteger, OpenVPNIPv6Preference) {
OpenVPNIPv6PreferenceDefault
};
/**
Compression mode options
*/
typedef NS_ENUM(NSInteger, OpenVPNCompressionMode) {
/// Allow compression on both uplink and downlink
OpenVPNCompressionModeEnabled,
/// Support compression stubs only
OpenVPNCompressionModeDisabled,
/// Allow compression on downlink only (i.e. server -> client)
OpenVPNCompressionModeAsym,
/// Default behavior (support compression stubs only)
OpenVPNCompressionModeDefault
};
@interface OpenVPNConfiguration : NSObject
/**
@@ -86,4 +107,19 @@ typedef NS_ENUM(NSInteger, OpenVPNIPv6Preference) {
*/
@property (nonatomic) BOOL autologinSessions;
/**
If YES, don't send client cert/key to peer
*/
@property (nonatomic) BOOL disableClientCert;
/**
SSL library debug level
*/
@property (nonatomic) NSInteger sslDebugLevel;
/**
Compression mode
*/
@property (nonatomic) OpenVPNCompressionMode compressionMode;
@end

View File

@@ -28,7 +28,7 @@ using namespace openvpn;
@implementation OpenVPNConfiguration
- (NSData *)fileContent {
return _config.content.size() != 0 ? [NSData dataWithBytes:_config.content.data() length:_config.content.size()] : nil;
return !_config.content.empty() ? [NSData dataWithBytes:_config.content.data() length:_config.content.size()] : nil;
}
- (void)setFileContent:(NSData *)fileContent {
@@ -66,7 +66,7 @@ using namespace openvpn;
}
- (NSString *)guiVersion {
return _config.guiVersion.size() != 0 ? [NSString stringWithUTF8String:_config.guiVersion.c_str()] : nil;
return !_config.guiVersion.empty() ? [NSString stringWithUTF8String:_config.guiVersion.c_str()] : nil;
}
- (void)setGuiVersion:(NSString *)guiVersion {
@@ -74,7 +74,7 @@ using namespace openvpn;
}
- (NSString *)server {
return _config.serverOverride.size() != 0 ? [NSString stringWithUTF8String:_config.serverOverride.c_str()] : nil;
return !_config.serverOverride.empty() ? [NSString stringWithUTF8String:_config.serverOverride.c_str()] : nil;
}
- (void)setServer:(NSString *)serverOverride {
@@ -189,4 +189,60 @@ using namespace openvpn;
_config.autologinSessions = autologinSessions;
}
- (BOOL)disableClientCert {
return _config.disableClientCert;
}
- (void)setDisableClientCert:(BOOL)disableClientCert {
_config.disableClientCert = disableClientCert;
}
- (NSInteger)sslDebugLevel {
return _config.sslDebugLevel;
}
- (void)setSslDebugLevel:(NSInteger)sslDebugLevel {
_config.sslDebugLevel = sslDebugLevel;
}
- (OpenVPNCompressionMode)compressionMode {
NSDictionary *options = @{
@"yes": @(OpenVPNCompressionModeEnabled),
@"no": @(OpenVPNCompressionModeDisabled),
@"asym": @(OpenVPNCompressionModeAsym),
@"": @(OpenVPNCompressionModeDefault)
};
NSString *currentValue = [NSString stringWithUTF8String:_config.compressionMode.c_str()];
NSNumber *preference = options[currentValue];
NSAssert(preference != nil, @"Incorrect compressionMode value");
return (OpenVPNCompressionMode)[preference integerValue];
}
- (void)setCompressionMode:(OpenVPNCompressionMode)compressionMode {
switch (compressionMode) {
case OpenVPNCompressionModeEnabled:
_config.compressionMode = "yes";
break;
case OpenVPNCompressionModeDisabled:
_config.compressionMode = "no";
break;
case OpenVPNCompressionModeAsym:
_config.compressionMode = "asym";
break;
case OpenVPNCompressionModeDefault:
_config.compressionMode = "";
break;
default:
NSAssert(NO, @"Incorrect OpenVPNCompressionMode value");
break;
}
}
@end