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

Commit 6a28d87

Browse files
committed
change plist form, from array to dictionary
1 parent 9279c0a commit 6a28d87

File tree

6 files changed

+141
-10
lines changed

6 files changed

+141
-10
lines changed

V2RayX/AppDelegate.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
- (IBAction)showConfigWindow:(id)sender;
1818
- (IBAction)editPac:(id)sender;
1919
- (NSArray*)readDefaultsAsArray;
20+
- (NSDictionary*)readDefaultsAsDictionary;
2021
@property (strong, nonatomic) NSStatusItem *statusBarItem;
2122
@property (strong, nonatomic) IBOutlet NSMenu *statusBarMenu;
2223
@property (weak, nonatomic) IBOutlet NSMenuItem *v2rayStatusItem;

V2RayX/AppDelegate.m

Lines changed: 109 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,11 @@ - (NSArray*)readDefaultsAsArray {
222222
} else {
223223
dServerIndex = [NSNumber numberWithInteger:-1];
224224
}
225-
//NSLog(@"local port:%@, udp:%@, profiles:%@",dLocalPort, dUdpSupport, dProfiles);
226225
return @[dProxyState,dMode,dLocalPort,dUdpSupport,dProfiles,dServerIndex];
227226
}
228227

229228
- (void)readDefaults {
229+
/*
230230
NSArray *defaultsArray = [self readDefaultsAsArray];
231231
proxyIsOn = [defaultsArray[0] boolValue];
232232
isAuto = [defaultsArray[1] boolValue];
@@ -235,9 +235,116 @@ - (void)readDefaults {
235235
[profiles removeAllObjects]; //Maybe unnecessary
236236
profiles = defaultsArray[4];
237237
selectedServerIndex = [defaultsArray[5] integerValue];
238+
239+
240+
return @{@"proxyState": dProxyState,
241+
@"mode": dMode,
242+
@"localPort": dLocalPort,
243+
@"udpSupport": dUdpSupport,
244+
@"profiles": dProfiles,
245+
@"serverIndex": dServerIndex };
246+
247+
248+
*/
249+
NSDictionary *defaultsDic = [self readDefaultsAsDictionary];
250+
proxyIsOn = [defaultsDic[@"proxyState"] boolValue];
251+
isAuto = [defaultsDic[@"mode"] boolValue];
252+
localPort = [defaultsDic[@"localPort"] integerValue];
253+
udpSupport = [defaultsDic[@"udpSupport"] integerValue];
254+
[profiles removeAllObjects];
255+
profiles = defaultsDic[@"profiles"];
256+
selectedServerIndex = [defaultsDic[@"serverIndex"] integerValue];
238257
NSLog(@"read %ld profiles, selected No.%ld", [profiles count] , selectedServerIndex);
239258
}
240259

260+
- (NSDictionary*)readDefaultsAsDictionary {
261+
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
262+
NSNumber *dProxyState = [defaults objectForKey:@"proxyIsOn"];
263+
if (dProxyState == nil) {
264+
dProxyState = [NSNumber numberWithBool:YES];//turn on proxy as default
265+
}
266+
NSNumber *dMode = [defaults objectForKey:@"isAuto"];
267+
if (dMode == nil) {
268+
dMode = [NSNumber numberWithBool:YES];//use auto mode as default
269+
}
270+
NSNumber* dLocalPort = [defaults objectForKey:@"localPort"];
271+
if (dLocalPort == nil) {
272+
dLocalPort = [NSNumber numberWithInteger:1081];//use 1081 as default local port
273+
}
274+
NSNumber* dUdpSupport = [defaults objectForKey:@"udpSupport"];
275+
if (dUdpSupport == nil) {
276+
dUdpSupport = [NSNumber numberWithBool:NO];// do not support udp as default
277+
}
278+
NSMutableArray *dProfilesInPlist = [defaults objectForKey:@"profiles"];
279+
NSMutableArray *dProfiles = [[NSMutableArray alloc] init];
280+
NSNumber *dServerIndex;
281+
if ([dProfilesInPlist isKindOfClass:[NSArray class]] && [dProfilesInPlist count] > 0) {
282+
for (NSDictionary *aProfile in dProfilesInPlist) {
283+
284+
ServerProfile *newProfile = [[ServerProfile alloc] init];
285+
[newProfile setAddress:aProfile[@"address"]];
286+
[newProfile setPort:[aProfile[@"port"] integerValue]];
287+
[newProfile setUserId:aProfile[@"userId"]];
288+
[newProfile setAlterId:[aProfile[@"alterId"] integerValue]];
289+
[newProfile setRemark:aProfile[@"remark"]];
290+
[dProfiles addObject:newProfile];
291+
}
292+
dServerIndex = [defaults objectForKey:@"selectedServerIndex"];
293+
if ([dServerIndex integerValue] <= 0 || [dServerIndex integerValue] >= [dProfiles count]) {
294+
// "<= 0" also includes the case where dServerIndex is nil
295+
dServerIndex = [NSNumber numberWithInteger:0]; // treate illeagle selectedServerIndex value
296+
}
297+
} else {
298+
dServerIndex = [NSNumber numberWithInteger:-1];
299+
}
300+
//return @[dProxyState,dMode,dLocalPort,dUdpSupport,dProfiles,dServerIndex];
301+
return @{@"proxyState": dProxyState,
302+
@"mode": dMode,
303+
@"localPort": dLocalPort,
304+
@"udpSupport": dUdpSupport,
305+
@"profiles": dProfiles,
306+
@"serverIndex": dServerIndex };
307+
}
308+
/*
309+
- (void)readDefaultsAsDictionary {
310+
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
311+
312+
NSNumber *dProxyState = [defaults objectForKey:@"proxyIsOn"];
313+
proxyIsOn = dProxyState == nil ? YES : [dProxyState boolValue];//turn on proxy as default
314+
315+
NSNumber *dMode = [defaults objectForKey:@"isAuto"];
316+
isAuto = dMode == nil ? YES : [dMode boolValue];//use auto mode as default
317+
318+
NSNumber* dLocalPort = [defaults objectForKey:@"localPort"];
319+
localPort = dLocalPort == nil ? 1081 : [dLocalPort integerValue];//use 1081 as default local port
320+
321+
NSNumber* dUdpSupport = [defaults objectForKey:@"udpSupport"];
322+
udpSupport = dUdpSupport == nil ? NO : [dUdpSupport boolValue];// do not support udp as default
323+
324+
325+
[profiles removeAllObjects]; //Maybe unnecessary
326+
NSMutableArray *dProfilesInPlist = [defaults objectForKey:@"profiles"];
327+
if ([dProfilesInPlist isKindOfClass:[NSArray class]] && [dProfilesInPlist count] > 0) {
328+
for (NSDictionary *aProfile in dProfilesInPlist) {
329+
ServerProfile *newProfile = [[ServerProfile alloc] init];
330+
[newProfile setAddress:aProfile[@"address"]];
331+
[newProfile setPort:[aProfile[@"port"] integerValue]];
332+
[newProfile setUserId:aProfile[@"userId"]];
333+
[newProfile setAlterId:[aProfile[@"alterId"] integerValue]];
334+
[newProfile setRemark:aProfile[@"remark"]];
335+
[profiles addObject:newProfile];
336+
}
337+
selectedServerIndex = [[defaults objectForKey:@"selectedServerIndex"] integerValue];
338+
if (selectedServerIndex <= 0 || selectedServerIndex >= [profiles count]) {
339+
// "<= 0" also includes the case where dServerIndex is nil
340+
selectedServerIndex = 0; // treate illeagle selectedServerIndex value
341+
}
342+
} else {
343+
selectedServerIndex = -1;
344+
}
345+
}*/
346+
347+
241348
-(BOOL)reloadV2ray {
242349
runCommandLine(@"/bin/launchctl", @[@"unload", plistPath]);
243350
NSLog(@"V2Ray core unloaded.");
@@ -374,7 +481,7 @@ - (BOOL)isSysconfVersionOK {
374481

375482
-(void)configurationDidChange {
376483
[self readDefaults];
377-
//NSLog(@"profiles = %ld, just after read.",[profiles count]);
484+
NSLog(@"profiles = %ld, just after read.",[profiles count]);
378485
if (![self reloadV2ray]) {
379486
proxyIsOn = NO;
380487
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:NO] forKey:@"proxyIsOn"];

V2RayX/ConfigWindowController.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
@optional
1414
- (void)configurationDidChange;
1515
- (NSArray*)readDefaultsAsArray;
16+
- (NSDictionary*)readDefaultsAsDictionary;
1617

1718
@end
1819

V2RayX/ConfigWindowController.m

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,21 @@ - (void)windowDidLoad {
2525
[_localPortField setFormatter:formatter];
2626

2727
profiles = [[NSMutableArray alloc] init];
28-
28+
//profiles = [[NSMutableDictionary alloc] init];
2929
//read defaults
30-
NSArray *defaultsArray = [[self delegate] readDefaultsAsArray];
30+
//NSArray *defaultsArray = [[self delegate] readDefaultsAsArray];
31+
NSDictionary *defaultsDic = [[self delegate] readDefaultsAsDictionary];
32+
[self setLocalPort:[defaultsDic[@"localPort"] integerValue]];
33+
[self setUdpSupport:[defaultsDic[@"udpSupport"] boolValue]];
34+
profiles = defaultsDic[@"profiles"];
35+
[_profileTable reloadData];
36+
_selectedServerIndex = [defaultsDic[@"serverIndex"] integerValue];
37+
/*
3138
[self setLocalPort:[defaultsArray[2] integerValue]];
3239
[self setUdpSupport:[defaultsArray[3] boolValue]];
3340
profiles = defaultsArray[4];
3441
[_profileTable reloadData];
35-
_selectedServerIndex = [defaultsArray[5] integerValue];
42+
_selectedServerIndex = [defaultsArray[5] integerValue];*/
3643
}
3744

3845

@@ -99,7 +106,7 @@ - (IBAction)okSave:(id)sender {
99106
[defaults setObject:[NSNumber numberWithInteger:localPort] forKey:@"localPort"];
100107
NSMutableArray* profileDicArray = [[NSMutableArray alloc] init];
101108
for (ServerProfile *p in profiles) {
102-
[profileDicArray addObject:[p toArray]];
109+
[profileDicArray addObject:[p dictionaryForm]];
103110
}
104111
[defaults setObject:profileDicArray forKey:@"profiles"];
105112
[defaults setObject:[NSNumber numberWithInteger:[_profileTable selectedRow]] forKey:@"selectedServerIndex"];

V2RayX/ServerProfile.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
@interface ServerProfile : NSObject
1111
- (NSArray*)toArray;
12+
- (NSDictionary*)dictionaryForm;
1213
- (NSDictionary*)v2rayConfigWithLocalPort:(NSInteger)localPort udpSupport:(BOOL)udp;
1314
@property (nonatomic) NSString* address;
1415
@property (nonatomic) NSInteger port;

V2RayX/ServerProfile.m

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ - (ServerProfile*)init {
1313
self = [super init];
1414
if (self) {
1515
// use v2ray public server as default
16-
[self setAddress:@"45.32.24.103"];
17-
[self setPort:38291];
18-
[self setUserId:@"8833948b-5861-4a0f-a1d6-83c5606881ff"];
16+
[self setAddress:@"v2ray.cool"];
17+
[self setPort:10086];
18+
[self setUserId:@"23ad6b10-8d1a-40f7-8ad0-e3e35cd38297"];
1919
[self setAlterId:64];
20-
[self setRemark:@""];
20+
[self setRemark:@"test server"];
2121
}
2222
return self;
2323
}
@@ -30,6 +30,20 @@ - (NSArray*)toArray {
3030
return @[address,[NSNumber numberWithInteger:port], userId, [NSNumber numberWithInteger:alterId], remark];
3131
}
3232

33+
- (NSDictionary*)dictionaryForm {
34+
return @{@"address": address,
35+
@"port": [NSNumber numberWithInteger:port],
36+
@"userId": userId,
37+
@"alterId": [NSNumber numberWithInteger:alterId],
38+
@"remark": remark };
39+
}
40+
/*
41+
[newProfile setAddress:aProfile[@"address"]];
42+
[newProfile setPort:[aProfile[@"port"] integerValue]];
43+
[newProfile setUserId:aProfile[@"userId"]];
44+
[newProfile setAlterId:[aProfile[@"alterId"] integerValue]];
45+
[newProfile setRemark:aProfile[@"remark"]];
46+
*/
3347
- (NSDictionary*)v2rayConfigWithLocalPort:(NSInteger)localPort udpSupport:(BOOL)udp {
3448
//generate config template
3549
NSMutableDictionary *config = [NSMutableDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"config-sample" ofType:@"plist"]];

0 commit comments

Comments
 (0)