Define enum for transport protocol used in proto property and rename ipv6 preference enum, server and proto

This commit is contained in:
Sergey Abramchuk
2017-04-23 14:33:19 +03:00
parent b6c10d766c
commit a010c67510
2 changed files with 75 additions and 28 deletions

View File

@@ -10,16 +10,23 @@
// TODO: Wrap ClientAPI::Config into Objective-C class
typedef NS_ENUM(NSInteger, OpenVPNTransportProtocol) {
OpenVPNTransportProtocolUDP,
OpenVPNTransportProtocolTCP,
OpenVPNTransportProtocolAdaptive,
OpenVPNTransportProtocolDefault
};
/**
IPv6 preference options
*/
typedef NS_ENUM(NSInteger, IPv6Preference) {
typedef NS_ENUM(NSInteger, OpenVPNIPv6Preference) {
/// Request combined IPv4/IPv6 tunnel
IPv6PreferenceEnabled,
OpenVPNIPv6PreferenceEnabled,
/// Disable IPv6, so tunnel will be IPv4-only
IPv6PreferenceDisabled,
OpenVPNIPv6PreferenceDisabled,
/// Leave decision to server
IPv6PreferenceDefault
OpenVPNIPv6PreferenceDefault
};
@interface OpenVPNConfiguration : NSObject
@@ -46,18 +53,17 @@ typedef NS_ENUM(NSInteger, IPv6Preference) {
Use a different server than that specified in "remote"
option of profile
*/
@property (nullable, nonatomic) NSString *serverOverride;
@property (nullable, nonatomic) NSString *server;
/**
Force a given transport protocol
Should be tcp, udp, or adaptive.
*/
@property (nullable, nonatomic) NSString *protoOverride;
@property (nonatomic) OpenVPNTransportProtocol proto;
/**
IPv6 preference
*/
@property (nonatomic) IPv6Preference ipv6;
@property (nonatomic) OpenVPNIPv6Preference ipv6;
/**
Connection timeout in seconds, or 0 to retry indefinitely
@@ -75,4 +81,9 @@ typedef NS_ENUM(NSInteger, IPv6Preference) {
*/
@property (nonatomic) BOOL googleDNSFallback;
/**
Enable autologin sessions
*/
@property (nonatomic) BOOL autologinSessions;
@end

View File

@@ -73,28 +73,56 @@ using namespace openvpn;
_config.guiVersion = guiVersion ? std::string([guiVersion UTF8String]) : "";
}
- (NSString *)serverOverride {
- (NSString *)server {
return _config.serverOverride.size() != 0 ? [NSString stringWithUTF8String:_config.serverOverride.c_str()] : nil;
}
- (void)setServerOverride:(NSString *)serverOverride {
- (void)setServer:(NSString *)serverOverride {
_config.serverOverride = serverOverride ? std::string([serverOverride UTF8String]) : "";
}
- (NSString *)protoOverride {
return _config.protoOverride.size() != 0 ? [NSString stringWithUTF8String:_config.protoOverride.c_str()] : nil;
}
- (void)setProtoOverride:(NSString *)protoOverride {
_config.protoOverride = protoOverride ? std::string([protoOverride UTF8String]) : "";
}
- (IPv6Preference)ipv6 {
- (OpenVPNTransportProtocol)proto {
NSDictionary *options = @{
@"yes": @(IPv6PreferenceEnabled),
@"no": @(IPv6PreferenceDisabled),
@"default": @(IPv6PreferenceDefault),
@"": @(IPv6PreferenceDefault)
@"udp": @(OpenVPNTransportProtocolUDP),
@"tcp": @(OpenVPNTransportProtocolTCP),
@"adaptive": @(OpenVPNTransportProtocolAdaptive),
@"": @(OpenVPNTransportProtocolDefault)
};
NSString *currentValue = [NSString stringWithUTF8String:_config.protoOverride.c_str()];
NSNumber *transportProtocol = options[currentValue];
NSAssert(transportProtocol != nil, @"Incorrect ipv6 value");
return (OpenVPNTransportProtocol)[transportProtocol integerValue];
}
- (void)setProto:(OpenVPNTransportProtocol)proto {
switch (proto) {
case OpenVPNTransportProtocolUDP:
_config.protoOverride = "udp";
break;
case OpenVPNTransportProtocolTCP:
_config.protoOverride = "tcp";
break;
case OpenVPNTransportProtocolAdaptive:
_config.protoOverride = "adaptive";
break;
default:
_config.protoOverride = "";
break;
}
}
- (OpenVPNIPv6Preference)ipv6 {
NSDictionary *options = @{
@"yes": @(OpenVPNIPv6PreferenceEnabled),
@"no": @(OpenVPNIPv6PreferenceDisabled),
@"default": @(OpenVPNIPv6PreferenceDefault),
@"": @(OpenVPNIPv6PreferenceDefault)
};
NSString *currentValue = [NSString stringWithUTF8String:_config.ipv6.c_str()];
@@ -102,20 +130,20 @@ using namespace openvpn;
NSNumber *preference = options[currentValue];
NSAssert(preference != nil, @"Incorrect ipv6 value");
return (IPv6Preference)[preference integerValue];
return (OpenVPNIPv6Preference)[preference integerValue];
}
- (void)setIpv6:(IPv6Preference)ipv6 {
- (void)setIpv6:(OpenVPNIPv6Preference)ipv6 {
switch (ipv6) {
case IPv6PreferenceEnabled:
case OpenVPNIPv6PreferenceEnabled:
_config.ipv6 = "yes";
break;
case IPv6PreferenceDisabled:
case OpenVPNIPv6PreferenceDisabled:
_config.ipv6 = "no";
break;
case IPv6PreferenceDefault:
case OpenVPNIPv6PreferenceDefault:
_config.ipv6 = "default";
break;
@@ -149,4 +177,12 @@ using namespace openvpn;
_config.googleDnsFallback = googleDNSFallback;
}
- (BOOL)autologinSessions {
return _config.autologinSessions;
}
- (void)setAutologinSessions:(BOOL)autologinSessions {
_config.autologinSessions = autologinSessions;
}
@end