mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-02-11 00:00:08 +08:00
Define enum for transport protocol used in proto property and rename ipv6 preference enum, server and proto
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user