From fe35bc2bc88cd1b9a08d1e4f75d2872dea8cbafa Mon Sep 17 00:00:00 2001 From: ibigbug Date: Fri, 4 Jul 2014 12:51:46 +0800 Subject: [PATCH] Add: shadowsocks_sysconf off/auto/global mode --- .gitignore | 1 + shadowsocks_sysconf/main.m | 28 +++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index da78cc3..8b0314a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ build .idea/ shadowsocks.xcodeproj/project.xcworkspace/ shadowsocks.xcodeproj/xcuserdata/ +.DS_STORE diff --git a/shadowsocks_sysconf/main.m b/shadowsocks_sysconf/main.m index f4723cc..f411dba 100644 --- a/shadowsocks_sysconf/main.m +++ b/shadowsocks_sysconf/main.m @@ -12,10 +12,12 @@ int main(int argc, const char * argv[]) { if (argc != 2) { - printf("usage: shadowsocks_sysconf on/off\n"); + printf("usage: shadowsocks_sysconf off/auto/global\n"); return 1; } @autoreleasepool { + NSString *on = [NSString stringWithUTF8String:argv[1]]; + /* BOOL on; if (strcmp(argv[1], "on") == 0) { on = YES; @@ -24,7 +26,7 @@ int main(int argc, const char * argv[]) } else { printf("usage: shadowsocks_sysconf on/off\n"); return 1; - } + }*/ static AuthorizationRef authRef; static AuthorizationFlags authFlags; authFlags = kAuthorizationFlagDefaults @@ -56,10 +58,24 @@ int main(int argc, const char * argv[]) NSString *hardware = [dict valueForKeyPath:@"Interface.Hardware"]; // NSLog(@"%@", hardware); if ([hardware isEqualToString:@"AirPort"] || [hardware isEqualToString:@"Wi-Fi"] || [hardware isEqualToString:@"Ethernet"]) { - if (on) { + + if ([on isEqualToString:@"auto"]) { + [proxies setObject:@"http://127.0.0.1:8090/proxy.pac" forKey:(NSString *)kCFNetworkProxiesProxyAutoConfigURLString]; + [proxies setObject:[NSNumber numberWithInt:1] forKey:(NSString *)kCFNetworkProxiesProxyAutoConfigEnable]; + + } else if ([on isEqualToString:@"global"]) { + + + [proxies setObject:@"127.0.0.1" forKey:(NSString *) + kCFNetworkProxiesSOCKSProxy]; + [proxies setObject:[NSNumber numberWithInteger:1080] forKey:(NSString*) + kCFNetworkProxiesSOCKSPort]; + [proxies setObject:[NSNumber numberWithInt:1] forKey:(NSString*) + kCFNetworkProxiesSOCKSEnable]; + } - [proxies setObject:[NSNumber numberWithInteger:(NSInteger)on] forKey:(NSString *)kCFNetworkProxiesProxyAutoConfigEnable]; + SCPreferencesPathSetValue(prefRef, (__bridge CFStringRef)[NSString stringWithFormat:@"/%@/%@/%@", kSCPrefNetworkServices, key, kSCEntNetProxies], (__bridge CFDictionaryRef)proxies); } } @@ -69,12 +85,14 @@ int main(int argc, const char * argv[]) SCPreferencesSynchronize(prefRef); } + /* if (on) { printf("pac proxy set to on\n"); } else { printf("pac proxy set to off\n"); } - + */ + printf("pac proxy set to %s", [on UTF8String]); } return 0;