summaryrefslogtreecommitdiff
path: root/ZeroTier One/AuthtokenCopy.m
diff options
context:
space:
mode:
authorGrant Limberg <grant.limberg@red.com>2016-05-31 17:19:22 -0700
committerGrant Limberg <grant.limberg@red.com>2016-05-31 17:23:11 -0700
commit975bcb8affa7fbd7ca534dac9ec8d642e6c977f7 (patch)
tree75f5f57d31302fddf2bc20d54bb6713fe08f873e /ZeroTier One/AuthtokenCopy.m
parent51e74f8d4f200a7e3be9a6ac4bef8486f83a5d5d (diff)
downloadinfinitytier-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.m87
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