Commit Graph

220 Commits

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