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

View File

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