diff options
Diffstat (limited to 'ZeroTier One/Network.swift')
| -rw-r--r-- | ZeroTier One/Network.swift | 279 |
1 files changed, 0 insertions, 279 deletions
diff --git a/ZeroTier One/Network.swift b/ZeroTier One/Network.swift deleted file mode 100644 index 45151686..00000000 --- a/ZeroTier One/Network.swift +++ /dev/null @@ -1,279 +0,0 @@ -// -// Network.swift -// ZeroTier One -// -// Created by Grant Limberg on 5/17/16. -// Copyright © 2016 ZeroTier, Inc. All rights reserved. -// - -import Cocoa - -enum NetworkStatus : Int, CustomStringConvertible { - case REQUESTING_CONFIGURATION - case OK - case ACCESS_DENIED - case NOT_FOUND - case PORT_ERROR - case CLIENT_TOO_OLD - - var description: String { - switch self { - case .REQUESTING_CONFIGURATION: return "REQUESTING_CONFIGURATION" - case .OK: return "OK" - case .ACCESS_DENIED: return "ACCESS_DENIED" - case .NOT_FOUND: return "NOT_FOUND" - case .PORT_ERROR: return "PORT_ERROR" - case .CLIENT_TOO_OLD: return "CLIENT_TOO_OLD" - } - } -} - -enum NetworkType: Int, CustomStringConvertible { - case PUBLIC - case PRIVATE - - var description: String { - switch self { - case .PUBLIC: return "PUBLIC" - case .PRIVATE: return "PRIVATE" - } - } -} - - -struct PropertyKeys { - static let addressesKey = "addresses" - static let bridgeKey = "bridge" - static let broadcastKey = "broadcast" - static let dhcpKey = "dhcp" - static let macKey = "mac" - static let mtuKey = "mtu" - static let multicastKey = "multicast" - static let nameKey = "name" - static let netconfKey = "netconf" - static let nwidKey = "nwid" - static let portNameKey = "port" - static let portErrorKey = "portError" - static let statusKey = "status" - static let typeKey = "type" - static let allowManagedKey = "allowManaged" - static let allowGlobalKey = "allowGlobal" - static let allowDefaultKey = "allowDefault" -} - -class Network: NSObject, NSCoding { - var assignedAddresses: [String] = [String]() - var bridge: Bool = false - var broadcastEnabled: Bool = false - var dhcp: Bool = false - var mac: String = "" - var mtu: Int = 0 - var name: String = "" - var netconfRevision: Int = 232 - var nwid: UInt64 = 0 - var portDeviceName: String = "" - var portError: Int = 0 - var status: NetworkStatus = .REQUESTING_CONFIGURATION - var type: NetworkType = .PRIVATE - var allowManaged: Bool = true - var allowGlobal: Bool = false - var allowDefault: Bool = false - var connected: Bool = false // NOT PERSISTED. Set to true if loaded via JSON - - init(jsonData: [String: AnyObject]) { - super.init() - - if let aa = jsonData["assignedAddresses"] as? [String] { - for a in aa { - assignedAddresses.append(a) - } - } - - if let b = jsonData["bridge"] as? NSNumber { - bridge = b.boolValue - } - - if let b = jsonData["broadcastEnabled"] as? NSNumber { - broadcastEnabled = b.boolValue - } - - if let d = jsonData["dhcp"] as? NSNumber { - dhcp = d.boolValue - } - - if let m = jsonData["mac"] as? String { - mac = m - } - - if let m = jsonData["mtu"] as? NSNumber { - mtu = m.integerValue - } - - if let n = jsonData["name"] as? String { - name = n - } - - if let n = jsonData["netconfRevision"] as? NSNumber { - netconfRevision = n.integerValue - } - - if let n = UInt64((jsonData["nwid"] as! String), radix: 16) { - nwid = n - } - - if let p = jsonData["portDeviceName"] as? String { - portDeviceName = p - } - - if let p = jsonData["portError"] as? NSNumber { - portError = p.integerValue - } - - if let a = jsonData["allowManaged"] as? NSNumber { - allowManaged = a.boolValue - } - - if let a = jsonData["allowGlobal"] as? NSNumber { - allowGlobal = a.boolValue - } - - if let a = jsonData["allowDefault"] as? NSNumber { - allowDefault = a.boolValue - } - - if let statusStr = jsonData["status"] as? String { - switch statusStr { - case "REQUESTING_CONFIGURATION": - status = .REQUESTING_CONFIGURATION - case "OK": - status = .OK - case "ACCESS_DENIED": - status = .ACCESS_DENIED - case "NOT_FOUND": - status = .NOT_FOUND - case "PORT_ERROR": - status = .PORT_ERROR - case "CLIENT_TOO_OLD": - status = .CLIENT_TOO_OLD - default: - break - } - } - - if let typeStr = jsonData["type"] as? String { - switch typeStr { - case "PRIVATE": - type = .PRIVATE - case "PUBLIC": - type = .PUBLIC - default: - break - } - } - - // if it's being initialized via JSON, it's connected - connected = true - } - - required init?(coder aDecoder: NSCoder) { - if aDecoder.containsValueForKey(PropertyKeys.addressesKey) { - let addrs = aDecoder.decodeObjectForKey(PropertyKeys.addressesKey) as! [String] - - for a in addrs { - self.assignedAddresses.append(a) - } - } - - if aDecoder.containsValueForKey(PropertyKeys.bridgeKey) { - self.bridge = aDecoder.decodeBoolForKey(PropertyKeys.bridgeKey) - } - - if aDecoder.containsValueForKey(PropertyKeys.broadcastKey) { - self.broadcastEnabled = aDecoder.decodeBoolForKey(PropertyKeys.broadcastKey) - } - - if aDecoder.containsValueForKey(PropertyKeys.dhcpKey) { - self.dhcp = aDecoder.decodeBoolForKey(PropertyKeys.dhcpKey) - } - - if aDecoder.containsValueForKey(PropertyKeys.macKey) { - let mac = aDecoder.decodeObjectForKey(PropertyKeys.macKey) as! String - self.mac = mac - } - - if aDecoder.containsValueForKey(PropertyKeys.mtuKey) { - self.mtu = aDecoder.decodeIntegerForKey(PropertyKeys.mtuKey) - } - - if aDecoder.containsValueForKey(PropertyKeys.nameKey) { - let name = aDecoder.decodeObjectForKey(PropertyKeys.nameKey) as! String - - self.name = name - } - - if aDecoder.containsValueForKey(PropertyKeys.netconfKey) { - self.netconfRevision = aDecoder.decodeIntegerForKey(PropertyKeys.netconfKey) - } - - if aDecoder.containsValueForKey(PropertyKeys.nwidKey) { - self.nwid = (aDecoder.decodeObjectForKey(PropertyKeys.nwidKey) as! NSNumber).unsignedLongLongValue - } - - if aDecoder.containsValueForKey(PropertyKeys.portNameKey) { - self.portDeviceName = aDecoder.decodeObjectForKey(PropertyKeys.portNameKey) as! String - } - - if aDecoder.containsValueForKey(PropertyKeys.portErrorKey) { - self.portError = aDecoder.decodeIntegerForKey(PropertyKeys.portErrorKey) - } - - if aDecoder.containsValueForKey(PropertyKeys.statusKey) { - self.status = NetworkStatus(rawValue: aDecoder.decodeIntegerForKey(PropertyKeys.statusKey))! - } - - if aDecoder.containsValueForKey(PropertyKeys.typeKey) { - self.type = NetworkType(rawValue: aDecoder.decodeIntegerForKey(PropertyKeys.typeKey))! - } - - if aDecoder.containsValueForKey(PropertyKeys.allowManagedKey) { - self.allowManaged = aDecoder.decodeBoolForKey(PropertyKeys.allowManagedKey) - } - - if aDecoder.containsValueForKey(PropertyKeys.allowGlobalKey) { - self.allowGlobal = aDecoder.decodeBoolForKey(PropertyKeys.allowGlobalKey) - } - - if aDecoder.containsValueForKey(PropertyKeys.allowDefaultKey) { - self.allowDefault = aDecoder.decodeBoolForKey(PropertyKeys.allowDefaultKey) - } - } - - func encodeWithCoder(aCoder: NSCoder) { - aCoder.encodeObject(self.assignedAddresses, forKey: PropertyKeys.addressesKey) - aCoder.encodeBool(self.bridge, forKey: PropertyKeys.bridgeKey) - aCoder.encodeBool(self.broadcastEnabled, forKey: PropertyKeys.broadcastKey) - aCoder.encodeBool(self.dhcp, forKey: PropertyKeys.dhcpKey) - aCoder.encodeObject(self.mac, forKey: PropertyKeys.macKey) - aCoder.encodeInteger(self.mtu, forKey: PropertyKeys.mtuKey) - aCoder.encodeObject(self.name, forKey: PropertyKeys.nameKey) - aCoder.encodeInteger(self.netconfRevision, forKey: PropertyKeys.netconfKey) - aCoder.encodeObject(NSNumber(unsignedLongLong: self.nwid), forKey: PropertyKeys.nwidKey) - aCoder.encodeObject(self.portDeviceName, forKey: PropertyKeys.portNameKey) - aCoder.encodeInteger(self.portError, forKey: PropertyKeys.portErrorKey) - aCoder.encodeInteger(self.status.rawValue, forKey: PropertyKeys.statusKey) - aCoder.encodeInteger(self.type.rawValue, forKey: PropertyKeys.typeKey) - aCoder.encodeBool(self.allowManaged, forKey: PropertyKeys.allowManagedKey) - aCoder.encodeBool(self.allowGlobal, forKey: PropertyKeys.allowGlobalKey) - aCoder.encodeBool(self.allowDefault, forKey: PropertyKeys.allowDefaultKey) - } -} - -func defaultRouteExists(netList: [Network]) -> Bool { - for net in netList { - if net.allowDefault && net.connected { - return true - } - } - - return false -} |
