1212int main (int argc, const char * argv[])
1313{
1414 if (argc != 2 ) {
15- printf (" usage: shadowsocks_sysconf on/ off\n " );
15+ printf (" usage: shadowsocks_sysconf off/auto/global \n " );
1616 return 1 ;
1717 }
1818 @autoreleasepool {
19+ NSString *on = [NSString stringWithUTF8String: argv[1 ]];
20+ /*
1921 BOOL on;
2022 if (strcmp(argv[1], "on") == 0) {
2123 on = YES;
@@ -24,7 +26,7 @@ int main(int argc, const char * argv[])
2426 } else {
2527 printf("usage: shadowsocks_sysconf on/off\n");
2628 return 1;
27- }
29+ }*/
2830 static AuthorizationRef authRef;
2931 static AuthorizationFlags authFlags;
3032 authFlags = kAuthorizationFlagDefaults
@@ -56,10 +58,24 @@ int main(int argc, const char * argv[])
5658 NSString *hardware = [dict valueForKeyPath: @" Interface.Hardware" ];
5759 // NSLog(@"%@", hardware);
5860 if ([hardware isEqualToString: @" AirPort" ] || [hardware isEqualToString: @" Wi-Fi" ] || [hardware isEqualToString: @" Ethernet" ]) {
59- if (on) {
61+
62+ if ([on isEqualToString: @" auto" ]) {
63+
6064 [proxies setObject: @" http://127.0.0.1:8090/proxy.pac" forKey: (NSString *)kCFNetworkProxiesProxyAutoConfigURLString ];
65+ [proxies setObject: [NSNumber numberWithInt: 1 ] forKey: (NSString *)kCFNetworkProxiesProxyAutoConfigEnable ];
66+
67+ } else if ([on isEqualToString: @" global" ]) {
68+
69+
70+ [proxies setObject: @" 127.0.0.1" forKey: (NSString *)
71+ kCFNetworkProxiesSOCKSProxy ];
72+ [proxies setObject: [NSNumber numberWithInteger: 1080 ] forKey: (NSString *)
73+ kCFNetworkProxiesSOCKSPort ];
74+ [proxies setObject: [NSNumber numberWithInt: 1 ] forKey: (NSString *)
75+ kCFNetworkProxiesSOCKSEnable ];
76+
6177 }
62- [proxies setObject: [ NSNumber numberWithInteger: ( NSInteger )on] forKey: ( NSString *) kCFNetworkProxiesProxyAutoConfigEnable ];
78+
6379 SCPreferencesPathSetValue (prefRef, (__bridge CFStringRef)[NSString stringWithFormat: @" /%@ /%@ /%@ " , kSCPrefNetworkServices , key, kSCEntNetProxies ], (__bridge CFDictionaryRef)proxies);
6480 }
6581 }
@@ -69,12 +85,14 @@ int main(int argc, const char * argv[])
6985 SCPreferencesSynchronize (prefRef);
7086
7187 }
88+ /*
7289 if (on) {
7390 printf("pac proxy set to on\n");
7491 } else {
7592 printf("pac proxy set to off\n");
7693 }
77-
94+ */
95+ printf (" pac proxy set to %s " , [on UTF8String ]);
7896 }
7997
8098 return 0 ;
0 commit comments