summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ZeroTier One/ServiceCom.swift53
1 files changed, 49 insertions, 4 deletions
diff --git a/ZeroTier One/ServiceCom.swift b/ZeroTier One/ServiceCom.swift
index bdb59792..28957265 100644
--- a/ZeroTier One/ServiceCom.swift
+++ b/ZeroTier One/ServiceCom.swift
@@ -10,11 +10,56 @@ import Cocoa
class ServiceCom: NSObject {
static let baseURL = "http://localhost:9993"
- static var key: NSString? = "ddeb3b1e6996b6b4f2d12d10"
+
+ private static func getKey() -> String {
+ struct Holder {
+ static var key: String? = nil
+ }
+
+ if Holder.key == nil {
+ do {
+ // Check the user's ZeroTier application support directory. If
+ // authtoken.secret exists, use it.
+
+ var appSupportDir = try NSFileManager.defaultManager().URLForDirectory(.ApplicationSupportDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
+ NSLog("\(appSupportDir)")
+
+
+ appSupportDir = appSupportDir.URLByAppendingPathComponent("ZeroTier")
+ NSLog("\(appSupportDir)")
+
+ appSupportDir = appSupportDir.URLByAppendingPathComponent("One")
+ NSLog("\(appSupportDir)")
+
+ let authtokenURL = appSupportDir.URLByAppendingPathComponent("authtoken.secret")
+
+ NSLog("\(authtokenURL)")
+
+ if NSFileManager.defaultManager().fileExistsAtPath(authtokenURL.path!) {
+ Holder.key = try String(contentsOfURL: authtokenURL)
+ }
+ else {
+ // TODO: Elevate priviledge to copy /Library/Application Support/ZeroTier/One/authtoken.secret to the user's local AppSupport directory
+ }
+ }
+ catch {
+ NSLog("Error getting app support dir: \(error)")
+ Holder.key = nil
+ }
+
+ }
+
+ if let k = Holder.key {
+ return k
+ }
+ else {
+ return ""
+ }
+ }
static func getNetworkList(completionHandler: ([Network]) -> Void) {
- let urlString = baseURL + "/network?auth=\(ServiceCom.key!)"
+ let urlString = baseURL + "/network?auth=\(ServiceCom.getKey())"
let url = NSURL(string: urlString)
@@ -50,7 +95,7 @@ class ServiceCom: NSObject {
static func joinNetwork(network: String) {
- let urlString = baseURL + "/network/\(network)?auth=\(ServiceCom.key!)"
+ let urlString = baseURL + "/network/\(network)?auth=\(ServiceCom.getKey())"
let url = NSURL(string: urlString)
if let u = url {
@@ -75,7 +120,7 @@ class ServiceCom: NSObject {
}
static func leaveNetwork(network: String) {
- let urlString = baseURL + "/network/\(network)?auth=\(ServiceCom.key!)"
+ let urlString = baseURL + "/network/\(network)?auth=\(ServiceCom.getKey())"
let url = NSURL(string: urlString)
if let u = url {