Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -(void)setIPv4Shit:(SCNetworkServiceRef)service{
- SCNetworkProtocolRef protoR = SCNetworkServiceCopyProtocol(service, kSCNetworkProtocolTypeIPv4);
- CFDictionaryRef proxyDictR = SCNetworkProtocolGetConfiguration(protoR); // returns NULL if no configuration.
- const void *configMethodP = proxyDictR ? CFDictionaryGetValue(proxyDictR, kSCPropNetIPv4ConfigMethod) : NULL;
- #define GetCasted(value, type) ((value) && (CFGetTypeID(value) == type##GetTypeID()) ? ((type##Ref)value) : NULL)
- CFStringRef configMethod = GetCasted(configMethodP, CFString);
- CFMutableDictionaryRef newProxyDictR;
- newProxyDictR = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
- CFDictionarySetValue(newProxyDictR, kSCPropNetIPv4ConfigMethod, configMethod);
- CFDictionarySetValue(newProxyDictR, kSCPropNetOverridePrimary, CFSTR("1"));
- SCNetworkProtocolSetConfiguration(protoR, newProxyDictR);
- CFRelease(newProxyDictR);
- }
- -(void)connectnew{
- CFStringRef username = (__bridge CFStringRef)@"xxx";
- CFStringRef password = (__bridge CFStringRef)@"xxx";
- CFStringRef address = (__bridge CFStringRef)@"67.185.xxx.xxx";
- CFStringRef kAppName = CFSTR("MyProxService");
- CFStringRef kVendorName = CFSTR("com.all.proxtool");
- OSStatus authErr = noErr;
- int err = 0;
- CFStringRef mykeys[] = { kSCPropNetPPPAuthName//, kSCPropNetPPPAuthPassword
- ,kSCPropNetPPPCommRemoteAddress,kSCPropNetPPPCCPEnabled
- ,kSCPropNetPPPCCPMPPE40Enabled, kSCPropNetPPPCCPMPPE128Enabled
- ,kSCPropNetPPPCommDisplayTerminalWindow,kSCPropNetPPPCommRedialCount
- ,kSCPropNetPPPCommRedialEnabled,kSCPropNetPPPCommRedialInterval
- ,kSCPropNetPPPCommUseTerminalScript,kSCPropNetPPPDialOnDemand
- ,kSCPropNetPPPDisconnectOnFastUserSwitch,kSCPropNetPPPDisconnectOnIdle
- ,kSCPropNetPPPDisconnectOnIdleTimer,kSCPropNetPPPDisconnectOnLogout
- ,kSCPropNetPPPDisconnectOnSleep,kSCPropNetPPPIPCPCompressionVJ
- ,kSCPropNetPPPIdleReminder,kSCPropNetPPPIdleReminderTimer
- ,kSCPropNetPPPLCPEchoEnabled,kSCPropNetPPPLCPEchoFailure
- ,kSCPropNetPPPLCPEchoInterval,kSCPropNetPPPLogfile
- ,kSCPropNetPPPVerboseLogging };
- CFStringRef myvals[] = { username//, password
- , address, CFSTR("1")
- , CFSTR("1"), CFSTR("1")
- , CFSTR("0"), CFSTR("1")
- , CFSTR("0"), CFSTR("5")
- , CFSTR("0"), CFSTR("0")
- , CFSTR("1"), CFSTR("0")
- , CFSTR("600"), CFSTR("1")
- , CFSTR("0"), CFSTR("0")
- , CFSTR("0"), CFSTR("1800")
- , CFSTR("1"), CFSTR("15")
- , CFSTR("20"), CFSTR("/var/log/ppp.log")
- , CFSTR("0") };
- CFDictionaryRef myoptions = CFDictionaryCreate (NULL,
- (const void **)&mykeys,
- (const void **)&myvals,
- 24,
- &kCFTypeDictionaryKeyCallBacks,
- &kCFTypeDictionaryValueCallBacks);
- // Authority
- AuthorizationFlags rootFlags = kAuthorizationFlagDefaults | kAuthorizationFlagExtendRights |
- kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize;
- AuthorizationRef auth;
- authErr = AuthorizationCreate(NULL,
- kAuthorizationEmptyEnvironment,
- rootFlags,
- &auth);
- // Create preferences for interface.
- SCPreferencesRef prefs;
- if (authErr == noErr) {
- NSLog(@"here");
- prefs = SCPreferencesCreateWithAuthorization(NULL, kVendorName, NULL, auth);
- } else {
- NSLog(@"there");
- prefs = SCPreferencesCreate(NULL, kVendorName, NULL);
- }
- if (prefs == NULL) {
- NSLog(@"Could not create preferences\n");
- err = SCError();
- } else {
- CFArrayRef servicesArray;
- servicesArray = SCNetworkServiceCopyAll(prefs);
- if (servicesArray == NULL) {
- NSLog(@"No network services");
- // return -1;
- SCPreferencesUnlock(prefs);
- if (servicesArray != NULL) {
- CFRelease(servicesArray);
- }
- } else {
- SCNetworkServiceRef service;
- CFIndex i, arraySize;
- Boolean serviceFound = FALSE;
- CFStringRef serviceToDial;
- arraySize = CFArrayGetCount(servicesArray);
- for (i = 0; i < arraySize; ++i) {
- service = (SCNetworkServiceRef) CFArrayGetValueAtIndex(servicesArray, i);
- CFStringRef serviceName = SCNetworkServiceGetName(service);
- if (CFStringCompare(serviceName, kAppName, 0) == kCFCompareEqualTo) {
- serviceFound = TRUE;
- serviceToDial = SCNetworkServiceGetServiceID(service);
- break;
- }
- }
- SCNetworkInterfaceRef pptpItfc;
- SCNetworkInterfaceRef iface;
- if (SCPreferencesLock(prefs, TRUE)){
- if (!serviceFound){
- pptpItfc = SCNetworkInterfaceCreateWithInterface(kSCNetworkInterfaceIPv4,
- kSCNetworkInterfaceTypePPTP);
- iface = SCNetworkInterfaceCreateWithInterface(pptpItfc, kSCNetworkInterfaceTypePPP);
- if (prefs && iface) {
- service = SCNetworkServiceCreate(prefs, iface);
- SCNetworkServiceSetName(service, kAppName);
- iface = SCNetworkServiceGetInterface(service);
- if (! SCNetworkInterfaceSetConfiguration(iface, myoptions)){
- NSLog(@"failed to set config");
- // err = SCError();
- } else {
- SCNetworkServiceEstablishDefaultConfiguration(service);
- SCNetworkSetRef set = SCNetworkSetCopyCurrent(prefs);
- if (set && SCNetworkSetAddService(set, service)) {
- [self setIPv4Shit:service];
- if (SCPreferencesCommitChanges(prefs)) {
- if (SCPreferencesApplyChanges(prefs)){
- SCPreferencesSynchronize(prefs);
- serviceToDial = SCNetworkServiceGetServiceID(service);
- }
- }
- }
- }
- }
- } else {
- iface = SCNetworkServiceGetInterface(service);
- if (! (iface && SCNetworkInterfaceSetConfiguration(iface, myoptions)) ){
- NSLog(@"failed to set config");
- // err = SCError();
- } else {
- [self setIPv4Shit:service];
- if (SCPreferencesCommitChanges(prefs)) {
- if (SCPreferencesApplyChanges(prefs)){
- SCPreferencesSynchronize(prefs);
- serviceToDial = SCNetworkServiceGetServiceID(service);
- }
- }
- }
- }
- SCPreferencesUnlock(prefs);
- CFStringRef serviceName;
- serviceName = SCNetworkServiceGetName(service);
- NSLog(@"the service name is %@", serviceName);
- NSTask *task;
- task = [[NSTask alloc] init];
- [task setLaunchPath: @"/usr/sbin/networksetup"];
- NSArray *arguments;
- arguments = [NSArray arrayWithObjects: @"-setpppoepassword", serviceName, password, nil];
- [task setArguments: arguments];
- NSLog(@"%@", arguments);
- [task launch];
- [task waitUntilExit];
- } else {
- NSLog(@"Failed to get pref lock");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement