Commit Graph

1012 Commits

Author SHA1 Message Date
Roopesh Chander 851bd8102d TunnelsManager: Don't act on status change on tunnelProviders we don't have
That causes errors we don't want, and duplicate notifications.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-10 17:03:23 +05:30
Roopesh Chander 0d7a585bf7 TunnelsManager: Always call the completion handler before returning
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-10 17:01:53 +05:30
Roopesh Chander 663bb02c68 TunnelsManager: Debugging helpers for tunnel status
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-10 16:31:36 +05:30
Roopesh Chander b491b9c371 TunnelsManager: Handle deactivation of a waiting tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-10 16:28:41 +05:30
Roopesh Chander 707f292e4e Tunnels list: Fix AutoLayout error during deletion of a tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-10 12:59:31 +05:30
Roopesh Chander aa41bd7d6c Settings: Dynamic Type support
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-10 01:45:34 +05:30
Roopesh Chander ec5be76d06 Tunnel edit: Dynamic Type support
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-10 01:45:34 +05:30
Roopesh Chander 692b0c6519 Tunnel detail: Dynamic Type support
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-10 01:45:34 +05:30
Roopesh Chander bb836b8fdc Tunnels list: Dynamic Type support for the add button at the center
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-09 18:13:37 +05:30
Roopesh Chander 8eda4641ca Tunnels list: Dynamic Type support for the table view
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-09 18:13:04 +05:30
Roopesh Chander 60e13ddbf6 Model: Declare keyLength constant and use that wherever applicable
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-09 14:07:03 +05:30
Roopesh Chander 0dcb285b67 TunnelsManager: Observe status for all tunnels in one block
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-08 18:43:24 +05:30
Roopesh Chander 6838dc3a74 TunnelsManager: Remove unused variables
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-08 15:00:26 +05:30
Roopesh Chander 46f4be6087 Zip: Fix comment
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-08 13:43:00 +05:30
Jason A. Donenfeld 2fa2f58aad Version bump
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-12-07 23:58:53 +01:00
Jason A. Donenfeld 1eddb2c86d PacketTunnelProvider: Show log timestamp
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-12-07 23:56:26 +01:00
Roopesh Chander aa0b288436 Zip: Increase size of buffer used to read data from the archive
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-08 02:17:55 +05:30
Roopesh Chander 71568d1899 Settings: Export log: Perform file operations in a background thread
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-08 02:17:55 +05:30
Roopesh Chander 06a783f50a On-Demand: TunnelViewModel: Make activate-on-demand methods static
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-08 02:17:23 +05:30
Roopesh Chander 465c22f769 On-Demand: Move detail text to TunnelViewModel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-08 02:17:15 +05:30
Jason A. Donenfeld b7e5638681 Plist: Handle crypto export
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-12-07 18:52:14 +01:00
Jason A. Donenfeld 66b4aedd08 Make strings consistent
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-12-07 18:52:14 +01:00
Roopesh Chander 105eca7adc State restoration: Restore tunnel detail view
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 19:05:08 +05:30
Roopesh Chander e3801308cb Main VC: No need to refresh statuses if the tunnelsManager isn't initialized yet
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 15:52:47 +05:30
Roopesh Chander 05d0429c50 Tunnels list: Deselect rows correctly
Do it like UITableViewController.clearsSelectionOnViewWillAppear would.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:23 +05:30
Roopesh Chander fa9a4921a8 Settings: Exporting configs as zip should open document picker
Because:
- Exporting UI should be consistent with importing UI
- UIActivityVC takes a long time to open

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander c827a00307 Error handling: Use ErrorPresenter.showErrorAlert() instead of per-VC showErrorAlert() methods
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander dcfa9473e9 Error handling: Use WireGuardAppError and WireGuardResult throughout the app
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander 782dd2ea4e Error handling: Introduce a WireGuardResult type to handle errors in callbacks across the app
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander c9267ba634 Error handling: Introduce a WireGuardAppError protocol to manage errors
The alert strings shall be located next to where the errors are declared.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander 8d26a3c536 Error handling: Cleanup Tunnels Manager errors
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander 7631844fbe Error presenter: Always handle the passed error
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander 046b540e53 Tunnel detail: Cell status switch should be toggled only after the alert presentation completes
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander f6faffa4c1 Refactoring: Consolidate file deletion into a separate function
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander 290bd192a0 NE: Logging: Log file should begin with version numbers and tunnel name
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-07 12:36:19 +05:30
Roopesh Chander bf86731879 NE: Logging: Make it clear which calls to wg_log use String and which use StaticString
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-04 15:58:53 +05:30
Roopesh Chander 4e386e85e4 Settings: Add timestamp to exported log
And remove the exported log afterwards.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-04 14:12:53 +05:30
Roopesh Chander 046d1413ec Refactor out VPN-handling stuff from tunnels list VC to the main VC
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-03 18:51:51 +05:30
Roopesh Chander e1b258353c VPN: Error out when tunnel activation fails because there's no internet
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-03 18:51:42 +05:30
Roopesh Chander cdd132d7d0 Settings: Export log file
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-12-02 13:26:53 +05:30
Roopesh Chander 679d63294d NE: Write log to file
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-30 00:36:33 +05:30
Roopesh Chander d01d46fde8 Info.plist: Add app group id for accessing from both the app and the network extension
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-29 14:05:27 +05:30
Roopesh Chander a3bc306b6e Xcode: Add app groups capability
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-29 12:01:45 +05:30
Roopesh Chander 3e1772ccd0 It's 'WiFi', not 'Wifi'
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-28 12:41:35 +05:30
Roopesh Chander b946cbc0f3 NE: All DNS queries must first go through the VPN's DNS servers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-23 13:04:55 +05:30
Roopesh Chander 8590a8804a Tunnel view model: Invalidate the configuration object when updating allowedIPs using the 'Exclude private IPs' switch
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-19 15:22:27 +05:30
Roopesh Chander a117e3ae3e Config file parser: Be case-insensitive to attribute keys in the config file
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-19 12:37:54 +05:30
Roopesh Chander ef2012330f Config file parser: Fix typo
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-17 22:52:37 +05:30
Roopesh Chander 6bb25782c1 Exporting: Export to zip in a background thread
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-15 13:39:56 +05:30
Roopesh Chander 1dac181803 Exporting: Refactor out zip exporting into a separate class
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-15 13:39:56 +05:30
Roopesh Chander d556729705 Exporting: No need to check for duplicate names - we disallow it at creation time itself
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-15 13:39:56 +05:30
Roopesh Chander b1ae13652c Importing: Import from zip in a background thread
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-15 13:39:56 +05:30
Roopesh Chander 203d6b4596 Importing: Refactor out zip importing into a separate class
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-14 18:52:10 +05:30
Roopesh Chander 2676ee0169 Tunnels manager: After saving after activating on-demand, reload tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-14 13:02:53 +05:30
Roopesh Chander c60c29b93c Tunnels manager: Need to keep VPN-on-demand tunnels's status under observation
Because they can turn on automatically, even while the app is in the foreground.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-12 19:24:13 +05:30
Roopesh Chander bdb2411ebc Tunnel detail: Show VPN-on-demand information
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-12 19:24:13 +05:30
Roopesh Chander 923d039a78 Tunnels manager: Keep track of NETunnelProviderManager's isOnDemandEnabled property
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-12 19:24:13 +05:30
Roopesh Chander abb0312d38 Tunnel edit: Update for VPN-on-demand changes
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-12 19:24:13 +05:30
Roopesh Chander f1b8de7312 Tunnel view model: VPN-on-demand stuff shouldn't be part of the tunnel model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-12 19:24:13 +05:30
Roopesh Chander cc122d7463 Model, Tunnels manager: Rewrite the model for VPN-on-demand
The VPN-on-demand settings should not be part of the tunnel
configuration. Rather, the onDemandRules stored in the
tunnel provider configuration serve as the one place
where the VPN-on-demand settings are stored.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-12 19:24:13 +05:30
Roopesh Chander 39a067cb96 TunnelsManager: Support for on-demand rules
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-11 01:31:38 +05:30
Roopesh Chander c5e8b05e8b Tunnel edit, Tunnel view model: UI for providing On-Demand activation options
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-11 01:18:36 +05:30
Roopesh Chander 4b7094d652 Model: Add activationType to tunnel configuration
We make sure existing tunnel serializations can be deserialized correctly.

We also bump up the tunnelConfigurationVersion, because the tunnel
configuration contents have changed.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-11 01:17:36 +05:30
Roopesh Chander 0f03ffc920 Model: ActivityType enum to represent VPN-on-demand options
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-10 19:17:24 +05:30
Roopesh Chander 1502bd42d3 Model: TunnelConfiguration: Add explicit conformance to Decodable
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-10 19:01:34 +05:30
Roopesh Chander 290f83d5ef Model: Ensure that a TunnelConfiguration always has a valid array of peers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-10 17:02:30 +05:30
Roopesh Chander e8d68396ca VPN: When activating while another tunnel is active, deactivate the other tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-10 16:44:28 +05:30
Roopesh Chander 8e7bfb15ed TunnelsManager: startDeactivation() need not take a completion handler
Because the completion handler pattern doesn't fit in this case.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-10 16:44:28 +05:30
Roopesh Chander 95456ec956 VPN: There are no DNS errors to handle in the app now
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-10 16:44:28 +05:30
Roopesh Chander 7485474c4c NE: Minor refactoring to enable calling startTunnel() with a tunnelConfiguration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-09 22:29:52 +05:30
Roopesh Chander 1d63509b92 VPN: Refresh tunnel statuses when app gets to the foreground
Because the tunnel could've be activated from iOS Settings now

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-09 19:29:34 +05:30
Roopesh Chander f3e32ab737 Remove unused code
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-09 19:20:33 +05:30
Roopesh Chander 59b9a6e5d2 TunnelsManager: Ability to refresh connection statuses
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-09 19:19:32 +05:30
Roopesh Chander 3136fe0e2c NE: When there's an error starting the tunnel, show it to the user using displayMessage()
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-09 17:07:42 +05:30
Roopesh Chander a1070d2b29 Remove unused file PacketTunnelOptionKey.swift
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 18:59:16 +05:30
Roopesh Chander 5ee4d392b5 Move logic to extension: Bring up the tunnel from the stored providerConfiguration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 18:59:16 +05:30
Roopesh Chander c17e4a27a2 DNSResolver: Simplify
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 17:52:11 +05:30
Roopesh Chander 8409b7e929 DNSResolver: Let's not cache DNS resolution results anymore
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 17:52:11 +05:30
Roopesh Chander 651ffa0c51 DNSResolver: DNS resolution can now happen synchronously
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 17:52:11 +05:30
Roopesh Chander 4404bb2b7d Model: Endpoint.hostname()
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 17:52:11 +05:30
Roopesh Chander e66cf5264a Move logic to extension: NETunnelProviderProtocol extension code should be shared
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 17:52:01 +05:30
Roopesh Chander af58bfcb00 Move logic to extension: Refactor PacketTunnelOptionsGenerator into a PacketTunnelSettingsGenerator
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 15:44:13 +05:30
Roopesh Chander 2f7e437202 Move logic to extension: Move DNSResolver to extension
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 15:09:45 +05:30
Roopesh Chander 62573e2ad7 Move logic to extension: .resolvingEndpointDomains is not longer a valid status
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 15:08:57 +05:30
Roopesh Chander a5f9dc4821 Move logic to extension: DNS resolution no longer happens in the app
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 15:04:12 +05:30
Roopesh Chander 7827147bc8 Move logic to extension: Include shared model code when building the extension
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 14:50:05 +05:30
Roopesh Chander a473dfe4f8 Model: Move InterfaceConfiguration.publicKey to Curve25519.swift
The code for public key calculation need not be shared with the extension

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 14:48:25 +05:30
Roopesh Chander fb6a7f6007 Move logic to extension: Move PacketTunnelOptionsGenerator to the extension
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 14:16:30 +05:30
Roopesh Chander f7b04b0b5d Move logic to extension: Invoke startTunnel() without any options
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 14:15:01 +05:30
Roopesh Chander c88c660b51 Move logic to extension: Move model files to Shared
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 13:56:50 +05:30
Roopesh Chander ec2d67ea00 Tunnel edit: While preparing for reuse, should make onValueBeingEdited nil as well
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-08 12:25:36 +05:30
Jason A. Donenfeld 9840e94c84 Version bump
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-07 17:43:50 +01:00
Roopesh Chander 85a19da487 iPad: Ensure we set sourceRect for all cases where we use sourceView
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-07 17:43:30 +01:00
Roopesh Chander b5447add1e Info.plist: Register for handling public.text files for Open-in
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-07 17:43:30 +01:00
Roopesh Chander 879e9816aa Importing: Also support importing public.text files in the file picker
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-07 17:43:30 +01:00
Roopesh Chander 3269bb476a iPad: Set correct sourceRect for the popover anchored on the central 'Add' button
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-07 18:23:12 +05:30
Roopesh Chander b3515c937e TunnelsManager: Return a manager with no tunnels in the simulator
To be able to run at least parts of the app in the simulator.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-07 18:15:20 +05:30
Roopesh Chander 7e9ee913c1 iPad: Configuring the split-view controller should happen in init(), not loadView()
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-07 15:54:30 +05:30
Jason A. Donenfeld d0ec532bd3 Settings: show build id
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-07 05:45:39 +01:00
Jason A. Donenfeld c5c536318f Version bump
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-06 20:18:11 +01:00
Jason A. Donenfeld 6e36c72f96 Importing: simplify
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-06 20:16:40 +01:00
Roopesh Chander f9dcfc1b9d Importing: Assume imported files without .conf or .zip extensions to be a config file
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-07 00:35:37 +05:30
Roopesh Chander 33edfd3587 DNSResolver: No need to resolve if the endpoint is already an IP address
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 23:59:48 +05:30
Roopesh Chander aa0b6e0c60 Model: Endpoint.hasHostAsIPAddress()
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 23:59:48 +05:30
Jason A. Donenfeld e992030569 PacketTunnelProvider: modernize header
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-06 19:04:53 +01:00
Roopesh Chander f6a5dfead4 Global: swiftlint autocorrect --format
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 22:42:53 +05:30
Roopesh Chander 0f4b1c5c1c Global: swiftlint autocorrect
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 22:42:05 +05:30
Roopesh Chander 3496adca86 Importing: Error out on file with unsupported file extension
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 22:32:33 +05:30
Jason A. Donenfeld 0a55a284d5 wireguard-go-bridge: take fd instead of fnptr
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-06 16:27:25 +01:00
Jason A. Donenfeld 02c31c89f6 Xcode: enable more warnings
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-06 16:27:25 +01:00
Roopesh Chander 95a4419b20 Tunnel edit: TunnelEditTableViewKeyValueCell need not support a read-only mode now
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 19:01:13 +05:30
Roopesh Chander 6c9fc8bcb1 Tunnel edit: A new cell class for the public key field, to make the value scrollable
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 17:05:03 +05:30
Roopesh Chander 1a43ad6e39 Tunnel detail: Refactor out the label scrolling into a separate UI class
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 16:49:09 +05:30
Roopesh Chander a62f7fb988 Tunnel view model: Peers in a configuation may not share the same public key
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 08:17:56 +05:30
Roopesh Chander 636aa98b79 Parser: Peers in a configuation may not share the same public key
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-06 08:17:56 +05:30
Jason A. Donenfeld 24575a5cf9 Version bump
We update the build number, not the version number, so that test flight
doesn't need a new review.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-05 21:44:00 +01:00
Roopesh Chander 34a8d70a45 Parser: Address, DNS and AllowedIPs can have mutliple entries
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-05 23:53:00 +05:30
Roopesh Chander 733c29021e QR Code: Dismiss the QR code screen when the name prompt is cancelled
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-05 23:38:41 +05:30
Roopesh Chander f102051e22 Tunnel view model: No need to save if we already have a validated configuration object
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-05 22:55:09 +05:30
Jason A. Donenfeld e228ac9d99 global: convert to Swift 4.2
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-05 06:31:25 +01:00
Jason A. Donenfeld 8860abc89e TunnelsManager: account for no or many endpoints
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-05 06:23:26 +01:00
Jason A. Donenfeld a08a9ba4c4 PacketTunnelProvider: clamp v6 addresses to /120
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-05 03:11:11 +01:00
Jason A. Donenfeld 8ec38e1d2b Settings: account for bottom padding on iPhone X
Reported-by: Jeffrey A. Donenfeld <jad@runblue.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-05 02:09:40 +01:00
Jason A. Donenfeld 4bd1ea63c6 XCode: use old network extension ID
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-04 05:42:25 +01:00
Jason A. Donenfeld 6c40479863 XCode: unify version strings
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-04 03:51:50 +01:00
Jason A. Donenfeld 897c873296 Settings: anchor logo to bottom
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-04 03:37:18 +01:00
Roopesh Chander 6d191665a4 Add a correct launch-screen storyboard
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-04 02:31:04 +05:30
Jason A. Donenfeld c4e5bde1d9 Revert "Settings: Swap table view sections"
This reverts commit 1108f82489.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 19:53:04 +01:00
Jason A. Donenfeld e43de890e0 Settings: simplify
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 19:48:10 +01:00
Jason A. Donenfeld 955de09c9e Global: run through swiftlint
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 19:35:25 +01:00
Jason A. Donenfeld 6738ebb356 Settings: limit size of logo
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 19:20:21 +01:00
Jason A. Donenfeld b28a62c114 Settings: use updated wireguard banner logo
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 18:37:51 +01:00
Jason A. Donenfeld 1568ae57e3 TunnelsManager: restore sanity
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 18:20:25 +01:00
Roopesh Chander c80901fbed Change version with 0.0.yyyymmdd versioning scheme
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 19:28:29 +05:30
Roopesh Chander 68f91e2a84 VPN: Make sure actions inside tunnelProvider completion handlers are done in the main queue
They should really already be in the main queue, but we do this just in case.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 19:26:28 +05:30
Roopesh Chander 582092abb1 VPN: Start observing the status only if startTunnel() succeeds
This should fix the status change to .disconnected when we're resolving endpoints

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 19:22:30 +05:30
Roopesh Chander 7c4992894b VPN: We should never get a status change to .disconnected if we're resolving endpoints
But we do, which we'll fix subsequently

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 18:58:27 +05:30
Roopesh Chander 538704e7bd Revert "TunnelsManager: initialize observer on correct thread"
Rather, we'll make sure we always call startObservingTunnelStatus from
the main thread.

This reverts commit d16a6a167c.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 18:45:26 +05:30
Roopesh Chander 66389c60b5 Settings: Show the captioned WireGuard logo at the end
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 18:41:54 +05:30
Roopesh Chander 09fbe93bf0 Settings: Swap table view sections
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 17:53:50 +05:30
Roopesh Chander e8802b14b4 Remove empty image
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 17:39:43 +05:30
Jeroen Leenarts 477916f0c4 Add Wireguard logo with caption to project
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 17:39:22 +05:30
Roopesh Chander b9d0b9f096 Tunnels list: Fix status switch look after flipping it off after an error
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 17:28:16 +05:30
Roopesh Chander 2f5e83cf99 ErrorPresenter: showErrorAlert takes an onPresentated handler
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 17:27:07 +05:30
Roopesh Chander a512216d85 Tunnels list: Should deselect the row when handling the selection
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 16:05:02 +05:30
Roopesh Chander 9312821778 Tunnel list: Don't show the detail view after creating a config from scratch
So it's consistent with the other two "Add a configuration" menu items

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 15:51:29 +05:30
Roopesh Chander 366ca7802a Ensure that all tunnel names are trimmed of whitespaces
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 15:45:29 +05:30
Roopesh Chander ac79c5b1f7 Zip archive: Handle files within folders inside the zip
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 15:37:31 +05:30
Jason A. Donenfeld ec943587fa TunnelsManager: initialize observer on correct thread
Because of the callback recursion, this function needs to always be called from the right thread

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 07:03:23 +01:00
Jason A. Donenfeld 6405b76941 TunnelsManager: do not track currentTunnel
It's error prone and does not give us anything.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 06:22:57 +01:00
Jason A. Donenfeld 9e9898f17d TunnelsManager: do not change back to inactive if we are resolving the endpoint
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 06:09:57 +01:00
Roopesh Chander ae2ae87bbe Tunnels list: Remove separator lines in the table view
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 10:26:15 +05:30
Roopesh Chander 735d542658 Tunnels list: Show an 'Add' button when there are no tunnels
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 10:26:09 +05:30
Roopesh Chander 0c60489819 Tunnels list: Show a busy indicator before the tunnels are loaded
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 10:25:47 +05:30
Roopesh Chander 9df0064eac Tunnels list: The Add and Settings buttons should be no-ops until the tunnels are loaded
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 10:25:47 +05:30
Roopesh Chander f6a29d9f50 Tunnel edit: Use layoutMarginsGuide instead of constants
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-03 10:25:47 +05:30
Jason A. Donenfeld 5845db4568 TunnelsManager: fix use of arrayslice in addMultiple
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 04:37:56 +01:00
Jason A. Donenfeld f57c40c38b TunnelsManager: get rid of name set
Instead, tunnels itself should be a sorted-set. For now it's a list,
which is probably fine though.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 03:53:08 +01:00
Jason A. Donenfeld 007d6d9c58 TunnelsManager: get rid of index management
No need for premature optimization. There aren't that many tunnels most
of the time, and calling sort on a partially sorted array is fast.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 03:43:09 +01:00
Jason A. Donenfeld 9439e00047 Global: no periods at the end of error messages
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 03:43:09 +01:00
Jason A. Donenfeld 95101dce5c Import: rework addMultiple logic
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-03 03:43:09 +01:00
Roopesh Chander dff928fafa Tunnel detail: In the key-value cell, make the value label scrollable horizontally
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 23:48:27 +05:30
Roopesh Chander 4c485cdbb2 Tunnel edit: Ensure all key-value fields have a placeholder text
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 18:20:32 +05:30
Roopesh Chander f92fb1b9f4 DNSResolver: Bugfix: Always call completion handler
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 18:10:51 +05:30
Roopesh Chander 29004c0ab6 Info.plist: Update document icons and description
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 17:40:46 +05:30
Roopesh Chander 159ecca829 Info.plist: Document type UTI should be consistent with exported UTI
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 17:40:46 +05:30
Roopesh Chander cd16db83cc Info.plist: Register zip file for open-in
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 17:40:46 +05:30
Roopesh Chander 09a0d1ef20 Info.plist: Add .conf extension to document type
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 17:40:46 +05:30
Roopesh Chander 1e5bd7e458 Add document icon
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 17:39:43 +05:30
Roopesh Chander f7be9a29a9 Add app icons
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 16:11:24 +05:30
Roopesh Chander 90af773fef Handle cell reuse in showing delete buttons in red
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 13:24:10 +05:30
Roopesh Chander e7a1f142fb Table edit: Show/hide 'Exclude Private IPs' instead of enable/disable
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 13:12:10 +05:30
Roopesh Chander 66e802584b Tunnel view model: If there's just one peer, populate the scratchpad on init
So that exclude private IPs can be computed correctly.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 13:09:45 +05:30
Roopesh Chander b3cc30a207 Tunnel view model: Initialize peerData.numberOfPeers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-02 12:05:58 +05:30
Jason A. Donenfeld 7fc0e3ee94 DNSResolver: getaddrinfo returns a sockaddr and inet_ntop takes strlen
The way this was written before was totally wrong.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-02 05:34:17 +01:00
Jason A. Donenfeld b21de2e398 NetworkExtension: check isTunnelClosed before packet existence
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-01 22:01:52 +01:00
Jason A. Donenfeld cf569fd0d2 Global: OK over Ok
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-01 21:22:12 +01:00
Roopesh Chander abd02975c5 Deletion buttons are shown in red
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 23:53:09 +05:30
Roopesh Chander 46e9eddecc Tunnel edit: Highlight erroring field keys in red
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 23:45:48 +05:30
Roopesh Chander 55cf6e6181 Tunnels list: Swipe left to delete
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 23:45:48 +05:30
Jason A. Donenfeld c2d76b9c45 Global: fix up strings
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-01 19:01:43 +01:00
Roopesh Chander 196daccdde QR code: Fix what happens when an error is shown
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 22:08:01 +05:30
Roopesh Chander 7608cebbc6 NE: Show an alert when someone tries to start the VPN from iOS Settings
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 22:08:01 +05:30
Jason A. Donenfeld c5e35fee1e Export: fix up export format
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-01 17:31:50 +01:00
Roopesh Chander 3611f8cf5a Tunnel errors: Consolidate tunnel activation errors into ErrorPresenter
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 16:58:33 +05:30
Roopesh Chander 39a457e402 TunnelsManager: Better errors
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 16:57:40 +05:30
Roopesh Chander 53a93e9b92 ConfigFile: WgQuickConfigFileWriter: Fix '[Peer]' section header
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 16:13:30 +05:30
Roopesh Chander 1377153bc6 Importing: Account for errors in showing the 'No configurations found' error
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 15:59:17 +05:30
Roopesh Chander 5138cdf9ea Tunnel detail: Fix deletion of tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 15:54:37 +05:30
Roopesh Chander 040ce32015 VPN: TunnelsManager: Fix deletion code
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 15:53:10 +05:30
Roopesh Chander 2870175ab2 VPN: Restart tunnel after modifying a currently active configuration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 15:36:59 +05:30
Roopesh Chander b96e5ae563 QR code: Degrade gracefully when running on the simulator or on a device without a camera
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander 95ad752d65 Revert "QR code: QR code scanning is not available in the simulator"
This reverts commit 9729386406.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander 193b8c2596 Importing: Show error when the zip file contains no .conf files
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander cf7966e876 VPN: We have to start observing the tunnelContainer before we attempt to activate it
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander 066449b207 Importing: Error out on duplicate name
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander bede8a17ad QR Code: Error out on duplicate name
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander 050f8aa679 Tunnel edit: Error out on duplicate name when creating / modifying a tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander bd1820e9f5 VPN: An ErrorPresenter class to consolidate showing of error alerts
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander 92d3de1b0d VPN: Introduce an error enum for adding/modifying/removing tunnels
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 11:45:44 +05:30
Roopesh Chander dd33d74caf VPN: TunnelsManager: s/TunnelsManagerError/TunnelActivationError/g;
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 01:47:53 +05:30
Roopesh Chander 0aab067a53 VPN: TunnelsManager should keep track of tunnel names to prevent duplicate names
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-11-01 01:47:53 +05:30
Jason A. Donenfeld fff1a70ab9 UI: not all subclasses of CopyableLabelTableViewCell have a detailTextLabel, so generalize
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-31 16:38:05 +01:00
Jason A. Donenfeld ecb6035d36 TunnelManager: bound recursion in startActivation
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-31 15:58:03 +01:00
Roopesh Chander b2ab6b91a1 VPN: Retry startTunnel based on error conditions
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-31 16:42:29 +05:30
Roopesh Chander 059a989fc9 Tunnel list: Fix importing zip with multiple configurations
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-31 14:30:25 +05:30
Roopesh Chander 439f8f5a15 VPN: Support adding multiple configurations in one shot
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-31 14:29:54 +05:30
Jason A. Donenfeld 9f5612f93f wireguard-go-bridge: extract version for consumption by network extension
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-31 04:08:13 +01:00
Jason A. Donenfeld 2a9c7e4745 wireguard-go-bridge: simplify logging and remove tags
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-31 03:22:22 +01:00
Jason A. Donenfeld d2f3a29f45 NetworkExtension: close context before turning off go
The go turnOff code waits for all readers to have completed. In order to
make readers complete, we must send the signal to unblock the request.
Thus, we must reorder these.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-31 03:03:00 +01:00
Jason A. Donenfeld 2e78aecd68 UI: More elegant copy-to-clipboard behavior
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-31 02:17:47 +01:00
Roopesh Chander e13bf133db QR code: QR code scanning is not available in the simulator
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 19:22:24 +05:30
Roopesh Chander 900b468622 Style: Remove 'Based on' attributions
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 19:07:07 +05:30
Roopesh Chander 904a080690 QR code: Show label overlay with info on how to generate the QR code
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 19:04:15 +05:30
Roopesh Chander cd7dd56980 Tunnel creation: Placeholders for Listen port, Pre-shared key, Persistent Keepalive
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 18:50:56 +05:30
Roopesh Chander fd241fac40 VPN: Refactor use of DNS resolution while activating the tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 18:36:28 +05:30
Roopesh Chander ce20a17e51 NE: Print error when unable to start the tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 18:36:28 +05:30
Roopesh Chander 60943d88e0 Tunnel view model: IP address can be specified without '/cidr'
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 13:46:10 +05:30
Roopesh Chander 7e4597e0d7 Model: IP address can be specified without '/cidr'
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 13:45:16 +05:30
Roopesh Chander 535f0e1e4a Fix error message: s/atleast/at least/g;
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 13:32:14 +05:30
Jason A. Donenfeld 5b6ef1ca38 Global: fix up captialization in headers
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-30 03:57:35 +01:00
Jason A. Donenfeld dd1e800348 Style: simplify remaining headers
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-30 03:55:43 +01:00
Jason A. Donenfeld fc6bee0b8c XCode: fall back to default settings
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-30 03:54:00 +01:00
Jason A. Donenfeld 8bf6ae8729 ZIP: fix linter warnings
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-30 00:50:01 +01:00
Roopesh Chander 38e4e274aa VPN: Better error messages
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-30 00:24:50 +05:30
Roopesh Chander 4cacf550a3 VPN: Specify an error when there are no peers with an endpoint
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 23:38:40 +05:30
Roopesh Chander 6fe0eb0bcf Export: Exporting config files
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 23:06:55 +05:30
Roopesh Chander fc78187d54 mv Parsing/ ConfigFile/
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 19:05:01 +05:30
Roopesh Chander ffc9b11efb Settings: Add a settings panel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 17:34:09 +05:30
Roopesh Chander 3791b2e1b9 Model: Cap networkPrefixLengths to valid values
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 16:49:49 +05:30
Roopesh Chander 1f8585443d Tunnel edit: Support for exclude private IPs
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 16:44:47 +05:30
Roopesh Chander 12a87784dd Tunnel view model: Support for exclude private IPs
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 16:43:53 +05:30
Roopesh Chander c3c905884a Tunnel edit: Fix keyboard type for reused cells
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 16:43:12 +05:30
Roopesh Chander 92c0f2a17e Tunnel detail: Assume there's just one section per peer
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 13:02:11 +05:30
Roopesh Chander 81bbfcf46a Tunnel edit: Assume there's just one section per peer
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 12:47:00 +05:30
Roopesh Chander e4125f6d22 Tunnel edit: Set correct keyboard types
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 06:19:50 +05:30
Roopesh Chander b7aaae7513 VPN: If we don't have to make a DNS request, we shouldn't enter that status
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 06:19:50 +05:30
Roopesh Chander 21ac338f64 VPN: Cache DNS resolutions while the app is in memory
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 06:19:50 +05:30
Roopesh Chander e80e8b06c5 VPN: Reload the tunnel before starting it up
To avoid errors like this: https://stackoverflow.com/q/47550706

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 06:19:50 +05:30
Roopesh Chander 0baca8bf58 Tunnel list, detail: Deletion of tunnels
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 06:19:43 +05:30
Roopesh Chander c955c5a913 VPN: Fix deletion of tunnels
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 04:54:57 +05:30
Roopesh Chander 7f77d87e27 Fix: Make sure all prepareForReuse() implementations call super
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 02:27:14 +05:30
Roopesh Chander 0396a3550c Tunnel edit: Set correct title when editing
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 02:24:32 +05:30
Roopesh Chander d48a4382b7 Tunnel detail: Change title after editing completes
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 02:21:19 +05:30
Roopesh Chander 335618a8db Tunnel detail: Copying the public key
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 02:19:11 +05:30
Roopesh Chander 65d54d2e9f Tunnel editing: Fix cell class names
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 02:15:43 +05:30
Roopesh Chander 95a451f4e1 Import: Use the refactored function for Open-in
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 02:09:50 +05:30
Roopesh Chander dda43a0780 Import: Minor refactoring
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 02:08:40 +05:30
Roopesh Chander b5ef62ddee Import: Show errors when importing fails
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 02:03:39 +05:30
Roopesh Chander 3f97199f68 Import config: Directly add config, don't open up the editor
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 01:58:21 +05:30
Roopesh Chander 3356cfd688 Zip: Import configs from zip files
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 01:52:43 +05:30
Roopesh Chander de3dde84fd Zip: Add zip file reader
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 01:51:49 +05:30
Roopesh Chander 38b816ba4c Zip: Include minizip in our Xcode project
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 01:03:53 +05:30
Roopesh Chander 718311b32c Zip: Add code from the minizip project
Source: https://zlib.net/zlib-1.2.11.tar.gz

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-29 01:03:44 +05:30
Roopesh Chander e9d90a2f0d QR code: Save the scanned tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 23:32:15 +05:30
Jeroen Leenarts f57953767b QR code: Ask for title when scanning a QR code
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-28 23:20:18 +05:30
Roopesh Chander 981a745bcc QR code: Minor refactoring
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 23:19:56 +05:30
Jeroen Leenarts 1335724c58 QR code: Support some form of rotation.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-28 23:19:52 +05:30
Jeroen Leenarts 09a2284104 QR code: Make sure correct layering is used to make sure hint remains visible.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-28 23:19:45 +05:30
Roopesh Chander 08c855fce6 QR code: Integrate Eric's QR code scanner
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 22:22:32 +05:30
Roopesh Chander cd7baac0fc Info.plist: Indicate that the app shall use the camera
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 22:01:02 +05:30
Roopesh Chander fa410c668a Tunnels list: Need to pass in a name to the parser
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 21:59:52 +05:30
Roopesh Chander 4855eafb39 Revert "Parser: Interface name can be added after parsing"
This reverts commit d3a9e79149.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 21:57:18 +05:30
Eric Kuck 3082863fd1 QR code: Ability to add tunnels with a QR code scan
Signed-off-by: Eric Kuck <eric@bluelinelabs.com>
2018-10-28 18:26:41 +05:30
Roopesh Chander 3d4409fc93 Model: Ensure name is not empty
We don't need it because we don't have to open the new-config UI
after scanning a QR code.

This reverts commit db72e95.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 18:13:47 +05:30
Roopesh Chander a680fdf2bd VPN: A tunnel may be already active on app startup
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 18:09:38 +05:30
Roopesh Chander 269a6c3719 VPN: Remove ability to deactivate the tunnel while resolving DNS
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 17:47:01 +05:30
Roopesh Chander 493166bd70 VPN: DNSResolver: Resolve multiple endpoints in parallel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 17:44:25 +05:30
Roopesh Chander dfbdcf3c28 Tunnels list: Add a switch and an activity indicator to the list view
They track the status of the tunnel. The switch can also be used to
bring the tunnel up and down.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 14:56:15 +05:30
Roopesh Chander 1870a3d364 VPN: Save the tunnel name when modifying a tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 14:55:24 +05:30
Roopesh Chander 31e5d33114 Tunnel detail: For now, don't allow cancelling when resolving domains is in progress
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 14:54:41 +05:30
Roopesh Chander 78ab196a28 VPN: Cleaner derivation of subnet mask from CIDR network prefix length
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-28 11:51:18 +05:30
Roopesh Chander 011e1eeab8 Tunnel detail: The tableView should have selection disabled
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:14:08 +05:30
Roopesh Chander a3e912a21f VPN: Better error and status handling
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander dba3226a34 Xcode: Disable bitcode
Enabling bitcode generates a linker error when linking with libwg-go.a

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 793bf63989 VPN: Bring up the tunnel
The app figures out all settings and passes them in the
'options' parameter of startTunnel().

The network extension just takes them as is and just plugs the supplied
values into the right places.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander a08e08fe2e Xcode: Make Xcode build libwg-go.a automatically
This is based on Jeroen Leenarts' work (commit a3cdb84)
and Jason Donenfeld's work (commit 9d01829).

To reproduce:

In Xcode, add a new target called 'WireGuardGoBridge' with
the Cross-platform > External build system template. Configure
that target with the 'make' build tool and ask it to build on the
wireguard-go-bridge directory.

The Makefile in wireguard-go-bridge is already configured to
handle being called from Xcode as an external build system.

In WireGuardNetworkExtension's build phases, add a dependancy to
WireGuardGoBridge, and ask it to link to libwg-go.a (the make command
shall generate this archive). Add libwg-go.a as a library to be linked
with.

Edit the Xcode pbxproj file and in the file reference entry for
libwg-go.a, set path as "libwg-go.a" and sourceTree as
BUILT_PRODUCTS_DIR.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 8d2bc4524a VPN: Fix DNS resolution API
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 3044637196 NE: Add bridging header
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 11a6b988ce NE: Remove entitlements we don't need for now
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 2c591f33c6 NE: Include the network extension in the project
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander e5840a1959 VPN: Perform DNS resolution before starting the tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 3aed009eb6 Tunnel detail: Account for status section in peer index calculations
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 3f4d12c404 VPN: DNSResolver: A class that does DNS resolution using getaddrinfo
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 10c4085239 Tunnel detail: UI for activating and deactivating a tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander a2daf09342 VPN: Activating, deactivating and tracking the status
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander f5e5c7f17d Tunnel detail: Fix comment
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:16 +05:30
Roopesh Chander 0fcf48ce75 Model: Add a version number to the tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 19:07:01 +05:30
Roopesh Chander c8fba951ad VPN: Adding, modifying and deleting actual NETunnelProviderManager instances
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander ff7adb8bc8 Import: Support for importing a config file from file providers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander f845d7557a iPad: Fix modal presentation style
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander 204cbc284a iPad: Make sure the navigation bar is visible in the detail view
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander f7feb18ea8 Tunnel editing: Delegate should also report when editing is cancelled
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander 05b9d6972b Import: Support for opening a .conf file in the app
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander 112b5c3b10 Tunnel editing: Separate init for creation and modification
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander a8dbeeda6d Parser: Interface name can be added after parsing
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander 1187657497 Model: Allow creating an interface with empty name
But don't allow such a tunnel to be added to the tunnel manager.

(We'll need to create an interface with an empty name when we're reading QR codes.)

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander 1c8928c8a1 Info.plist: support for opening wg-quick config (.conf) files
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander 6c33968fe3 Info.plist: Export the config file type declaration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:02 +05:30
Roopesh Chander e0c7006dbc Config file: Parsing a wg-quick config file
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 7316eb06f8 Model: MTU should be a 16-bit integer
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 6cddb9e34b VPN: Tunnel container shall provide direct access to the configuration object
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 06c84a22ca Tunnel editing: Modifying a tunnel configuration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 37f43759b8 Tunnel creation: After saving the new tunnel, show the detail view
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 0fad01107c Tunnel detail: Don't show fields that have empty value
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 5b1876b998 Tunnel creation: Public key is uneditable
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 3b77f824b6 Tunnel creation: An uneditable field's value should be grey as well
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 0ae4b3bcf1 Tunnel creation: Generate key pair
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 571e9b5826 Tunnel creation: Compute public key from private key as the text is being edited
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8f4875caf0 Tunnel view model: Populate interface's public key
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b6d41ec9de Model: Interface: Add a public key computed property
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander c689be7eff Crypto: Swift wrapper for the Curve25519 C code
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Jeroen Leenarts 5bfb6a2c13 Crypto: Curve25519: Add explicit cast to supress conversion warning.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-27 15:13:01 +05:30
Roopesh Chander acfa77f3df Crypto: Add Curve25519 C code to project
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Jeroen Leenarts 834c9ae7ce Crypto: Add key generation functions
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-27 15:13:01 +05:30
Roopesh Chander 7b915a8426 Tunnel creation: Hide 'Exclude private IPs' switch till the feature is ready
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 72ea54c0db Set Xcode template for smaller copyright headers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8ebfc6afcd Smaller copyright headers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander c14d816b87 Tunnel detail: Start off with the tunnel detail view
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 88c7657eb7 Tunnel view model: Add copy public key
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander fa2760190b Tunnel creation: Variable renaming
s/interfaceEditFieldsBySection/interfaceFieldsBySection/g;
s/peerEditFieldsBySection/peerFieldsBySection/g;

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 6243717a37 Tunnel view model: The view model applies for both editing and viewing
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 20b49518da Tunnels list: Update when a tunnel is added
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 05efb453f3 Tunnel creation: Saving a configuration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 722b3f6c7b Model: Use DNSServer in the Configuration model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander e1b8b67890 Model for DNS server
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander bcf8abb1de Model: Endpoint host should not have invalid characters
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b2f2756d9c Model: listenPort and persistentKeepAlive should be 16-bit integers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 607dd4bf3d Tunnel creation: Refactor by creating a separate view model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b4554dce9b Tunnel creation: Validate the data and prepare to save to a configuration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 28293c8029 Tunnel creation: Save typed values in a scratchpad
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 1a534faa0a Tunnel creation: Fix Persistent Keepalive label's look
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 911b16d54e Tunnel creation: Start off with tunnel creation
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 2e96dbe363 Model: Make InterfaceConfiguration and PeerConfiguration structs
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 89214e7db9 Model: Make it impossible to create invalid interface / peer configuration instances
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 3331327d82 Use Endpoint in the Configuration model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander c12f481b70 Model for an endpoint
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8ec73025f2 Model: IPAddressRange: Converting to and from String
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 921b81e89b Model: Name should be part of the interface, not the tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 6de354b4c5 Tunnels list: Show an actions list when the '+' is tapped
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander df7ea2a781 Tunnels list: Show data from the tunnels manager
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8a11333b65 Tunnels list: Make the table view style explicit
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b63abc65c3 VPN: Add TunnelsManager to manage the tunnels in the app
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8ca3993804 Bump deployment target to iOS 12.0
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander ede2a82c3b Use IPAddressRange in the Configuration model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 0ce6b9e79e Model for an IP Address range
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 3630543be5 Models for tunnel, interface and peer
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 78251e9a50 Configure the split-view controller to work in both iPhone and iPad
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8d62cb3c1b Change copyright to WireGuard LLC
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 5fe60a8bef Use a split-view controller as the main (root) view controller
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander c76e5933e2 Move UI code into a separate platform-specific folder
Later, we hope to have a UI/macOS folder for developing a macOS client
from this codebase.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander dd672d3dac Prepare for rewrite: Move WireGuardNetworkExtension into the new project folder
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 5776523bd2 Use APP_ID in xcconfig rather than PRODUCT_BUNDLE_IDENTIFIER
This is required because when we add an app extension to the
project, there will be two PRODUCT_BUNDLE_IDENTIFIER fields
in our project file, so we cannot use xcconfig to set that
key directly.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 6fe8b8dbe4 Enable Network Extensions capability
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander e2022d3e00 Move App ID to Developer.xcconfig as well
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 700c7221a9 Remove storyboard and create UI from code
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b6f4806fd6 Move DEVELOPMENT_TEAM into an xcconfig out of the git repo
This is so that other developers can work on this codebase
by copying Developer.xcconfig.template to Developer.xcconfig
and setting the DEVELOPMENT_TEAM to their respective Team IDs.
The Team IDs need not be checked into source control.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 6ada0a2857 Create a new project in Xcode
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander cc26734d5d Prepare for rewrite: Remove UI and model code
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Jeroen Leenarts 6346bad069 Better handling of CIDR values.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-03 21:34:51 +02:00
Jeroen Leenarts 24f7dcb7d6 Disable auto corrects and related helpers on UITextfields.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-03 10:54:41 +02:00
Jeroen Leenarts 6cf4c49e21 Export qr scanned config to system settings.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-03 10:48:49 +02:00
Jason A. Donenfeld c10532acd9 Remove extra comment cruft
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-03 01:21:59 +02:00
Jeroen Leenarts 12e33681c1 Remove a few prints, add some whitespace.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 22:36:39 +02:00
Jeroen Leenarts bc279b1e79 Add some form of image for when no configurations are available.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 21:33:24 +02:00
Jeroen Leenarts 9906e6ba04 Dismiss qr scan vc on cancel.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 21:23:52 +02:00
Jeroen Leenarts 37be243317 Handle persistentKeepAlive better.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 21:19:27 +02:00
Jeroen Leenarts c9a88ac29c Add Wireguard logo to bottom of settings.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 21:14:47 +02:00
Jeroen Leenarts eadb09eda8 Extract WireGuardGo version at build time.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 21:14:18 +02:00
Jeroen Leenarts 589bba60b1 Deal with type body length warning.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 19:53:56 +02:00
Jeroen Leenarts 7f6a7481c8 Copy public key through context menu.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 19:39:26 +02:00
Jason A. Donenfeld cd86ba92ec Rewrite bridge build system
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-02 19:15:03 +02:00
Jeroen Leenarts 33cdc14070 Don't crash on failure to obtain version info and inform user on what is needed to be able to retrieve version info from the Go client.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-01 15:37:15 +02:00
Jeroen Leenarts 86646448ac Check and clear old configs on app start and app foreground.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-01 15:36:11 +02:00
Jeroen Leenarts dd02986a78 Add switch to info view controller.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-29 22:29:34 +02:00
Jeroen Leenarts ff1337d5ad Deal with zero or empty input better.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-26 11:43:13 +02:00
Jeroen Leenarts 8e0a52a132 Use trash instead of edit icon.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-26 11:27:24 +02:00
Jeroen Leenarts 18d82d07af Use message to extension to obtain version info.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-26 11:26:52 +02:00
Jeroen Leenarts 47a75bbd57 Fixe base 64 regex format.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-26 11:23:13 +02:00
Jeroen Leenarts cc4bd254a2 Add explicit cast to supress conversion warning.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-26 11:22:15 +02:00
Jeroen Leenarts a55eefcd5d Fixe file/function related warnings.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-26 11:21:53 +02:00
Jeroen Leenarts cd6c9a1203 Not a gear but dots.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-26 10:24:52 +02:00
Jeroen Leenarts 7042e36fb5 Present alert for title.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-25 22:30:16 +02:00
Jeroen Leenarts df4e8e1fca Remove default zeroes for listenPort and mtu.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-25 21:15:50 +02:00
Jeroen Leenarts ad28815bef Ask for title when scaning a QR.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-25 20:59:15 +02:00
Jeroen Leenarts edaeaf732d Move copy button a bit up towards title line.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-25 20:15:44 +02:00
Jeroen Leenarts 7aaa63d8e5 Settnings icon.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-25 20:10:29 +02:00
Jeroen Leenarts 19a4339a27 Report the correct number of rows in the info table view.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-20 00:44:24 +02:00
Jeroen Leenarts 659a24250a Get rid of a few cosmetic lines.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-20 00:43:57 +02:00
Jeroen Leenarts 06f61cbc99 Make sure a scanned config is actually saved and displayed.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-20 00:43:43 +02:00
Jeroen Leenarts 7c608cc3be Support some form of rotation.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-20 00:28:07 +02:00
Jeroen Leenarts 74ad02132a Make sure correct layering is used to make sure hint remains visible.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-20 00:27:49 +02:00
Jeroen Leenarts f993c3172e Add add from file within app.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-19 16:02:20 +02:00
Jeroen Leenarts c9974f9119 Add edit/done buttons to have a more discoverable way to remove tunnels.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-18 22:46:28 +02:00
Jeroen Leenarts 411c919cbf Move add button to bottom toolbar.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-18 22:19:03 +02:00
Jeroen Leenarts 089315ddc5 Add settings screen. Move export as zip to settings screen.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-18 21:49:59 +02:00
Jeroen Leenarts 9d45f6e4b0 Spelling improvement in log statement.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-16 22:43:31 +02:00
Jeroen Leenarts 8326735fcb Show public key on interface. Do not generate public key on peer on generate. Add public key copy buttons.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-16 22:38:32 +02:00
Jeroen Leenarts c863adce85 Start a new peer without an allowed ips entry.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-16 21:23:20 +02:00
Jeroen Leenarts d6e0838677 New peers should begin with zero peers.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-16 21:22:00 +02:00
Jeroen Leenarts 0af4dadd70 Back button for tunnel table view renamed to "Tunnels"
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-16 21:19:14 +02:00
Jeroen Leenarts 484bef1777 Clean up old school headers.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-16 21:17:54 +02:00
Jeroen Leenarts 878f6c54d1 We do not support "on demand" right now.
On demand has the effect of the VPN tunnel being started "on demand" based on a set of triggering criteria. Currently there are no criteria in place, so it always triggers.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-15 21:26:07 +02:00
Jeroen Leenarts 6104546fc6 Add intermediate "Info" screen.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-15 21:24:52 +02:00
Jeroen Leenarts 3a8f8ef9e6 Prevent crash on add and deletion of config.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-15 21:23:47 +02:00
Jeroen Leenarts b8abaa5283 Re-center app icon.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-15 20:29:28 +02:00
Jeroen Leenarts 3802a5c50b Rename "WireGuard tunnels" to "WireGuard".
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-15 20:27:14 +02:00
Jeroen Leenarts 3dcaaa4e6c Fix provisioning.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-15 20:26:17 +02:00
Jason A. Donenfeld e379854dcb Update bundle names
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-15 02:22:10 +02:00
Jeroen Leenarts 1379d97bbe Switch copyright assignment from Jason to WireGuard LLC.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-06 07:42:23 +02:00
Jeroen Leenarts d729a7686e Working zip import.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-05 20:25:54 +02:00
Jeroen Leenarts 24623c4ea3 Remove item from provider managers on delete.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-05 20:25:32 +02:00
Jeroen Leenarts b7755b97a3 Make sure to refresh provider managers after saving.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-05 20:10:09 +02:00
Jeroen Leenarts 56c543f1fc Import of zip.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-03 00:08:34 +02:00
Jeroen Leenarts 8766750bb8 Zip export.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-02 22:47:41 +02:00
Jeroen Leenarts 2572c4781c Add import and export logic.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-09-01 00:18:12 +02:00
Jeroen Leenarts 4950254013 Add addresses, dns and mtu to export string.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-31 21:40:24 +02:00
Jeroen Leenarts b1aadaf82c Add string conversion for tunnel config.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-29 15:01:59 +02:00
Jeroen Leenarts 2e9a12c63f Initial merge of rc's work.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-27 22:32:47 +02:00
Jeroen Leenarts 56362ebd68 Move, modify and add key generation functions to project.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-27 13:38:50 +02:00
Eric Kuck fc1ddc8b12 Reworked main tableview switch layout & logic
Signed-off-by: Eric Kuck <eric@bluelinelabs.com>
2018-08-22 13:34:08 -05:00
Jeroen Leenarts e93e562f38 Use a Switch on each tunnel cell.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-21 22:27:44 +02:00
Jeroen Leenarts dc1a3865af Line selection configures the tunnel.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-21 20:04:14 +02:00
Eric Kuck 39ae9db11c Added ability to add tunnels with a QR code scan. Logic in place to parse conf files as well.
Signed-off-by: Eric Kuck <eric@bluelinelabs.com>
2018-08-21 11:00:41 -05:00
Jeroen Leenarts 5a7e67b53c Extend validators to work for DNS entries as well.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-16 22:41:45 +02:00
Jeroen Leenarts bf3510765a Use `commaSeparatedToArray` utility everywhere.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-16 22:39:08 +02:00
Jeroen Leenarts 603953a8b8 If the selected tunnel is not "enabled", make it enabled.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-16 22:05:22 +02:00
Jeroen Leenarts a95212fcc8 Add on demand rule.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-16 22:04:35 +02:00
Jeroen Leenarts 0adb454bd6 Do not perform optional try, this ate errors in the addressess and DNS input.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-16 22:03:40 +02:00
Eric Kuck b306149222 Added validation before saving any tunnels
Signed-off-by: Eric Kuck <eric@bluelinelabs.com>
2018-08-15 17:34:16 -05:00
Jeroen Leenarts 04454b8451 Remove old import.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-15 19:41:19 +02:00
Jeroen Leenarts a81e8dcf3c Log on VPNStatusDidChange.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-12 21:50:54 +02:00
Jeroen Leenarts 41f9a64d9f Config tweaking.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-12 21:49:38 +02:00
Jeroen Leenarts d38a81c301 Add back addresses.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-12 21:37:56 +02:00
Jeroen Leenarts 9e8feb05f3 Fix config generation.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-09 22:45:28 +02:00
Jeroen Leenarts bee5363dfa Switch from using a single VPN manager to a VPN manager per configuration.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-08 07:04:42 +02:00
Jeroen Leenarts 2b7aa04d40 Add tunnel provider identifier.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-08 06:59:56 +02:00
Jeroen Leenarts 762618ee5a Generate split allowed IPs in protocol configuration.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-07 21:33:19 +02:00
Jeroen Leenarts 4eca5e814c Remove Address and related code.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-06 23:28:52 +02:00
Jeroen Leenarts 7a4cbfa609 Remove incorrect core data model fields.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-06 09:04:54 +02:00
Jeroen Leenarts 5697d6e7e2 Add provider configuration generation.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-06 09:04:29 +02:00
Jeroen Leenarts b2950694d3 Fix binding.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-05 19:05:41 +02:00
Jeroen Leenarts a1a5e73a5d Add default allowed IPs.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-05 15:58:01 +02:00
Jeroen Leenarts 2307bf25b5 Assign correct copyright.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-05 07:48:36 +02:00
Jeroen Leenarts 54c9305ae4 A server address is required for proper saving of protocol configuration.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-04 22:49:37 +02:00
Jeroen Leenarts 675227bac5 Remove some silly TODOs.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-04 22:49:03 +02:00
Jeroen Leenarts 2ae7984629 Add NETunnelProviderManager management to AppCoordinator.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-04 21:28:19 +02:00
Jeroen Leenarts f3bccfb5cc Change copyright notice.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-15 11:55:41 +02:00
Jeroen Leenarts b7cf84b7fa Start wire-up of logging and tunnel system.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-07 22:54:44 +02:00
Jason A. Donenfeld 5fa1283466 Fix bizarre name
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-06-23 02:15:43 +02:00
Jeroen Leenarts f30f0d1a7b Objective-C wrapper around WireguardGo.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-06-22 08:23:39 +02:00
Jeroen Leenarts f7cbe841b7 Allow adding and deleting peers.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-29 22:47:52 +02:00
Jeroen Leenarts db7b24dd02 Allow adding unvalidated config.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-29 22:21:44 +02:00
Jeroen Leenarts 1407090f94 Wire up TunnelConfigurationTableViewController.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-27 22:38:44 +02:00
Jeroen Leenarts 14cb55dd8b A config having zero peers is allowed.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-27 14:23:36 +02:00
Jeroen Leenarts 49538c412e We are dealing with not just any tunnel, but with WireGuard tunnels.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-27 14:23:13 +02:00
Jeroen Leenarts ef67aa7dc4 Deal with final folder name issues due to Apple's case insensitive case preserving behavior.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-27 14:20:15 +02:00
Jeroen Leenarts e14faf6fea Add trash can icon.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-26 09:41:19 +02:00
Jeroen Leenarts ed28691e4c Some casing trouble in WireGuard strings.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-26 09:41:09 +02:00
Jeroen Leenarts 15e62d7f02 Everything is a tunnel.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-26 09:17:36 +02:00
Jeroen Leenarts 9724073447 Add bare bones `ProfileConfigurationTableViewController`.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-24 22:07:04 +02:00
Jeroen Leenarts e6c6fd0b34 Basic setup of ConnectionsTableViewController.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-05-24 20:16:17 +02:00