Commit Graph

332 Commits

Author SHA1 Message Date
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