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

@ -25,7 +25,7 @@ int main(int argc, const char * argv[])
NSString* privoxyPortString;
BRLOptionParser *options = [BRLOptionParser new];
[options setBanner:@"Usage: %s [-v] [-m auto|global|off] [-u <url>] [-p <port>] [-r <port>]", argv[0]];
[options setBanner:@"Usage: %s [-v] [-m auto|global|off] [-u <url>] [-p <port>] [-r <port>] [-x <exception>]", argv[0]];
// Version
[options addOption:"version" flag:'v' description:@"Print the version number." block:^{
@ -52,6 +52,11 @@ int main(int argc, const char * argv[])
[options addOption:"network-service" flag:'n' description:@"Manual specify the network profile need to set proxy." blockWithArgument:^(NSString* value){
[networkServiceKeys addObject:value];
}];
NSMutableSet* proxyExceptions = [NSMutableSet set];
[options addOption:"proxy-exception" flag:'x' description:@"Bypass proxy settings for this Host / Domain" blockWithArgument:^(NSString *value) {
[proxyExceptions addObject:value];
}];
NSError *error = nil;
if (![options parseArgc:argc argv:argv error:&error]) {
@ -92,6 +97,12 @@ int main(int argc, const char * argv[])
return 1;
}
}
// Bypass these Hosts & Domains if not specified
if ([proxyExceptions count] == 0) {
NSArray* bypass = @[@"127.0.0.1", @"localhost", @"192.168.0.0/16", @"10.0.0.0/8"];
[proxyExceptions addObjectsFromArray:bypass];
}
static AuthorizationRef authRef;
static AuthorizationFlags authFlags;
@ -158,7 +169,7 @@ int main(int argc, const char * argv[])
kCFNetworkProxiesSOCKSPort];
[proxies setObject:[NSNumber numberWithInt:1] forKey:(NSString*)
kCFNetworkProxiesSOCKSEnable];
[proxies setObject:@[@"127.0.0.1", @"localhost", @"192.168.0.0/16", @"10.0.0.0/8"] forKey:(NSString *)kCFNetworkProxiesExceptionsList];
[proxies setObject:[proxyExceptions allObjects] forKey:(NSString *)kCFNetworkProxiesExceptionsList];
if (privoxyPort != 0) {
[proxies setObject:@"127.0.0.1" forKey:(NSString *)