diff --git a/ZeroTier One/JoinNetworkViewController.swift b/ZeroTier One/JoinNetworkViewController.swift index 92e30cae1..cef30d4ee 100644 --- a/ZeroTier One/JoinNetworkViewController.swift +++ b/ZeroTier One/JoinNetworkViewController.swift @@ -30,6 +30,10 @@ class JoinNetworkViewController: NSViewController, NSComboBoxDelegate, NSComboBo @IBOutlet var network: NSComboBox! @IBOutlet var joinButton: NSButton! + @IBOutlet var allowManagedCheckBox: NSButton! + @IBOutlet var allowGlobalCheckBox: NSButton! + @IBOutlet var allowDefaultCheckBox:NSButton! + var values: [String] = [String]() override func viewDidLoad() { @@ -61,8 +65,10 @@ class JoinNetworkViewController: NSViewController, NSComboBoxDelegate, NSComboBo @IBAction func onJoinClicked(sender: AnyObject?) { let networkString = network.stringValue - ServiceCom.joinNetwork(networkString) - + ServiceCom.joinNetwork(networkString, + allowManaged: allowManagedCheckBox.state == NSOnState, + allowGlobal: allowGlobalCheckBox.state == NSOnState, + allowDefault: allowDefaultCheckBox.state == NSOnState) network.stringValue = "" diff --git a/ZeroTier One/JoinNetworkViewController.xib b/ZeroTier One/JoinNetworkViewController.xib index 625f1a3e1..187af0088 100644 --- a/ZeroTier One/JoinNetworkViewController.xib +++ b/ZeroTier One/JoinNetworkViewController.xib @@ -6,6 +6,9 @@ + + + @@ -14,11 +17,11 @@ - + - + @@ -26,7 +29,7 @@ - + + + + - + diff --git a/ZeroTier One/ServiceCom.swift b/ZeroTier One/ServiceCom.swift index 23c194c27..4c920ad22 100644 --- a/ZeroTier One/ServiceCom.swift +++ b/ZeroTier One/ServiceCom.swift @@ -119,29 +119,44 @@ class ServiceCom: NSObject { } - static func joinNetwork(network: String) { + static func joinNetwork(network: String, allowManaged: Bool = true, allowGlobal: Bool = false, allowDefault: Bool = false) { let urlString = baseURL + "/network/\(network)?auth=\(ServiceCom.getKey())" let url = NSURL(string: urlString) - if let u = url { - let request = NSMutableURLRequest(URL: u) - request.HTTPMethod = "POST" + var jsonDict = [String: AnyObject]() + jsonDict["allowManaged"] = NSNumber(bool: allowManaged) + jsonDict["allowGlobal"] = NSNumber(bool: allowGlobal) + jsonDict["allowDefault"] = NSNumber(bool: allowDefault) - let session = NSURLSession.sharedSession() - let task = session.dataTaskWithRequest(request) { (data, response, error) in - let httpResponse = response as! NSHTTPURLResponse - let status = httpResponse.statusCode + do { + let json = try NSJSONSerialization.dataWithJSONObject(jsonDict, options: NSJSONWritingOptions()) - if status == 200 { - NSLog("join ok") - } - else { - NSLog("join error: \(status)") + if let u = url { + let request = NSMutableURLRequest(URL: u) + request.HTTPMethod = "POST" + request.HTTPBody = json + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + + let session = NSURLSession.sharedSession() + let task = session.dataTaskWithRequest(request) { (data, response, error) in + let httpResponse = response as! NSHTTPURLResponse + let status = httpResponse.statusCode + + if status == 200 { + NSLog("join ok") + } + else { + NSLog("join error: \(status)") + } } + + task.resume() } - - task.resume() } + catch { + NSLog("\(error)") + } + } static func leaveNetwork(network: String) {