diff --git a/ShadowsocksX-NG/Info.plist b/ShadowsocksX-NG/Info.plist
index 2da9cf2..b87b19f 100644
--- a/ShadowsocksX-NG/Info.plist
+++ b/ShadowsocksX-NG/Info.plist
@@ -17,7 +17,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 1.3.2-R3
+ 1.3.3-R3
CFBundleSignature
????
CFBundleURLTypes
diff --git a/ShadowsocksX-NG/ProxyConfHelper.m b/ShadowsocksX-NG/ProxyConfHelper.m
index ab40743..69e3b3a 100644
--- a/ShadowsocksX-NG/ProxyConfHelper.m
+++ b/ShadowsocksX-NG/ProxyConfHelper.m
@@ -13,6 +13,7 @@
@implementation ProxyConfHelper
+GCDWebServer *webServer = nil;
+ (BOOL)isVersionOk {
NSTask *task;
@@ -124,7 +125,6 @@
NSMutableArray* args = [@[@"--mode", @"auto", @"--pac-url", [url absoluteString]]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
-
[self callHelper:args];
}
@@ -135,13 +135,15 @@
, [NSString stringWithFormat:@"%lu", (unsigned long)port]]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
-
[self callHelper:args];
+ [self stopPACServer];
}
+ (void)enableWhiteDomainListProxy {
- NSString* urlString = [NSString stringWithFormat:@"%@/.ShadowsocksX-NG/whitelist.pac", NSHomeDirectory()];
- NSURL* url = [NSURL fileURLWithPath:urlString];
+// NSString* urlString = [NSString stringWithFormat:@"%@/.ShadowsocksX-NG/whitelist.pac", NSHomeDirectory()];
+// NSURL* url = [NSURL fileURLWithPath:urlString];
+ NSString *PACURLString = [self startPACServer: @"whitelist.pac"];//hi 可以切换成定制pac文件路径来达成使用定制文件路径
+ NSURL* url = [NSURL URLWithString: PACURLString];
NSMutableArray* args = [@[@"--mode", @"auto", @"--pac-url", [url absoluteString]]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
@@ -149,8 +151,10 @@
}
+ (void)enableWhiteIPListProxy {
- NSString* urlString = [NSString stringWithFormat:@"%@/.ShadowsocksX-NG/whiteiplist.pac", NSHomeDirectory()];
- NSURL* url = [NSURL fileURLWithPath:urlString];
+// NSString* urlString = [NSString stringWithFormat:@"%@/.ShadowsocksX-NG/whiteiplist.pac", NSHomeDirectory()];
+// NSURL* url = [NSURL fileURLWithPath:urlString];
+ NSString *PACURLString = [self startPACServer: @"whiteiplist.pac"];//hi 可以切换成定制pac文件路径来达成使用定制文件路径
+ NSURL* url = [NSURL URLWithString: PACURLString];
NSMutableArray* args = [@[@"--mode", @"auto", @"--pac-url", [url absoluteString]]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
@@ -173,29 +177,33 @@
NSMutableArray* args = [@[@"--mode", @"off"]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
[self callHelper:args];
+ [self stopPACServer];
}
+ (NSString*)startPACServer:(NSString*) PACFilePath {
//接受参数为以后使用定制PAC文件
NSData * originalPACData;
+ NSString * routerPath = @"/proxy.pac";
if ([PACFilePath isEqual: @"hi"]) {//用默认路径来代替
PACFilePath = [NSString stringWithFormat:@"%@/%@", NSHomeDirectory(), @".ShadowsocksX-NG/gfwlist.js"];
originalPACData = [NSData dataWithContentsOfFile: [NSString stringWithFormat:@"%@/%@", NSHomeDirectory(), @".ShadowsocksX-NG/gfwlist.js"]];
}else{//用定制路径来代替
originalPACData = [NSData dataWithContentsOfFile: [NSString stringWithFormat:@"%@/%@/%@", NSHomeDirectory(), @".ShadowsocksX-NG", PACFilePath]];
+ routerPath = [NSString stringWithFormat:@"/%@",PACFilePath];
}
- GCDWebServer *webServer = [[GCDWebServer alloc] init];
- [webServer addHandlerForMethod:@"GET" path:@"/proxy.pac" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest *request) {
+ [self stopPACServer];
+ webServer = [[GCDWebServer alloc] init];
+ [webServer addHandlerForMethod:@"GET" path: routerPath requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest *request) {
return [GCDWebServerDataResponse responseWithData: originalPACData contentType:@"application/x-ns-proxy-autoconfig"];
}
];
int port = 8090;
[webServer startWithPort:port bonjourName:@"webserver"];
- return @"http://127.0.0.1:8090/proxy.pac";//为以后的定制PAC文件做准备
+ return [NSString stringWithFormat:@"%@%d%@",@"http://127.0.0.1:",port,routerPath];
}
+ (void)stopPACServer {
- //原版似乎没有处理这个,本来设计计划如果切换到全局模式或者手动模式就关掉webserver 似乎没有这个必要了?
+ [webServer stop];
}
@end