summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2016-06-26 18:18:59 -0700
committerGrant Limberg <glimberg@gmail.com>2016-06-26 18:18:59 -0700
commit3fc11e2278a5e88ebc4ec3150fda050959e0c446 (patch)
tree25311fb795d53635d0b06d1d14c7fb30c723ca97
parent1756e8b0f2bb5a322f38f5e0e079d27cfcfecd57 (diff)
downloadinfinitytier-3fc11e2278a5e88ebc4ec3150fda050959e0c446.tar.gz
infinitytier-3fc11e2278a5e88ebc4ec3150fda050959e0c446.zip
misc bug fixes related to default routes
-rw-r--r--ZeroTier One/AppDelegate.swift3
-rw-r--r--ZeroTier One/JoinNetworkViewController.swift4
-rw-r--r--ZeroTier One/JoinNetworkViewController.xib2
-rw-r--r--ZeroTier One/Network.swift2
-rw-r--r--ZeroTier One/NetworkMonitor.swift43
-rw-r--r--ZeroTier One/ShowNetworksViewController.swift28
6 files changed, 53 insertions, 29 deletions
diff --git a/ZeroTier One/AppDelegate.swift b/ZeroTier One/AppDelegate.swift
index e52b7be5..25c11229 100644
--- a/ZeroTier One/AppDelegate.swift
+++ b/ZeroTier One/AppDelegate.swift
@@ -164,6 +164,9 @@ class AppDelegate: NSObject, NSApplicationDelegate {
networkName = "\(id) (\(net.name))"
}
+ if net.allowDefault && net.connected {
+ networkName += " [default]"
+ }
let item = NSMenuItem(title: networkName, action: #selector(AppDelegate.toggleNetwork(_:)), keyEquivalent: "")
if net.connected {
diff --git a/ZeroTier One/JoinNetworkViewController.swift b/ZeroTier One/JoinNetworkViewController.swift
index cef30d4e..ecab8f6c 100644
--- a/ZeroTier One/JoinNetworkViewController.swift
+++ b/ZeroTier One/JoinNetworkViewController.swift
@@ -45,6 +45,10 @@ class JoinNetworkViewController: NSViewController, NSComboBoxDelegate, NSComboBo
override func viewWillAppear() {
super.viewWillAppear()
+ allowManagedCheckBox.state = NSOnState
+ allowGlobalCheckBox.state = NSOffState
+ allowDefaultCheckBox.state = NSOffState
+
let defaults = NSUserDefaults.standardUserDefaults()
let vals = defaults.stringArrayForKey(joinedNetworksKey)
diff --git a/ZeroTier One/JoinNetworkViewController.xib b/ZeroTier One/JoinNetworkViewController.xib
index 187af008..338d35ee 100644
--- a/ZeroTier One/JoinNetworkViewController.xib
+++ b/ZeroTier One/JoinNetworkViewController.xib
@@ -62,7 +62,7 @@
</button>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rz3-0a-oNA">
<rect key="frame" x="238" y="59" width="141" height="18"/>
- <buttonCell key="cell" type="check" title="Allow Default Route" alternateTitle="Allow override of default route ‘full tunnel'" bezelStyle="regularSquare" imagePosition="left" inset="2" id="Lkd-XI-Kcu">
+ <buttonCell key="cell" type="check" title="Allow Default Route" bezelStyle="regularSquare" imagePosition="left" inset="2" id="Lkd-XI-Kcu">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
diff --git a/ZeroTier One/Network.swift b/ZeroTier One/Network.swift
index b344b6c2..b5f6b423 100644
--- a/ZeroTier One/Network.swift
+++ b/ZeroTier One/Network.swift
@@ -263,7 +263,7 @@ class Network: NSObject, NSCoding {
func defaultRouteExists(netList: [Network]) -> Bool {
for net in netList {
- if net.allowDefault {
+ if net.allowDefault && net.connected {
return true
}
}
diff --git a/ZeroTier One/NetworkMonitor.swift b/ZeroTier One/NetworkMonitor.swift
index 124fce26..a653f980 100644
--- a/ZeroTier One/NetworkMonitor.swift
+++ b/ZeroTier One/NetworkMonitor.swift
@@ -70,29 +70,33 @@ class NetworkMonitor: NSObject {
var networks = self.savedNetworks
for nw in receivedNetworks {
- let index = findNetworkWithID(nw.nwid)
+ let index = findSavedNetworkWithID(nw.nwid)
if index != NSNotFound {
networks[index] = nw
}
- networks.sortInPlace({ (left, right) -> Bool in
- if left.nwid < right.nwid {
- return true
- }
+ else {
+ networks.append(nw)
+ }
+ }
+
+ networks.sortInPlace({ (left, right) -> Bool in
+ if left.nwid < right.nwid {
+ return true
+ }
- return false
- })
+ return false
+ })
- objc_sync_enter(allNetworks)
- allNetworks = networks
- objc_sync_exit(allNetworks)
+ objc_sync_enter(allNetworks)
+ allNetworks = networks
+ objc_sync_exit(allNetworks)
- saveNetworks()
+ saveNetworks()
- let nc = NSNotificationCenter.defaultCenter()
+ let nc = NSNotificationCenter.defaultCenter()
- nc.postNotificationName(networkUpdateKey, object: nil, userInfo: ["networks": networks])
- }
+ nc.postNotificationName(networkUpdateKey, object: nil, userInfo: ["networks": networks])
}
private func findNetworkWithID(nwid: UInt64) -> Int {
@@ -106,6 +110,17 @@ class NetworkMonitor: NSObject {
return NSNotFound
}
+ private func findSavedNetworkWithID(nwid: UInt64) -> Int {
+ for (index, element) in savedNetworks.enumerate() {
+
+ if element.nwid == nwid {
+ return index
+ }
+ }
+
+ return NSNotFound
+ }
+
private func saveNetworks() {
let file = dataFile()
diff --git a/ZeroTier One/ShowNetworksViewController.swift b/ZeroTier One/ShowNetworksViewController.swift
index e2bdd105..0361f6dc 100644
--- a/ZeroTier One/ShowNetworksViewController.swift
+++ b/ZeroTier One/ShowNetworksViewController.swift
@@ -76,6 +76,21 @@ class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTable
cell.bridgingField.stringValue = network.bridge ? "ENABLED" : "DISABLED"
cell.deviceField.stringValue = network.portDeviceName
+ if network.connected {
+ cell.connectedCheckbox.state = NSOnState
+
+ cell.allowDefault.enabled = true
+ cell.allowGlobal.enabled = true
+ cell.allowManaged.enabled = true
+ }
+ else {
+ cell.connectedCheckbox.state = NSOffState
+
+ cell.allowDefault.enabled = false
+ cell.allowGlobal.enabled = false
+ cell.allowManaged.enabled = false
+ }
+
if network.allowDefault {
cell.allowDefault.state = NSOnState
@@ -101,20 +116,7 @@ class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTable
cell.addressesField.stringValue += "\n"
}
- if network.connected {
- cell.connectedCheckbox.state = NSOnState
- cell.allowDefault.enabled = true
- cell.allowGlobal.enabled = true
- cell.allowManaged.enabled = true
- }
- else {
- cell.connectedCheckbox.state = NSOffState
-
- cell.allowDefault.enabled = false
- cell.allowGlobal.enabled = false
- cell.allowManaged.enabled = false
- }
return cell
}