diff --git a/ShadowsocksX-NG/AppDelegate.swift b/ShadowsocksX-NG/AppDelegate.swift index ba927c7..7bbeebf 100755 --- a/ShadowsocksX-NG/AppDelegate.swift +++ b/ShadowsocksX-NG/AppDelegate.swift @@ -93,6 +93,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele "ShadowsocksRunningMode": "auto", "LocalSocks5.ListenPort": NSNumber(value: 1086 as UInt16), "LocalSocks5.ListenAddress": "127.0.0.1", + "PacServer.ListenAddress":"127.0.0.1", "PacServer.ListenPort":NSNumber(value: 1089 as UInt16), "LocalSocks5.Timeout": NSNumber(value: 60 as UInt), "LocalSocks5.EnableUDPRelay": NSNumber(value: false as Bool), diff --git a/ShadowsocksX-NG/Base.lproj/PreferencesWinController.xib b/ShadowsocksX-NG/Base.lproj/PreferencesWinController.xib index 4908f50..3faf730 100644 --- a/ShadowsocksX-NG/Base.lproj/PreferencesWinController.xib +++ b/ShadowsocksX-NG/Base.lproj/PreferencesWinController.xib @@ -1,8 +1,8 @@ - + - + @@ -15,14 +15,14 @@ - + - + - + @@ -92,7 +92,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -168,7 +168,7 @@ - + @@ -176,10 +176,10 @@ - + - + @@ -192,7 +192,7 @@ - + @@ -250,10 +250,10 @@ - + - + @@ -265,32 +265,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -306,7 +336,7 @@ - + @@ -314,7 +344,7 @@ - + @@ -325,7 +355,7 @@ - + @@ -340,7 +370,7 @@ - + @@ -406,7 +436,7 @@ - + @@ -415,7 +445,7 @@ - + @@ -443,11 +473,11 @@ - - + diff --git a/ShadowsocksX-NG/Diagnose.swift b/ShadowsocksX-NG/Diagnose.swift index 84c399f..08a3ffc 100644 --- a/ShadowsocksX-NG/Diagnose.swift +++ b/ShadowsocksX-NG/Diagnose.swift @@ -41,6 +41,7 @@ func diagnose() -> String { "ShadowsocksRunningMode", "LocalSocks5.ListenPort", "LocalSocks5.ListenAddress", + "PacServer.ListenAddress", "PacServer.ListenPort", "LocalSocks5.Timeout", "LocalSocks5.EnableUDPRelay", diff --git a/ShadowsocksX-NG/ProxyConfHelper.m b/ShadowsocksX-NG/ProxyConfHelper.m index a6196c5..e2e8dd6 100644 --- a/ShadowsocksX-NG/ProxyConfHelper.m +++ b/ShadowsocksX-NG/ProxyConfHelper.m @@ -153,18 +153,21 @@ GCDWebServer *webServer =nil; } + (void)enableGlobalProxy { + NSString* socks5ListenAddress = [[NSUserDefaults standardUserDefaults]stringForKey:@"LocalSocks5.ListenAddress"]; NSUInteger port = [[NSUserDefaults standardUserDefaults]integerForKey:@"LocalSocks5.ListenPort"]; NSMutableArray* args = [@[@"--mode", @"global", @"--port" - , [NSString stringWithFormat:@"%lu", (unsigned long)port]]mutableCopy]; + , [NSString stringWithFormat:@"%lu", (unsigned long)port],@"--socks-listen-address",socks5ListenAddress]mutableCopy]; // Because issue #106 https://github.com/shadowsocks/ShadowsocksX-NG/issues/106 // Comment below out. // if ([[NSUserDefaults standardUserDefaults] boolForKey:@"LocalHTTPOn"] && [[NSUserDefaults standardUserDefaults] boolForKey:@"LocalHTTP.FollowGlobal"]) { // NSUInteger privoxyPort = [[NSUserDefaults standardUserDefaults]integerForKey:@"LocalHTTP.ListenPort"]; -// +// NSString* privoxyListenAddress = [[NSUserDefaults standardUserDefaults]stringForKey:@"LocalHTTP.ListenAddress"]; // [args addObject:@"--privoxy-port"]; // [args addObject:[NSString stringWithFormat:@"%lu", (unsigned long)privoxyPort]]; +// [args addObject:@"--privoxy-listen-address"]; +// [args addObject:privoxyListenAddress]; // } [self addArguments4ManualSpecifyNetworkServices:args]; @@ -193,7 +196,7 @@ GCDWebServer *webServer =nil; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString * address = @"127.0.0.1"; + NSString * address = [defaults stringForKey:@"PacServer.ListenAddress"]; int port = (short)[defaults integerForKey:@"PacServer.ListenPort"]; return [NSString stringWithFormat:@"%@%@:%d%@",@"http://",address,port,routerPath]; @@ -207,6 +210,8 @@ GCDWebServer *webServer =nil; NSData* originalPACData = [NSData dataWithContentsOfFile:PACFilePath]; webServer = [[GCDWebServer alloc] init]; + + [webServer addHandlerForMethod:@"GET" path:routerPath requestClass:[GCDWebServerRequest class] @@ -220,9 +225,10 @@ GCDWebServer *webServer =nil; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString * address = [defaults stringForKey:@"PacServer.ListenAddress"]; int port = (short)[defaults integerForKey:@"PacServer.ListenPort"]; - [webServer startWithOptions:@{@"BindToLocalhost":@YES, @"Port":@(port)} error:nil]; + [webServer startWithOptions:@{@"ServerName":address,@"Port":@(port)} error:nil]; } + (void)stopPACServer { diff --git a/ShadowsocksX-NG/zh-Hans.lproj/PreferencesWinController.strings b/ShadowsocksX-NG/zh-Hans.lproj/PreferencesWinController.strings index 47c4777..9bd56b3 100644 --- a/ShadowsocksX-NG/zh-Hans.lproj/PreferencesWinController.strings +++ b/ShadowsocksX-NG/zh-Hans.lproj/PreferencesWinController.strings @@ -1,4 +1,3 @@ - /* Class = "NSTextFieldCell"; title = "Seconds"; ObjectID = "4R2-UO-qs7"; */ "4R2-UO-qs7.title" = "秒"; @@ -53,6 +52,9 @@ /* Class = "NSTextFieldCell"; title = "Num of Kcptun connections:"; ObjectID = "FSi-9j-QBe"; */ "FSi-9j-QBe.title" = "Num of Kcptun connections:"; +/* Class = "NSTextFieldCell"; title = "Local PAC Server Listen Address:"; ObjectID = "80e-Qu-r2S"; */ +"80e-Qu-r2S.title" = "本地PAC服务器监听地址:"; + /* Class = "NSTextFieldCell"; title = "Local PAC Server Listen Port:"; ObjectID = "IMQ-c4-gmc"; */ "IMQ-c4-gmc.title" = "本地PAC服务器监听端口:"; diff --git a/proxy_conf_helper/main.m b/proxy_conf_helper/main.m index dfab595..c208ddc 100644 --- a/proxy_conf_helper/main.m +++ b/proxy_conf_helper/main.m @@ -22,10 +22,12 @@ int main(int argc, const char * argv[]) NSString* mode; NSString* pacURL; NSString* portString; + NSString* socks5ListenAddress; NSString* privoxyPortString; + NSString* privoxyListenAddress; BRLOptionParser *options = [BRLOptionParser new]; - [options setBanner:@"Usage: %s [-v] [-m auto|global|off] [-u ] [-p ] [-r ] [-x ]", argv[0]]; + [options setBanner:@"Usage: %s [-v] [-m auto|global|off] [-u ] [-p ] [-l ] [-r ] [-p ] [-x ]", argv[0]]; // Version [options addOption:"version" flag:'v' description:@"Print the version number." block:^{ @@ -45,8 +47,10 @@ int main(int argc, const char * argv[]) [options addOption:"pac-url" flag:'u' description:@"PAC file url for auto mode." argument:&pacURL]; [options addOption:"port" flag:'p' description:@"Listen port for global mode." argument:&portString]; + [options addOption:"socks-listen-address" flag:'l' description:@"Listen socks5 address for global mode." argument:&socks5ListenAddress]; [options addOption:"privoxy-port" flag:'r' description:@"Privoxy Port for global mode." argument:&privoxyPortString]; + [options addOption:"privoxy-listen-address" flag:'s' description:@"Privoxy Listen Address for global mode." argument:&privoxyListenAddress]; NSMutableSet* networkServiceKeys = [NSMutableSet set]; [options addOption:"network-service" flag:'n' description:@"Manual specify the network profile need to set proxy." blockWithArgument:^(NSString* value){ @@ -157,7 +161,7 @@ int main(int argc, const char * argv[]) } else if ([mode isEqualToString:@"global"]) { - [proxies setObject:@"127.0.0.1" forKey:(NSString *) + [proxies setObject:socks5ListenAddress forKey:(NSString *) kCFNetworkProxiesSOCKSProxy]; [proxies setObject:[NSNumber numberWithInteger:port] forKey:(NSString*) kCFNetworkProxiesSOCKSPort]; @@ -166,14 +170,14 @@ int main(int argc, const char * argv[]) [proxies setObject:[proxyExceptions allObjects] forKey:(NSString *)kCFNetworkProxiesExceptionsList]; if (privoxyPort != 0) { - [proxies setObject:@"127.0.0.1" forKey:(NSString *) + [proxies setObject:privoxyListenAddress forKey:(NSString *) kCFNetworkProxiesHTTPProxy]; [proxies setObject:[NSNumber numberWithInteger:privoxyPort] forKey:(NSString*) kCFNetworkProxiesHTTPPort]; [proxies setObject:[NSNumber numberWithInt:1] forKey:(NSString*) kCFNetworkProxiesHTTPEnable]; - [proxies setObject:@"127.0.0.1" forKey:(NSString *) + [proxies setObject:privoxyListenAddress forKey:(NSString *) kCFNetworkProxiesHTTPSProxy]; [proxies setObject:[NSNumber numberWithInteger:privoxyPort] forKey:(NSString*) kCFNetworkProxiesHTTPSPort];