add stop pac server method

add stop pac server method to avoid switch pac file failure
This commit is contained in:
qinyuhang
2016-08-24 11:52:40 +08:00
parent f64798504c
commit 66b0b622f0

View File

@ -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,8 +135,8 @@
, [NSString stringWithFormat:@"%lu", (unsigned long)port]]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
[self callHelper:args];
[self stopPACServer];
}
+ (void)disableProxy:(NSString*) PACFilePath {
@ -153,29 +153,34 @@
]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