解决 macOS 10.12 下 PAC 模式下Safari 或 Twitter 客户端 tweetbot客户端不能FQ的问题

解决 macOS 10.12 下 PAC 模式下Safari 或 Twitter 客户端 tweetbot客户端不能FQ的问题
https://github.com/qiuyuzhou/ShadowsocksX-NG/issues/30
PS 手头没有 macOS 10.12 的机器,麻烦有的请帮忙测试一下
或者可以从 https://github.com/qinyuhang/ShadowsocksX-NG/tree/webserver 下载去
Xcode build 一下
This commit is contained in:
qinyuhang
2016-08-23 17:08:21 +08:00
parent c43ed478fd
commit 7520fd54a6
55 changed files with 13857 additions and 259 deletions

View File

@ -113,10 +113,14 @@
}
}
+ (void)enablePACProxy {
NSString* urlString = [NSString stringWithFormat:@"%@/.ShadowsocksX-NG/gfwlist.js", NSHomeDirectory()];
NSURL* url = [NSURL fileURLWithPath:urlString];
+ (void)enablePACProxy:(NSString*) PACFilePath {
//start server here and then using the string next line
//next two lines can open gcdwebserver and work around pac file
NSString *PACURLString = [self startPACServer: PACFilePath];//hi pac使
NSURL* url = [NSURL URLWithString: PACURLString];
// NSString* urlString = [NSString stringWithFormat:@"%@/.ShadowsocksX-NG/gfwlist.js", NSHomeDirectory()];
// NSURL* url = [NSURL fileURLWithPath:urlString];
NSMutableArray* args = [@[@"--mode", @"auto", @"--pac-url", [url absoluteString]]mutableCopy];
[self addArguments4ManualSpecifyNetworkServices:args];
@ -135,10 +139,12 @@
[self callHelper:args];
}
+ (void)disableProxy {
// ssx-ng
NSString* urlString = [NSString stringWithFormat:@"%@/.ShadowsocksX-NG/gfwlist.js", NSHomeDirectory()];
NSURL* url = [NSURL fileURLWithPath:urlString];
+ (void)disableProxy:(NSString*) PACFilePath {
// ssx-ng
// NSString* urlString = [NSString stringWithFormat:@"%@/.ShadowsocksX-NG/gfwlist.js", NSHomeDirectory()];
// NSURL* url = [NSURL fileURLWithPath:urlString];
NSString *PACURLString = [self startPACServer: PACFilePath];//hi pac使
NSURL* url = [NSURL URLWithString: PACURLString];
NSUInteger port = [[NSUserDefaults standardUserDefaults]integerForKey:@"LocalSocks5.ListenPort"];
NSMutableArray* args = [@[@"--mode", @"off"
@ -149,4 +155,27 @@
[self callHelper:args];
}
+ (NSString*)startPACServer:(NSString*) PACFilePath {
//使PAC
NSData * originalPACData;
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]];
}
GCDWebServer *webServer = [[GCDWebServer alloc] init];
[webServer addHandlerForMethod:@"GET" path:@"/proxy.pac" 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
}
+ (void)stopPACServer {
//webserver
}
@end