summaryrefslogtreecommitdiff
path: root/ZeroTier One
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2016-08-07 18:19:47 -0700
committerGrant Limberg <glimberg@gmail.com>2016-08-07 18:19:47 -0700
commitd965768004d49793f3423714df8063a288fe1346 (patch)
tree39bcdc19af74cb5e487c753bf5fc15f72b9d7e77 /ZeroTier One
parenta91187e60ef1f022b9ed19f85d0650e000de3c7b (diff)
downloadinfinitytier-d965768004d49793f3423714df8063a288fe1346.tar.gz
infinitytier-d965768004d49793f3423714df8063a288fe1346.zip
Replaced the network list with Obj-C
Diffstat (limited to 'ZeroTier One')
-rw-r--r--ZeroTier One/AppDelegate.swift4
-rw-r--r--ZeroTier One/NetworkInfoCell.h40
-rw-r--r--ZeroTier One/NetworkInfoCell.m56
-rw-r--r--ZeroTier One/NetworkInfoCell.swift72
-rw-r--r--ZeroTier One/ShowNetworksViewController.h26
-rw-r--r--ZeroTier One/ShowNetworksViewController.m108
-rw-r--r--ZeroTier One/ShowNetworksViewController.swift132
-rw-r--r--ZeroTier One/ShowNetworksViewController.xib2
-rw-r--r--ZeroTier One/ZeroTier One-Bridging-Header.h2
9 files changed, 235 insertions, 207 deletions
diff --git a/ZeroTier One/AppDelegate.swift b/ZeroTier One/AppDelegate.swift
index f70cfcb3..400b67bf 100644
--- a/ZeroTier One/AppDelegate.swift
+++ b/ZeroTier One/AppDelegate.swift
@@ -42,8 +42,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
let nc = NSNotificationCenter.defaultCenter()
- nc.addObserver(self, selector: #selector(onNetworkListUpdated(_:)), name: networkUpdateKey, object: nil)
- nc.addObserver(self, selector: #selector(onNodeStatusUpdated(_:)), name: statusUpdateKey, object: nil)
+ nc.addObserver(self, selector: #selector(onNetworkListUpdated(_:)), name: NetworkUpdateKey, object: nil)
+ nc.addObserver(self, selector: #selector(onNodeStatusUpdated(_:)), name: StatusUpdateKey, object: nil)
statusItem.image = NSImage(named: "MenuBarIconMac")
diff --git a/ZeroTier One/NetworkInfoCell.h b/ZeroTier One/NetworkInfoCell.h
new file mode 100644
index 00000000..b687bc4f
--- /dev/null
+++ b/ZeroTier One/NetworkInfoCell.h
@@ -0,0 +1,40 @@
+//
+// NetworkInfoCell.h
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@class ShowNetworksViewController;
+
+@interface NetworkInfoCell : NSTableCellView
+
+@property (weak, nonatomic) ShowNetworksViewController *parent;
+
+@property (weak, nonatomic) IBOutlet NSTextField *networkIdField;
+@property (weak, nonatomic) IBOutlet NSTextField *networkNameField;
+@property (weak, nonatomic) IBOutlet NSTextField *statusField;
+@property (weak, nonatomic) IBOutlet NSTextField *typeField;
+@property (weak, nonatomic) IBOutlet NSTextField *macField;
+@property (weak, nonatomic) IBOutlet NSTextField *mtuField;
+@property (weak, nonatomic) IBOutlet NSTextField *broadcastField;
+@property (weak, nonatomic) IBOutlet NSTextField *bridgingField;
+@property (weak, nonatomic) IBOutlet NSTextField *deviceField;
+@property (weak, nonatomic) IBOutlet NSTextField *addressesField;
+@property (weak, nonatomic) IBOutlet NSButton *allowManaged;
+@property (weak, nonatomic) IBOutlet NSButton *allowGlobal;
+@property (weak, nonatomic) IBOutlet NSButton *allowDefault;
+@property (weak, nonatomic) IBOutlet NSButton *connectedCheckbox;
+@property (weak, nonatomic) IBOutlet NSButton *deleteButton;
+
+- (IBAction)onConnectCheckStateChanged:(NSButton*)sender;
+- (IBAction)deleteNetwork:(NSButton*)sender;
+- (IBAction)onAllowStatusChanged:(NSButton*)sender;
+
+- (void)joinNetwork:(NSString*)nwid;
+- (void)leaveNetwork:(NSString*)nwid;
+
+@end
diff --git a/ZeroTier One/NetworkInfoCell.m b/ZeroTier One/NetworkInfoCell.m
new file mode 100644
index 00000000..606bb849
--- /dev/null
+++ b/ZeroTier One/NetworkInfoCell.m
@@ -0,0 +1,56 @@
+//
+// NetworkInfoCell.m
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import "NetworkInfoCell.h"
+#import "ServiceCom.h"
+#import "ShowNetworksViewController.h"
+#import "Network.h"
+
+@implementation NetworkInfoCell
+
+- (void)drawRect:(NSRect)dirtyRect {
+ [super drawRect:dirtyRect];
+
+ // Drawing code here.
+}
+
+- (IBAction)onConnectCheckStateChanged:(NSButton*)sender
+{
+ if(sender.state == NSOnState) {
+ [self joinNetwork:self.networkIdField.stringValue];
+ }
+ else {
+ [self leaveNetwork:self.networkIdField.stringValue];
+ }
+}
+
+- (IBAction)deleteNetwork:(NSButton*)sender;
+{
+ [self leaveNetwork:self.networkIdField.stringValue];
+ [self.parent deleteNetworkFromList:self.networkIdField.stringValue];
+}
+
+- (IBAction)onAllowStatusChanged:(NSButton*)sender
+{
+ [self joinNetwork:self.networkIdField.stringValue];
+}
+
+- (void)joinNetwork:(NSString*)nwid
+{
+ [[ServiceCom sharedInstance] joinNetwork:nwid
+ allowManaged:(self.allowManaged.state == NSOnState)
+ allowGlobal:(self.allowGlobal.state == NSOnState)
+ allowDefault:![Network defaultRouteExists:_parent.networkList] && (self.allowDefault.state == NSOnState)];
+}
+
+- (void)leaveNetwork:(NSString*)nwid
+{
+ [[ServiceCom sharedInstance] leaveNetwork:nwid];
+}
+
+@end
diff --git a/ZeroTier One/NetworkInfoCell.swift b/ZeroTier One/NetworkInfoCell.swift
deleted file mode 100644
index 8c9c5459..00000000
--- a/ZeroTier One/NetworkInfoCell.swift
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// NetworkInfoCell.swift
-// ZeroTier One
-//
-// Created by Grant Limberg on 5/24/16.
-// Copyright © 2016 ZeroTier, Inc. All rights reserved.
-//
-
-import Cocoa
-
-class NetworkInfoCell: NSTableCellView {
-
- weak var parent: ShowNetworksViewController!
-
- @IBOutlet var networkIdField: NSTextField!
- @IBOutlet var networkNameField: NSTextField!
-
- @IBOutlet var statusField: NSTextField!
- @IBOutlet var typeField: NSTextField!
- @IBOutlet var macField: NSTextField!
- @IBOutlet var mtuField: NSTextField!
- @IBOutlet var broadcastField: NSTextField!
- @IBOutlet var bridgingField: NSTextField!
- @IBOutlet var deviceField: NSTextField!
- @IBOutlet var addressesField: NSTextField!
-
- @IBOutlet var allowManaged: NSButton!
- @IBOutlet var allowGlobal: NSButton!
- @IBOutlet var allowDefault: NSButton!
-
- @IBOutlet var connectedCheckbox: NSButton!
- @IBOutlet var deleteButton: NSButton!
-
- override func awakeFromNib() {
- super.awakeFromNib()
-
- }
- override func drawRect(dirtyRect: NSRect) {
- super.drawRect(dirtyRect)
-
- // Drawing code here.
- }
-
- @IBAction func onConnectCheckStateChanged(sender: NSButton) {
- if(sender.state == NSOnState) {
- joinNetwork(networkIdField.stringValue)
- }
- else {
- leaveNetwork(networkIdField.stringValue)
- }
- }
-
- @IBAction func deleteNetwork(sender: NSButton) {
- leaveNetwork(networkIdField.stringValue)
- parent.deleteNetworkFromList(networkIdField.stringValue)
- }
-
- func joinNetwork(nwid: String) {
- ServiceCom.sharedInstance().joinNetwork(nwid,
- allowManaged: allowManaged.state == NSOnState,
- allowGlobal: allowGlobal.state == NSOnState,
- allowDefault: !Network.defaultRouteExists(parent.networkList) && (allowDefault.state == NSOnState))
- }
-
- func leaveNetwork(nwid: String) {
- ServiceCom.sharedInstance().leaveNetwork(nwid)
- }
-
- @IBAction func onAllowStatusChanged(sender: NSButton) {
- joinNetwork(networkIdField.stringValue)
- }
-}
diff --git a/ZeroTier One/ShowNetworksViewController.h b/ZeroTier One/ShowNetworksViewController.h
new file mode 100644
index 00000000..5722d3f4
--- /dev/null
+++ b/ZeroTier One/ShowNetworksViewController.h
@@ -0,0 +1,26 @@
+//
+// ShowNetworksViewController.h
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@class NetworkMonitor;
+@class Network;
+
+@interface ShowNetworksViewController : NSViewController<NSTableViewDelegate, NSTableViewDataSource>
+
+@property (nonatomic) NSArray<Network*> *networkList;
+@property (nonatomic) NetworkMonitor *netMonitor;
+@property (nonatomic) BOOL visible;
+
+@property (weak, nonatomic) IBOutlet NSTableView *tableView;
+
+- (void)deleteNetworkFromList:(NSString*)nwid;
+- (void)setNetworks:(NSArray<Network*>*)list;
+
+
+@end
diff --git a/ZeroTier One/ShowNetworksViewController.m b/ZeroTier One/ShowNetworksViewController.m
new file mode 100644
index 00000000..2031af34
--- /dev/null
+++ b/ZeroTier One/ShowNetworksViewController.m
@@ -0,0 +1,108 @@
+//
+// ShowNetworksViewController.m
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import "ShowNetworksViewController.h"
+#import "NetworkMonitor.h"
+#import "NetworkInfoCell.h"
+#import "Network.h"
+
+@interface ShowNetworksViewController ()
+
+@end
+
+@implementation ShowNetworksViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ [self.tableView setDelegate:self];
+ [self.tableView setDataSource:self];
+ [self.tableView setBackgroundColor:[NSColor clearColor]];
+}
+
+- (void)viewWillAppear {
+ [super viewWillAppear];
+ self.visible = YES;
+}
+
+- (void)viewWillDisappear {
+ [super viewWillDisappear];
+ self.visible = NO;
+}
+
+- (void)deleteNetworkFromList:(NSString *)nwid {
+ [self.netMonitor deleteSavedNetwork:nwid];
+}
+
+- (void)setNetworks:(NSArray<Network *> *)list {
+ _networkList = list;
+ if(_visible) {
+ [_tableView reloadData];
+ }
+}
+
+- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
+ return [_networkList count];
+}
+
+- (NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
+{
+ NetworkInfoCell *cell = (NetworkInfoCell*)[tableView makeViewWithIdentifier:@"NetworkInfoCell"
+ owner:nil];
+ Network *network = [_networkList objectAtIndex:row];
+ cell.parent = self;
+ cell.networkIdField.stringValue = [NSString stringWithFormat:@"%10llx", network.nwid];
+ cell.networkNameField.stringValue = network.name;
+ cell.statusField.stringValue = [network statusString];
+ cell.typeField.stringValue = [network typeString];
+ cell.mtuField.stringValue = [NSString stringWithFormat:@"%d", network.mtu];
+ cell.macField.stringValue = network.mac;
+ cell.broadcastField.stringValue = network.broadcastEnabled ? @"ENABLED" : @"DISABLED";
+ cell.bridgingField.stringValue = network.bridge ? @"ENABLED" : @"DISABLED";
+ cell.deviceField.stringValue = network.portDeviceName;
+
+ if(network.connected) {
+ cell.connectedCheckbox.state = NSOnState;
+
+ if(network.allowDefault) {
+ cell.allowDefault.enabled = YES;
+ cell.allowDefault.state = NSOnState;
+ }
+ else {
+ cell.allowDefault.state = NSOffState;
+
+ if([Network defaultRouteExists:_networkList]) {
+ cell.allowDefault.enabled = NO;
+ }
+ else {
+ cell.allowDefault.enabled = YES;
+ }
+ }
+
+ cell.allowGlobal.enabled = YES;
+ cell.allowManaged.enabled = YES;
+ }
+ else {
+ cell.allowDefault.enabled = NO;
+ cell.allowGlobal.enabled = NO;
+ cell.allowManaged.enabled = NO;
+ }
+
+ cell.allowGlobal.state = network.allowGlobal ? NSOnState : NSOffState;
+ cell.allowManaged.state = network.allowManaged ? NSOnState : NSOffState;
+
+ cell.addressesField.stringValue = @"";
+
+ for(NSString *addr in network.assignedAddresses) {
+ cell.addressesField.stringValue = [[cell.addressesField.stringValue stringByAppendingString:addr] stringByAppendingString:@"\n"];
+ }
+
+ return cell;
+}
+
+@end
diff --git a/ZeroTier One/ShowNetworksViewController.swift b/ZeroTier One/ShowNetworksViewController.swift
deleted file mode 100644
index 82d3359c..00000000
--- a/ZeroTier One/ShowNetworksViewController.swift
+++ /dev/null
@@ -1,132 +0,0 @@
-//
-// ShowNetworksViewController.swift
-// ZeroTier One
-//
-// Created by Grant Limberg on 5/14/16.
-// Copyright © 2016 ZeroTier, Inc. All rights reserved.
-//
-
-import Cocoa
-
-class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {
-
- @IBOutlet var tableView: NSTableView?
-
- var networkList: [Network] = [Network]()
- var netMonitor: NetworkMonitor!
-
- var visible = false
-
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do view setup here.
-
- tableView?.setDelegate(self)
- tableView?.setDataSource(self)
- tableView?.backgroundColor = NSColor.clearColor()
- }
-
- private func dataFile() -> String {
- var appSupport = NSFileManager.defaultManager().URLsForDirectory(.ApplicationSupportDirectory, inDomains: .UserDomainMask)[0]
- appSupport = appSupport.URLByAppendingPathComponent("ZeroTier").URLByAppendingPathComponent("One").URLByAppendingPathComponent("networks.dat")
- return appSupport.path!
- }
-
- override func viewWillAppear() {
- super.viewWillAppear()
- visible = true
- }
-
- override func viewWillDisappear() {
- super.viewWillDisappear()
-
- let filePath = dataFile()
- NSKeyedArchiver.archiveRootObject(self.networkList, toFile: filePath)
- visible = false
- }
-
- func deleteNetworkFromList(nwid: String) {
- netMonitor.deleteSavedNetwork(nwid)
- }
-
-
- func setNetworks(list: [Network]) {
- networkList = list
- if visible {
- tableView?.reloadData()
- }
- }
-
- // NSTableViewDataSource
-
- func numberOfRowsInTableView(tableView: NSTableView) -> Int {
- return networkList.count
- }
-
- // end NSTableViewDataSource
-
- // NSTableViewDelegate
-
- func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
- if let cell = tableView.makeViewWithIdentifier("NetworkInfoCell", owner: nil) as? NetworkInfoCell {
- let network = networkList[row]
- cell.parent = self
- cell.networkIdField.stringValue = String(network.nwid, radix: 16)
- cell.networkNameField.stringValue = network.name
-
- cell.statusField.stringValue = network.statusString()
- cell.typeField.stringValue = network.typeString()
- cell.macField.stringValue = network.mac
- cell.mtuField.stringValue = String(network.mtu)
- cell.broadcastField.stringValue = network.broadcastEnabled ? "ENABLED" : "DISABLED"
- cell.bridgingField.stringValue = network.bridge ? "ENABLED" : "DISABLED"
- cell.deviceField.stringValue = network.portDeviceName
-
- if network.connected {
- cell.connectedCheckbox.state = NSOnState
-
- if network.allowDefault {
- cell.allowDefault.enabled = true
- cell.allowDefault.state = NSOnState
- }
- else {
- cell.allowDefault.state = NSOffState
-
- if Network.defaultRouteExists(networkList) {
- cell.allowDefault.enabled = false
- }
- else {
- 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
- }
-
- cell.allowGlobal.state = (network.allowGlobal ? NSOnState : NSOffState)
- cell.allowManaged.state = (network.allowManaged ? NSOnState : NSOffState)
-
- cell.addressesField.stringValue = ""
-
- for nw in network.assignedAddresses {
- cell.addressesField.stringValue += "\(nw)\n"
- }
-
-
-
- return cell
- }
-
- return nil
- }
-
- // end NSTableViewDelegate
-}
diff --git a/ZeroTier One/ShowNetworksViewController.xib b/ZeroTier One/ShowNetworksViewController.xib
index 6a5d7ae3..65692307 100644
--- a/ZeroTier One/ShowNetworksViewController.xib
+++ b/ZeroTier One/ShowNetworksViewController.xib
@@ -43,7 +43,7 @@
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
- <tableCellView identifier="NetworkInfoCell" focusRingType="none" id="rmb-il-W5I" customClass="NetworkInfoCell" customModule="ZeroTier_One" customModuleProvider="target">
+ <tableCellView identifier="NetworkInfoCell" focusRingType="none" id="rmb-il-W5I" customClass="NetworkInfoCell">
<rect key="frame" x="1" y="1" width="527" height="367"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
diff --git a/ZeroTier One/ZeroTier One-Bridging-Header.h b/ZeroTier One/ZeroTier One-Bridging-Header.h
index 0ce854bc..07da0d00 100644
--- a/ZeroTier One/ZeroTier One-Bridging-Header.h
+++ b/ZeroTier One/ZeroTier One-Bridging-Header.h
@@ -9,3 +9,5 @@
#import "AboutViewController.h"
#import "PreferencesViewController.h"
#import "NetworkMonitor.h"
+#import "NetworkInfoCell.h"
+#import "ShowNetworksViewController.h"