Adds exception rules config for Global Mode

This commit is contained in:
Timothy Qiu
2017-10-30 15:03:02 +08:00
parent 89de12ba24
commit 56d052d160
5 changed files with 135 additions and 67 deletions

View File

@ -114,6 +114,24 @@ GCDWebServer *webServer =nil;
}
}
+ (void)addArguments4ManualSpecifyProxyExceptions:(NSMutableArray*) args {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString* rawExceptions = [defaults stringForKey:@"ProxyExceptions"];
if (rawExceptions) {
NSCharacterSet* seps = [NSCharacterSet characterSetWithCharactersInString:@", 、"];
NSCharacterSet* whites = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSArray* exceptions = [rawExceptions componentsSeparatedByCharactersInSet:seps];
for (NSString* rawDomainOrHost in exceptions) {
NSString* domainOrHost = [rawDomainOrHost stringByTrimmingCharactersInSet:whites];
if ([domainOrHost length] > 0) {
[args addObject:@"-x"];
[args addObject:domainOrHost];
}
}
}
}
+ (NSString*)getPACFilePath {
return [NSString stringWithFormat:@"%@/%@", NSHomeDirectory(), @".ShadowsocksX-NG/gfwlist.js"];
}
@ -129,6 +147,7 @@ GCDWebServer *webServer =nil;
NSMutableArray* args = [@[@"--mode", @"auto", @"--pac-url", [url absoluteString]]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
[self addArguments4ManualSpecifyProxyExceptions:args];
[self callHelper:args];
}
@ -148,6 +167,7 @@ GCDWebServer *webServer =nil;
// }
[self addArguments4ManualSpecifyNetworkServices:args];
[self addArguments4ManualSpecifyProxyExceptions:args];
[self callHelper:args];
[self stopPACServer];
}
@ -162,6 +182,7 @@ GCDWebServer *webServer =nil;
, @"--pac-url", [url absoluteString]
]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
[self addArguments4ManualSpecifyProxyExceptions:args];
[self callHelper:args];
[self stopPACServer];
}