diff options
| author | Grant Limberg <grant.limberg@red.com> | 2016-05-31 17:19:22 -0700 |
|---|---|---|
| committer | Grant Limberg <grant.limberg@red.com> | 2016-05-31 17:23:11 -0700 |
| commit | 975bcb8affa7fbd7ca534dac9ec8d642e6c977f7 (patch) | |
| tree | 75f5f57d31302fddf2bc20d54bb6713fe08f873e /ZeroTier One/AuthtokenCopy.m | |
| parent | 51e74f8d4f200a7e3be9a6ac4bef8486f83a5d5d (diff) | |
| download | infinitytier-975bcb8affa7fbd7ca534dac9ec8d642e6c977f7.tar.gz infinitytier-975bcb8affa7fbd7ca534dac9ec8d642e6c977f7.zip | |
some OS X Authentication Services wizardry to get /Library/Application Support/ZeroTier/One/authtoken.secret and copy it to ~/Library/Application Support/ZeroTier/One/authtoken.secret
Diffstat (limited to 'ZeroTier One/AuthtokenCopy.m')
| -rw-r--r-- | ZeroTier One/AuthtokenCopy.m | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/ZeroTier One/AuthtokenCopy.m b/ZeroTier One/AuthtokenCopy.m new file mode 100644 index 00000000..893d90cf --- /dev/null +++ b/ZeroTier One/AuthtokenCopy.m @@ -0,0 +1,87 @@ +// +// AuthtokenCopy.m +// ZeroTier One +// +// Created by Grant Limberg on 5/31/16. +// Copyright © 2016 ZeroTier, Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> + +#import "AuthtokenCopy.h" + + +NSString* getAdminAuthToken(AuthorizationRef authRef) { + char *tool = "/bin/cat"; + char *args[] = { "/Library/Application Support/ZeroTier/One/authtoken.secret", NULL}; + FILE *pipe = nil; + char token[25]; + memset(token, 0, sizeof(char)*25); + + + OSStatus status = AuthorizationExecuteWithPrivileges(authRef, tool, kAuthorizationFlagDefaults, args, &pipe); + + if (status != errAuthorizationSuccess) { + NSLog(@"Reading authtoken failed!"); + + + switch(status) { + case errAuthorizationDenied: + NSLog(@"Autorization Denied"); + break; + case errAuthorizationCanceled: + NSLog(@"Authorization Canceled"); + break; + case errAuthorizationInternal: + NSLog(@"Authorization Internal"); + break; + case errAuthorizationBadAddress: + NSLog(@"Bad Address"); + break; + case errAuthorizationInvalidRef: + NSLog(@"Invalid Ref"); + break; + case errAuthorizationInvalidSet: + NSLog(@"Invalid Set"); + break; + case errAuthorizationInvalidTag: + NSLog(@"Invalid Tag"); + break; + case errAuthorizationInvalidFlags: + NSLog(@"Invalid Flags"); + break; + case errAuthorizationInvalidPointer: + NSLog(@"Invalid Pointer"); + break; + case errAuthorizationToolExecuteFailure: + NSLog(@"Tool Execute Failure"); + break; + case errAuthorizationToolEnvironmentError: + NSLog(@"Tool Environment Failure"); + break; + case errAuthorizationExternalizeNotAllowed: + NSLog(@"Externalize Not Allowed"); + break; + case errAuthorizationInteractionNotAllowed: + NSLog(@"Interaction Not Allowed"); + break; + case errAuthorizationInternalizeNotAllowed: + NSLog(@"Internalize Not Allowed"); + break; + default: + NSLog(@"Unknown Error"); + break; + } + + return @""; + } + + if(pipe != nil) { + fread(&token, sizeof(char), 24, pipe); + fclose(pipe); + + return [NSString stringWithUTF8String:token]; + } + + return @""; +}
\ No newline at end of file |
