Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Commit b3e0fc7

Browse files
committed
TLS support
1 parent 32d2ef4 commit b3e0fc7

File tree

5 files changed

+78
-29
lines changed

5 files changed

+78
-29
lines changed

V2RayX/AppDelegate.m

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
#define kV2RayXHelper @"/Library/Application Support/V2RayX/v2rayx_sysconf"
1414
#define kSysconfVersion @"v2rayx_sysconf 1.0.0"
15-
#define kV2RayXSettingVersion 1
15+
#define kV2RayXSettingVersion 2
1616
#define nilCoalescing(a,b) ( (a != nil) ? (a) : (b) ) // equivalent to ?? operator in Swift
1717

1818
@interface AppDelegate () {
@@ -71,7 +71,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
7171
return [GCDWebServerDataResponse responseWithData:[weakSelf pacData] contentType:@"application/x-ns-proxy-autoconfig"];
7272
}];
7373
NSNumber* setingVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"setingVersion"];
74-
if(setingVersion == nil || [setingVersion integerValue] != 1) {
74+
if(setingVersion == nil || [setingVersion integerValue] != kV2RayXSettingVersion) {
7575
NSAlert *noServerAlert = [[NSAlert alloc] init];
7676
[noServerAlert setMessageText:@"Sorry, unknown settings!\nAll V2RayX settings will be reset."];
7777
[noServerAlert runModal];
@@ -88,12 +88,16 @@ - (void) writeDefaultSettings {
8888
NSDictionary *defaultSettings =
8989
@{
9090
@"setingVersion": [NSNumber numberWithInteger:kV2RayXSettingVersion],
91-
@"proxyIsOn": [NSNumber numberWithBool:false],
91+
@"proxyIsOn": [NSNumber numberWithBool:NO],
9292
@"proxyMode": [NSNumber numberWithInteger:0],
9393
@"selectedServerIndex": [NSNumber numberWithInteger:0],
9494
@"localPort": [NSNumber numberWithInteger:1081],
95-
@"udpSupport": [NSNumber numberWithBool:false],
95+
@"udpSupport": [NSNumber numberWithBool:NO],
9696
@"dns": @"localhost",
97+
@"useTLS": [NSNumber numberWithBool:NO],
98+
@"tlsSettings": @{
99+
@"allowInsecure": [NSNumber numberWithBool:NO]
100+
},
97101
@"profiles":@[
98102
@{
99103
@"address": @"v2ray.cool",

V2RayX/ConfigWindowController.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@
4545
//ws fields
4646
@property (weak) IBOutlet NSButton *wsCrButton;
4747
@property (weak) IBOutlet NSTextField *wsPathField;
48-
48+
//tls fields
49+
@property (weak) IBOutlet NSButton *tlsUseButton;
50+
@property (weak) IBOutlet NSButton *tlsAiButton;
4951

5052
@property (nonatomic) ServerProfile* selectedProfile;
5153
@property NSInteger selectedServerIndex;

V2RayX/ConfigWindowController.m

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,11 @@ - (IBAction)showtransportSettings:(id)sender {
155155
[_wsCrButton setState:[transportSettings[@"wsSettings"][@"connectionReuse"] boolValue]];
156156
NSString *savedWsPath = transportSettings[@"wsSettings"][@"path"];
157157
[_wsPathField setStringValue: savedWsPath != nil ? savedWsPath : @""];
158+
//tls
159+
[_tlsUseButton setState:[[[NSUserDefaults standardUserDefaults] objectForKey:@"useTLS"] boolValue]];
160+
NSDictionary* tlsSettings = [[NSUserDefaults standardUserDefaults] objectForKey:@"tlsSettings"];
161+
[_tlsAiButton setState:[tlsSettings[@"allowInsecure"] boolValue]];
162+
[self useTLS:nil];
158163
//show sheet
159164
[[self window] beginSheet:_transportWindow completionHandler:^(NSModalResponse returnCode) {
160165
}];
@@ -212,13 +217,18 @@ - (IBAction)tOK:(id)sender {
212217
};
213218
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
214219
[defaults setObject:transportSettings forKey:@"transportSettings"];
220+
[defaults setObject:[NSNumber numberWithBool:[_tlsUseButton state]] forKey:@"useTLS"];
221+
[defaults setObject:@{@"allowInsecure": [NSNumber numberWithBool:[_tlsAiButton state]]} forKey:@"tlsSettings"];
215222
//close sheet
216-
[self tCancel:nil];
223+
[[self window] endSheet:_transportWindow];
217224
}
218225
}];
226+
}
219227

220-
228+
- (IBAction)useTLS:(id)sender {
229+
[_tlsAiButton setEnabled:[_tlsUseButton state]];
221230
}
231+
222232
- (IBAction)transportHelp:(id)sender {
223233
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://www.v2ray.com/chapter_02/05_transport.html"]];
224234
}

V2RayX/ServerProfile.m

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,11 @@ - (NSDictionary*)v2rayConfigWithLocalPort:(NSInteger)localPort
5454
config[@"outbound"][@"settings"][@"vnext"][0][@"users"][0][@"id"] = self.userId;
5555
config[@"outbound"][@"settings"][@"vnext"][0][@"users"][0][@"alterId"] = self.alterId;
5656
config[@"outbound"][@"settings"][@"vnext"][0][@"users"][0][@"security"] = @[@"aes-128-cfb", @"aes-128-gcm", @"chacha20-poly1305"][self.security.integerValue % 3];
57-
NSMutableDictionary* streamSettings = [[[NSUserDefaults standardUserDefaults] objectForKey:@"transportSettings"] mutableCopy];
57+
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
58+
NSMutableDictionary* streamSettings = [[userDefaults objectForKey:@"transportSettings"] mutableCopy];
5859
streamSettings[@"network"] = @[@"tcp", @"kcp", @"ws"][self.network.integerValue % 3];
60+
streamSettings[@"security"] = [[userDefaults objectForKey:@"useTLS"] boolValue] ? @"tls" : @"none";
61+
streamSettings[@"tlsSettings"] = [userDefaults objectForKey:@"tlsSettings"];
5962
config[@"outbound"][@"streamSettings"] = streamSettings;
6063
NSArray* dnsArray = [[[NSUserDefaults standardUserDefaults] objectForKey:@"dns"] componentsSeparatedByString:@","];
6164
if ([dnsArray count] > 0) {

0 commit comments

Comments
 (0)