aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard
diff options
context:
space:
mode:
authorJeroen Leenarts <jeroen.leenarts@gmail.com>2018-05-29 22:21:44 +0200
committerJeroen Leenarts <jeroen.leenarts@gmail.com>2018-05-29 22:21:44 +0200
commitdb7b24dd02dee992a2e937526836e4fd0b540a92 (patch)
tree4b4ca9bcd6b0693c7f9824f4d153abcc71b70be2 /WireGuard
parentWire up TunnelConfigurationTableViewController. (diff)
downloadwireguard-apple-db7b24dd02dee992a2e937526836e4fd0b540a92.tar.xz
wireguard-apple-db7b24dd02dee992a2e937526836e4fd0b540a92.zip
Allow adding unvalidated config.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'WireGuard')
-rw-r--r--WireGuard/Base.lproj/Main.storyboard30
-rw-r--r--WireGuard/Coordinators/AppCoordinator.swift10
-rw-r--r--WireGuard/Models/Interface+CoreDataProperties.swift1
-rw-r--r--WireGuard/Models/Tunnel+CoreDataProperties.swift24
-rw-r--r--WireGuard/Models/WireGuard.xcdatamodeld/WireGuard.xcdatamodel/contents7
-rw-r--r--WireGuard/ViewControllers/TunnelConfigurationTableViewController.swift65
6 files changed, 121 insertions, 16 deletions
diff --git a/WireGuard/Base.lproj/Main.storyboard b/WireGuard/Base.lproj/Main.storyboard
index 9c0b04f..56def8c 100644
--- a/WireGuard/Base.lproj/Main.storyboard
+++ b/WireGuard/Base.lproj/Main.storyboard
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
@@ -118,6 +118,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="06N-KU-LSv" eventType="editingChanged" id="Ike-ou-qa9"/>
<outlet property="delegate" destination="06N-KU-LSv" id="TuA-ac-TIy"/>
</connections>
</textField>
@@ -141,6 +142,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="06N-KU-LSv" eventType="editingChanged" id="CQd-My-M7G"/>
<outlet property="delegate" destination="06N-KU-LSv" id="7YF-mU-HZT"/>
</connections>
</textField>
@@ -167,6 +169,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="06N-KU-LSv" eventType="editingChanged" id="d2c-NL-e1I"/>
<outlet property="delegate" destination="06N-KU-LSv" id="apT-gO-mcr"/>
</connections>
</textField>
@@ -190,6 +193,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="06N-KU-LSv" eventType="editingChanged" id="Vtr-4A-l3g"/>
<outlet property="delegate" destination="06N-KU-LSv" id="CUZ-nd-ETQ"/>
</connections>
</textField>
@@ -210,6 +214,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="06N-KU-LSv" eventType="editingChanged" id="z45-u7-zCB"/>
<outlet property="delegate" destination="06N-KU-LSv" id="YZ0-LC-PjW"/>
</connections>
</textField>
@@ -235,6 +240,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="06N-KU-LSv" eventType="editingChanged" id="8gN-mk-GtN"/>
<outlet property="delegate" destination="06N-KU-LSv" id="YjV-8W-z5Q"/>
</connections>
</textField>
@@ -255,6 +261,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="06N-KU-LSv" eventType="editingChanged" id="fgZ-LJ-ksN"/>
<outlet property="delegate" destination="06N-KU-LSv" id="F1E-lK-AsD"/>
</connections>
</textField>
@@ -277,6 +284,15 @@
<constraint firstItem="DIe-hK-tf6" firstAttribute="leading" secondItem="CSX-Am-ix0" secondAttribute="leadingMargin" id="sab-5q-2rU"/>
</constraints>
</tableViewCellContentView>
+ <connections>
+ <outlet property="addressesField" destination="Oh8-qT-kJL" id="8aV-2T-PxV"/>
+ <outlet property="dnsField" destination="ByK-wW-6Q4" id="gZ4-7d-AHM"/>
+ <outlet property="listenPortField" destination="CSv-At-WVr" id="xnx-xz-pqS"/>
+ <outlet property="mtuField" destination="myM-B2-sjT" id="ppo-pV-tMl"/>
+ <outlet property="nameField" destination="6y9-eJ-8fF" id="PKk-lj-jK9"/>
+ <outlet property="privateKeyField" destination="hYd-0L-nnY" id="JLS-5M-E3T"/>
+ <outlet property="publicKeyField" destination="aXZ-aL-pFu" id="Vdo-km-hgS"/>
+ </connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AddPeerTableViewCell" rowHeight="60" id="RyR-s5-lBV" customClass="AddPeerTableViewCell" customModule="WireGuard" customModuleProvider="target">
<rect key="frame" x="0.0" y="396" width="375" height="60"/>
@@ -347,6 +363,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="gzz-88-0IG" eventType="editingChanged" id="taX-Ji-pVu"/>
<outlet property="delegate" destination="gzz-88-0IG" id="bkQ-Nc-VH4"/>
</connections>
</textField>
@@ -367,6 +384,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="gzz-88-0IG" eventType="editingChanged" id="XeB-bW-Zog"/>
<outlet property="delegate" destination="gzz-88-0IG" id="oAu-VZ-2dn"/>
</connections>
</textField>
@@ -387,6 +405,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="gzz-88-0IG" eventType="editingChanged" id="k1U-vW-Jom"/>
<outlet property="delegate" destination="gzz-88-0IG" id="DXo-0s-9sc"/>
</connections>
</textField>
@@ -410,6 +429,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="gzz-88-0IG" eventType="editingChanged" id="bjR-TZ-Sx8"/>
<outlet property="delegate" destination="gzz-88-0IG" id="PLB-sa-SBV"/>
</connections>
</textField>
@@ -430,6 +450,7 @@
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
+ <action selector="textfieldDidChange:" destination="gzz-88-0IG" eventType="editingChanged" id="fQC-Pf-jUQ"/>
<outlet property="delegate" destination="gzz-88-0IG" id="sbH-Sb-rcW"/>
</connections>
</textField>
@@ -450,6 +471,13 @@
<constraint firstAttribute="bottomMargin" secondItem="NIK-2J-pTR" secondAttribute="bottom" id="rRD-SV-Wft"/>
</constraints>
</tableViewCellContentView>
+ <connections>
+ <outlet property="allowedIpsField" destination="iiY-Tl-UcH" id="QQK-x0-C3T"/>
+ <outlet property="endpointField" destination="W88-H0-dFZ" id="l0A-57-I5p"/>
+ <outlet property="persistentKeepaliveField" destination="Q8w-jh-0ox" id="thE-f2-vzz"/>
+ <outlet property="preSharedKeyField" destination="wkY-3s-yTK" id="0Tn-cP-uXS"/>
+ <outlet property="publicKeyField" destination="RLw-0o-akQ" id="teS-po-0h2"/>
+ </connections>
</tableViewCell>
</prototypes>
<connections>
diff --git a/WireGuard/Coordinators/AppCoordinator.swift b/WireGuard/Coordinators/AppCoordinator.swift
index f6209a1..e916a8a 100644
--- a/WireGuard/Coordinators/AppCoordinator.swift
+++ b/WireGuard/Coordinators/AppCoordinator.swift
@@ -97,12 +97,10 @@ extension AppCoordinator: TunnelsTableViewControllerDelegate {
}
func configure(tunnel: Tunnel, tunnelsTableViewController: TunnelsTableViewController) {
- // TODO implement
print("configure tunnel \(tunnel)")
let editContext = persistentContainer.newBackgroundContext()
var backgroundTunnel: Tunnel?
editContext.performAndWait {
-
backgroundTunnel = editContext.object(with: tunnel.objectID) as? Tunnel
}
@@ -118,8 +116,14 @@ extension AppCoordinator: TunnelsTableViewControllerDelegate {
}
func delete(tunnel: Tunnel, tunnelsTableViewController: TunnelsTableViewController) {
- // TODO implement
print("delete tunnel \(tunnel)")
+
+ if let moc = tunnel.managedObjectContext {
+ moc.perform {
+ moc.delete(tunnel)
+ moc.saveContextToStore()
+ }
+ }
}
}
diff --git a/WireGuard/Models/Interface+CoreDataProperties.swift b/WireGuard/Models/Interface+CoreDataProperties.swift
index 2461514..5fef193 100644
--- a/WireGuard/Models/Interface+CoreDataProperties.swift
+++ b/WireGuard/Models/Interface+CoreDataProperties.swift
@@ -23,6 +23,7 @@ extension Interface {
@NSManaged public var dns: String?
@NSManaged public var table: String?
@NSManaged public var tunnel: Tunnel?
+ @NSManaged public var publicKey: String?
@NSManaged public var adresses: NSSet?
}
diff --git a/WireGuard/Models/Tunnel+CoreDataProperties.swift b/WireGuard/Models/Tunnel+CoreDataProperties.swift
index 2c7c741..c1a40eb 100644
--- a/WireGuard/Models/Tunnel+CoreDataProperties.swift
+++ b/WireGuard/Models/Tunnel+CoreDataProperties.swift
@@ -17,14 +17,32 @@ extension Tunnel {
}
@NSManaged public var title: String?
- @NSManaged public var peers: NSSet?
@NSManaged public var interface: Interface?
+ @NSManaged public var peers: NSOrderedSet?
}
// MARK: Generated accessors for peers
extension Tunnel {
+ @objc(insertObject:inPeersAtIndex:)
+ @NSManaged public func insertIntoPeers(_ value: Peer, at idx: Int)
+
+ @objc(removeObjectFromPeersAtIndex:)
+ @NSManaged public func removeFromPeers(at idx: Int)
+
+ @objc(insertPeers:atIndexes:)
+ @NSManaged public func insertIntoPeers(_ values: [Peer], at indexes: NSIndexSet)
+
+ @objc(removePeersAtIndexes:)
+ @NSManaged public func removeFromPeers(at indexes: NSIndexSet)
+
+ @objc(replaceObjectInPeersAtIndex:withObject:)
+ @NSManaged public func replacePeers(at idx: Int, with value: Peer)
+
+ @objc(replacePeersAtIndexes:withPeers:)
+ @NSManaged public func replacePeers(at indexes: NSIndexSet, with values: [Peer])
+
@objc(addPeersObject:)
@NSManaged public func addToPeers(_ value: Peer)
@@ -32,9 +50,9 @@ extension Tunnel {
@NSManaged public func removeFromPeers(_ value: Peer)
@objc(addPeers:)
- @NSManaged public func addToPeers(_ values: NSSet)
+ @NSManaged public func addToPeers(_ values: NSOrderedSet)
@objc(removePeers:)
- @NSManaged public func removeFromPeers(_ values: NSSet)
+ @NSManaged public func removeFromPeers(_ values: NSOrderedSet)
}
diff --git a/WireGuard/Models/WireGuard.xcdatamodeld/WireGuard.xcdatamodel/contents b/WireGuard/Models/WireGuard.xcdatamodeld/WireGuard.xcdatamodel/contents
index c8197f9..1af139b 100644
--- a/WireGuard/Models/WireGuard.xcdatamodeld/WireGuard.xcdatamodel/contents
+++ b/WireGuard/Models/WireGuard.xcdatamodeld/WireGuard.xcdatamodel/contents
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14133" systemVersion="17E202" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
+<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14135" systemVersion="17E202" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
<entity name="Address" representedClassName="Address" syncable="YES">
<attribute name="address" optional="YES" attributeType="String" syncable="YES"/>
<relationship name="interface" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Interface" inverseName="adresses" inverseEntity="Interface" syncable="YES"/>
@@ -10,6 +10,7 @@
<attribute name="listenPort" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="YES" syncable="YES"/>
<attribute name="mtu" optional="YES" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="YES" syncable="YES"/>
<attribute name="privateKey" attributeType="String" syncable="YES"/>
+ <attribute name="publicKey" attributeType="String" syncable="YES"/>
<attribute name="table" optional="YES" attributeType="String" syncable="YES"/>
<relationship name="adresses" toMany="YES" deletionRule="Cascade" destinationEntity="Address" inverseName="interface" inverseEntity="Address" syncable="YES"/>
<relationship name="tunnel" maxCount="1" deletionRule="Nullify" destinationEntity="Tunnel" inverseName="interface" inverseEntity="Tunnel" syncable="YES"/>
@@ -25,11 +26,11 @@
<entity name="Tunnel" representedClassName="Tunnel" syncable="YES">
<attribute name="title" optional="YES" attributeType="String" syncable="YES"/>
<relationship name="interface" maxCount="1" deletionRule="Cascade" destinationEntity="Interface" inverseName="tunnel" inverseEntity="Interface" syncable="YES"/>
- <relationship name="peers" toMany="YES" deletionRule="Cascade" destinationEntity="Peer" inverseName="tunnel" inverseEntity="Peer" syncable="YES"/>
+ <relationship name="peers" toMany="YES" deletionRule="Cascade" ordered="YES" destinationEntity="Peer" inverseName="tunnel" inverseEntity="Peer" syncable="YES"/>
</entity>
<elements>
<element name="Address" positionX="-54" positionY="45" width="128" height="75"/>
- <element name="Interface" positionX="-54" positionY="-9" width="128" height="165"/>
+ <element name="Interface" positionX="-54" positionY="-9" width="128" height="180"/>
<element name="Peer" positionX="-36" positionY="9" width="128" height="135"/>
<element name="Tunnel" positionX="160" positionY="192" width="128" height="90"/>
</elements>
diff --git a/WireGuard/ViewControllers/TunnelConfigurationTableViewController.swift b/WireGuard/ViewControllers/TunnelConfigurationTableViewController.swift
index 64ad85d..9a3f10d 100644
--- a/WireGuard/ViewControllers/TunnelConfigurationTableViewController.swift
+++ b/WireGuard/ViewControllers/TunnelConfigurationTableViewController.swift
@@ -61,9 +61,19 @@ class TunnelConfigurationTableViewController: UITableViewController {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.section {
case 0:
- return tableView.dequeueReusableCell(type: InterfaceTableViewCell.self, for: indexPath)
+ let cell = tableView.dequeueReusableCell(type: InterfaceTableViewCell.self, for: indexPath)
+ cell.model = tunnel.interface
+ return cell
case 1:
- return tableView.dequeueReusableCell(type: PeerTableViewCell.self, for: indexPath)
+ let cell = tableView.dequeueReusableCell(type: PeerTableViewCell.self, for: indexPath)
+ if let peer = tunnel.peers?.object(at: indexPath.row) as? Peer {
+ cell.peer = peer
+ } else {
+ let peer = Peer(context: tunnel.managedObjectContext!)
+ tunnel.addToPeers(peer)
+ cell.peer = peer
+ }
+ return cell
default:
return tableView.dequeueReusableCell(type: AddPeerTableViewCell.self, for: indexPath)
}
@@ -104,12 +114,38 @@ class InterfaceTableViewCell: UITableViewCell {
}
extension InterfaceTableViewCell: UITextFieldDelegate {
- func textFieldDidBeginEditing(_ textField: UITextField) {
- print("\(textField) \(textField.text)")
+ @IBAction
+ func textfieldDidChange(_ sender: UITextField) {
+ let string = sender.text
+ print(string)
+
+ if sender == nameField {
+ model.tunnel?.title = string
+ } else if sender == privateKeyField {
+ model.privateKey = string
+ } else if sender == publicKeyField {
+ model.publicKey = string
+ } else if sender == addressesField {
+ let address = Address(context: model.managedObjectContext!)
+ address.address = string
+ model.adresses = NSSet(array: [address])
+ } else if sender == listenPortField {
+ if let string = string, let port = Int16(string) {
+ model.listenPort = port
+ }
+
+ } else if sender == dnsField {
+ model.dns = string
+ } else if sender == mtuField {
+ if let string = string, let mtu = Int32(string) {
+ model.mtu = mtu
+ }
+ }
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
print("\(string)")
+
return true
}
}
@@ -126,12 +162,29 @@ class PeerTableViewCell: UITableViewCell {
}
extension PeerTableViewCell: UITextFieldDelegate {
- func textFieldDidBeginEditing(_ textField: UITextField) {
- print("\(textField) \(textField.text)")
+ @IBAction
+ func textfieldDidChange(_ sender: UITextField) {
+ let string = sender.text
+ print(string)
+
+ if sender == publicKeyField {
+ peer.publicKey = string
+ } else if sender == preSharedKeyField {
+ peer.presharedKey = string
+ } else if sender == allowedIpsField {
+ peer.allowedIPs = string
+ } else if sender == endpointField {
+ peer.endpoint = string
+ } else if sender == persistentKeepaliveField {
+ if let string = string, let persistentKeepalive = Int16(string) {
+ peer.persistentKeepalive = persistentKeepalive
+ }
+ }
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
print("\(string)")
+
return true
}
}