Commit Graph

316 Commits

Author SHA1 Message Date
Roopesh Chander db72e9522a 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.)
2018-10-27 15:13:02 +05:30
Roopesh Chander e8633b243d Info.plist: support for opening wg-quick config (.conf) files 2018-10-27 15:13:02 +05:30
Roopesh Chander 8561b0f84c Info.plist: Export the config file type declaration 2018-10-27 15:13:02 +05:30
Roopesh Chander ab3fab4024 Config file: Parsing a wg-quick config file 2018-10-27 15:13:01 +05:30
Roopesh Chander 903fd02eb2 Model: MTU should be a 16-bit integer 2018-10-27 15:13:01 +05:30
Roopesh Chander 8423814876 VPN: Tunnel container shall provide direct access to the configuration object 2018-10-27 15:13:01 +05:30
Roopesh Chander 34cc14fefa Tunnel editing: Modifying a tunnel configuration 2018-10-27 15:13:01 +05:30
Roopesh Chander 61cf3f8a5b Tunnel creation: After saving the new tunnel, show the detail view 2018-10-27 15:13:01 +05:30
Roopesh Chander ebb0dcd923 Tunnel detail: Don't show fields that have empty value 2018-10-27 15:13:01 +05:30
Roopesh Chander e2663822bb Tunnel creation: Public key is uneditable 2018-10-27 15:13:01 +05:30
Roopesh Chander ad9e9b6666 Tunnel creation: An uneditable field's value should be grey as well 2018-10-27 15:13:01 +05:30
Roopesh Chander 9120e27f2b Tunnel creation: Generate key pair 2018-10-27 15:13:01 +05:30
Roopesh Chander 423fc4f9e0 Tunnel creation: Compute public key from private key as the text is being edited 2018-10-27 15:13:01 +05:30
Roopesh Chander 91ea0fe7e5 Tunnel view model: Populate interface's public key 2018-10-27 15:13:01 +05:30
Roopesh Chander a4016afd7c Model: Interface: Add a public key computed property 2018-10-27 15:13:01 +05:30
Roopesh Chander 1f166c8d3e Crypto: Swift wrapper for the Curve25519 C code 2018-10-27 15:13:01 +05:30
Jeroen Leenarts 3bae6c6f01 Crypto: Curve25519: Add explicit cast to supress conversion warning. 2018-10-27 15:13:01 +05:30
Roopesh Chander c68c214cbf Crypto: Add Curve25519 C code to project 2018-10-27 15:13:01 +05:30
Jeroen Leenarts c2abe9f011 Crypto: Add key generation functions 2018-10-27 15:13:01 +05:30
Roopesh Chander e6eef48c69 Tunnel creation: Hide 'Exclude private IPs' switch till the feature is ready 2018-10-27 15:13:01 +05:30
Roopesh Chander 3adb6cc15f Set Xcode template for smaller copyright headers 2018-10-27 15:13:01 +05:30
Roopesh Chander e0a8aedc3d Smaller copyright headers 2018-10-27 15:13:01 +05:30
Roopesh Chander a8138efefe Tunnel detail: Start off with the tunnel detail view 2018-10-27 15:13:01 +05:30
Roopesh Chander cd7d6d5152 Tunnel view model: Add copy public key 2018-10-27 15:13:01 +05:30
Roopesh Chander 6d4151eafa Tunnel creation: Variable renaming
s/interfaceEditFieldsBySection/interfaceFieldsBySection/g;
s/peerEditFieldsBySection/peerFieldsBySection/g;
2018-10-27 15:13:01 +05:30
Roopesh Chander 63f96b928a Tunnel view model: The view model applies for both editing and viewing 2018-10-27 15:13:01 +05:30
Roopesh Chander e8350b689f Tunnels list: Update when a tunnel is added 2018-10-27 15:13:01 +05:30
Roopesh Chander 0324cebe2b Tunnel creation: Saving a configuration 2018-10-27 15:13:01 +05:30
Roopesh Chander e0ee01db78 Model: Use DNSServer in the Configuration model 2018-10-27 15:13:01 +05:30
Roopesh Chander bebbaeaa93 Model for DNS server 2018-10-27 15:13:01 +05:30
Roopesh Chander 1b5ab9a72f Model: Endpoint host should not have invalid characters 2018-10-27 15:13:01 +05:30
Roopesh Chander c8fa6850c2 Model: listenPort and persistentKeepAlive should be 16-bit integers 2018-10-27 15:13:01 +05:30
Roopesh Chander 0fa97c38ed Tunnel creation: Refactor by creating a separate view model 2018-10-27 15:13:01 +05:30
Roopesh Chander 9f252d4e37 Tunnel creation: Validate the data and prepare to save to a configuration 2018-10-27 15:13:01 +05:30
Roopesh Chander 42c3d63d13 Tunnel creation: Save typed values in a scratchpad 2018-10-27 15:13:01 +05:30
Roopesh Chander d831bd44c4 Tunnel creation: Fix Persistent Keepalive label's look 2018-10-27 15:13:01 +05:30
Roopesh Chander bbd13ad4cf Tunnel creation: Start off with tunnel creation 2018-10-27 15:13:01 +05:30
Roopesh Chander e337427eae Model: Make InterfaceConfiguration and PeerConfiguration structs 2018-10-27 15:13:01 +05:30
Roopesh Chander 3e72dcade8 Model: Make it impossible to create invalid interface / peer configuration instances 2018-10-27 15:13:01 +05:30
Roopesh Chander 255b579f4d Use Endpoint in the Configuration model 2018-10-27 15:13:01 +05:30
Roopesh Chander 7482ee8cf5 Model for an endpoint 2018-10-27 15:13:01 +05:30
Roopesh Chander 1d01d1f85d Model: IPAddressRange: Converting to and from String 2018-10-27 15:13:01 +05:30
Roopesh Chander 945953177e Model: Name should be part of the interface, not the tunnel 2018-10-27 15:13:01 +05:30
Roopesh Chander e00a577bba Tunnels list: Show an actions list when the '+' is tapped 2018-10-27 15:13:01 +05:30
Roopesh Chander 0593a77d7a Tunnels list: Show data from the tunnels manager 2018-10-27 15:13:01 +05:30
Roopesh Chander 052ece53a3 Tunnels list: Make the table view style explicit 2018-10-27 15:13:01 +05:30
Roopesh Chander b690de0d14 VPN: Add TunnelsManager to manage the tunnels in the app 2018-10-27 15:13:01 +05:30
Roopesh Chander 66307fd3c5 Bump deployment target to iOS 12.0 2018-10-27 15:13:01 +05:30
Roopesh Chander f6054775ca Use IPAddressRange in the Configuration model 2018-10-27 15:13:01 +05:30
Roopesh Chander 0948363d5b Model for an IP Address range 2018-10-27 15:13:01 +05:30
Roopesh Chander 995320b958 Models for tunnel, interface and peer 2018-10-27 15:13:01 +05:30
Roopesh Chander 9443ee7e30 Configure the split-view controller to work in both iPhone and iPad 2018-10-27 15:13:01 +05:30
Roopesh Chander 50d660851a Change copyright to WireGuard LLC 2018-10-27 15:13:01 +05:30
Roopesh Chander 0c7321e923 Use a split-view controller as the main (root) view controller 2018-10-27 15:13:01 +05:30
Roopesh Chander 887678bbf9 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.
2018-10-27 15:13:01 +05:30
Roopesh Chander 8bd289c32f Prepare for rewrite: Move WireGuardNetworkExtension into the new project folder 2018-10-27 15:13:01 +05:30
Roopesh Chander be06f33acc 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.
2018-10-27 15:13:01 +05:30
Roopesh Chander 62987e7a32 Enable Network Extensions capability 2018-10-27 15:13:01 +05:30
Roopesh Chander c33cf18a2f Move App ID to Developer.xcconfig as well 2018-10-27 15:13:01 +05:30
Roopesh Chander d15a2ee88e Remove storyboard and create UI from code 2018-10-27 15:13:01 +05:30
Roopesh Chander 732309b2fe 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.
2018-10-27 15:13:01 +05:30
Roopesh Chander c647572b18 Create a new project in Xcode 2018-10-27 15:13:01 +05:30
Roopesh Chander 8df3d72615 Prepare for rewrite: Remove UI and model code 2018-10-27 15:13:01 +05:30
Jeroen Leenarts 94afded0d2 Better handling of CIDR values. 2018-10-03 21:34:51 +02:00
Jeroen Leenarts f27b4483da Disable auto corrects and related helpers on UITextfields. 2018-10-03 10:54:41 +02:00
Jeroen Leenarts e96a5c803f Export qr scanned config to system settings. 2018-10-03 10:48:49 +02:00
Jason A. Donenfeld 0f553856b1 Remove extra comment cruft 2018-10-03 01:21:59 +02:00
Jeroen Leenarts ae1af569d6 Remove a few prints, add some whitespace. 2018-10-02 22:36:39 +02:00
Jeroen Leenarts 03c257cfcc Add some form of image for when no configurations are available. 2018-10-02 21:33:24 +02:00
Jeroen Leenarts d12542a0c2 Dismiss qr scan vc on cancel. 2018-10-02 21:23:52 +02:00
Jeroen Leenarts 2fac395700 Handle persistentKeepAlive better. 2018-10-02 21:19:27 +02:00
Jeroen Leenarts 25ce33aa1f Add Wireguard logo to bottom of settings. 2018-10-02 21:14:47 +02:00
Jeroen Leenarts 93b1f31d45 Extract WireGuardGo version at build time. 2018-10-02 21:14:18 +02:00
Jeroen Leenarts 6fa7d7bfbf Deal with type body length warning. 2018-10-02 19:53:56 +02:00
Jeroen Leenarts 9ad7a2d3bd Copy public key through context menu. 2018-10-02 19:39:26 +02:00
Jason A. Donenfeld 9d01829a98 Rewrite bridge build system 2018-10-02 19:15:03 +02:00
Jeroen Leenarts 41e0459521 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. 2018-10-01 15:37:15 +02:00
Jeroen Leenarts 07be1c5398 Check and clear old configs on app start and app foreground. 2018-10-01 15:36:11 +02:00
Jeroen Leenarts d8946babba Add switch to info view controller. 2018-09-29 22:29:34 +02:00
Jeroen Leenarts f29776d8e8 Deal with zero or empty input better. 2018-09-26 11:43:13 +02:00
Jeroen Leenarts f669dd2015 Use trash instead of edit icon. 2018-09-26 11:27:24 +02:00
Jeroen Leenarts 406d72d8d9 Use message to extension to obtain version info. 2018-09-26 11:26:52 +02:00
Jeroen Leenarts 189e5181a5 Fixe base 64 regex format. 2018-09-26 11:23:13 +02:00
Jeroen Leenarts ae7e655e37 Add explicit cast to supress conversion warning. 2018-09-26 11:22:15 +02:00
Jeroen Leenarts 3f9858a655 Fixe file/function related warnings. 2018-09-26 11:21:53 +02:00
Jeroen Leenarts e27a3addb9 Not a gear but dots. 2018-09-26 10:24:52 +02:00
Jeroen Leenarts 2dc9392904 Present alert for title. 2018-09-25 22:30:16 +02:00
Jeroen Leenarts 0342415705 Remove default zeroes for listenPort and mtu. 2018-09-25 21:15:50 +02:00
Jeroen Leenarts 44c5b62c63 Ask for title when scaning a QR. 2018-09-25 20:59:15 +02:00
Jeroen Leenarts c296d6ed01 Move copy button a bit up towards title line. 2018-09-25 20:15:44 +02:00
Jeroen Leenarts de82b9f0af Settnings icon. 2018-09-25 20:10:29 +02:00
Jeroen Leenarts 4fdc8244a1 Report the correct number of rows in the info table view. 2018-09-20 00:44:24 +02:00
Jeroen Leenarts 336f30e3c9 Get rid of a few cosmetic lines. 2018-09-20 00:43:57 +02:00
Jeroen Leenarts 72465bd341 Make sure a scanned config is actually saved and displayed. 2018-09-20 00:43:43 +02:00
Jeroen Leenarts 2e2ffe8634 Support some form of rotation. 2018-09-20 00:28:07 +02:00
Jeroen Leenarts f51bef7673 Make sure correct layering is used to make sure hint remains visible. 2018-09-20 00:27:49 +02:00
Jeroen Leenarts a8796ca627 Add add from file within app. 2018-09-19 16:02:20 +02:00
Jeroen Leenarts 78530ca1a4 Add edit/done buttons to have a more discoverable way to remove tunnels. 2018-09-18 22:46:28 +02:00
Jeroen Leenarts 58b4f81356 Move add button to bottom toolbar. 2018-09-18 22:19:03 +02:00
Jeroen Leenarts 7f9d9d4509 Add settings screen. Move export as zip to settings screen. 2018-09-18 21:49:59 +02:00
Jeroen Leenarts 4d7c20e146 Spelling improvement in log statement. 2018-09-16 22:43:31 +02:00
Jeroen Leenarts c02c568000 Show public key on interface. Do not generate public key on peer on generate. Add public key copy buttons. 2018-09-16 22:38:32 +02:00
Jeroen Leenarts fabb6c907a Start a new peer without an allowed ips entry. 2018-09-16 21:23:20 +02:00
Jeroen Leenarts e53c959c00 New peers should begin with zero peers. 2018-09-16 21:22:00 +02:00
Jeroen Leenarts f9c2a82740 Back button for tunnel table view renamed to "Tunnels" 2018-09-16 21:19:14 +02:00
Jeroen Leenarts 65bf6d807d Clean up old school headers. 2018-09-16 21:17:54 +02:00
Jeroen Leenarts 0ec034501e 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.
2018-09-15 21:26:07 +02:00
Jeroen Leenarts 54aa2767b3 Add intermediate "Info" screen. 2018-09-15 21:24:52 +02:00
Jeroen Leenarts 39990ab480 Prevent crash on add and deletion of config. 2018-09-15 21:23:47 +02:00
Jeroen Leenarts 5df512d4fe Re-center app icon. 2018-09-15 20:29:28 +02:00
Jeroen Leenarts afd09fb5f0 Rename "WireGuard tunnels" to "WireGuard". 2018-09-15 20:27:14 +02:00
Jeroen Leenarts 562433468b Fix provisioning. 2018-09-15 20:26:17 +02:00
Jason A. Donenfeld 55c0242e84 Update bundle names 2018-09-15 02:22:10 +02:00
Jeroen Leenarts 6c49e9151a Switch copyright assignment from Jason to WireGuard LLC. 2018-09-06 07:42:23 +02:00
Jeroen Leenarts 2cd96f3105 Working zip import. 2018-09-05 20:25:54 +02:00
Jeroen Leenarts 989117a14c Remove item from provider managers on delete. 2018-09-05 20:25:32 +02:00
Jeroen Leenarts 676bf6c312 Make sure to refresh provider managers after saving. 2018-09-05 20:10:09 +02:00
Jeroen Leenarts dd899fa63d Import of zip. 2018-09-03 00:08:34 +02:00
Jeroen Leenarts ca35168dc9 Zip export. 2018-09-02 22:47:41 +02:00
Jeroen Leenarts 815f12c9a3 Add import and export logic. 2018-09-01 00:18:12 +02:00
Jeroen Leenarts fc70a92800 Add addresses, dns and mtu to export string. 2018-08-31 21:40:24 +02:00
Jeroen Leenarts 9af7ceac2e Add string conversion for tunnel config. 2018-08-29 15:01:59 +02:00
Jeroen Leenarts 217b632ccb Initial merge of rc's work. 2018-08-27 22:32:47 +02:00
Jeroen Leenarts acb7caa1f8 Move, modify and add key generation functions to project. 2018-08-27 13:38:50 +02:00
Eric Kuck dc5a99e0a3 Reworked main tableview switch layout & logic 2018-08-22 13:34:08 -05:00
Jeroen Leenarts 2c22d99d4d Use a Switch on each tunnel cell. 2018-08-21 22:27:44 +02:00
Jeroen Leenarts 5728a525c7 Line selection configures the tunnel. 2018-08-21 20:04:14 +02:00
Eric Kuck 5ef1656102 Added ability to add tunnels with a QR code scan. Logic in place to parse conf files as well. 2018-08-21 11:00:41 -05:00
Jeroen Leenarts 93e2264751 Extend validators to work for DNS entries as well. 2018-08-16 22:41:45 +02:00
Jeroen Leenarts 5363be2403 Use `commaSeparatedToArray` utility everywhere. 2018-08-16 22:39:08 +02:00
Jeroen Leenarts 792301e50e If the selected tunnel is not "enabled", make it enabled. 2018-08-16 22:05:22 +02:00
Jeroen Leenarts 11b43206ff Add on demand rule. 2018-08-16 22:04:35 +02:00
Jeroen Leenarts 6b57ca0d98 Do not perform optional try, this ate errors in the addressess and DNS input. 2018-08-16 22:03:40 +02:00
Eric Kuck 475b6abb5b Added validation before saving any tunnels
Signed-off-by: Eric Kuck <eric@bluelinelabs.com>
2018-08-15 17:34:16 -05:00
Jeroen Leenarts d6fcc10bd9 Remove old import. 2018-08-15 19:41:19 +02:00
Jeroen Leenarts 412b21a7ce Log on VPNStatusDidChange. 2018-08-12 21:50:54 +02:00
Jeroen Leenarts 6d977e13b2 Config tweaking. 2018-08-12 21:49:38 +02:00
Jeroen Leenarts 9ce5fccbd3 Add back addresses. 2018-08-12 21:37:56 +02:00
Jeroen Leenarts ca5d40c0d8 Fix config generation. 2018-08-09 22:45:28 +02:00
Jeroen Leenarts 126ea25ef1 Switch from using a single VPN manager to a VPN manager per configuration. 2018-08-08 07:04:42 +02:00
Jeroen Leenarts 1a4929964c Add tunnel provider identifier. 2018-08-08 06:59:56 +02:00
Jeroen Leenarts d449817a45 Generate split allowed IPs in protocol configuration. 2018-08-07 21:33:19 +02:00
Jeroen Leenarts cf0ccbf0d1 Remove Address and related code. 2018-08-06 23:28:52 +02:00
Jeroen Leenarts bde972d96f Remove incorrect core data model fields. 2018-08-06 09:04:54 +02:00
Jeroen Leenarts a6b2f2edca Add provider configuration generation. 2018-08-06 09:04:29 +02:00
Jeroen Leenarts ea44b6de20 Fix binding. 2018-08-05 19:05:41 +02:00
Jeroen Leenarts 2941f0eb71 Add default allowed IPs. 2018-08-05 15:58:01 +02:00
Jeroen Leenarts 675a17f51a Assign correct copyright. 2018-08-05 07:48:36 +02:00
Jeroen Leenarts 1dc70297f6 A server address is required for proper saving of protocol configuration. 2018-08-04 22:49:37 +02:00
Jeroen Leenarts 43d5534d22 Remove some silly TODOs. 2018-08-04 22:49:03 +02:00
Jeroen Leenarts a4db2d4f3e Add NETunnelProviderManager management to AppCoordinator. 2018-08-04 21:28:19 +02:00
Jeroen Leenarts 0f1aa701df Change copyright notice. 2018-07-15 11:55:41 +02:00
Jeroen Leenarts 6344f3d25f Start wire-up of logging and tunnel system. 2018-07-07 22:54:44 +02:00
Jason A. Donenfeld fa8338ef7a Fix bizarre name 2018-06-23 02:15:43 +02:00
Jeroen Leenarts bb1e05f9db Objective-C wrapper around WireguardGo. 2018-06-22 08:23:39 +02:00
Jeroen Leenarts 25bcb708ae Allow adding and deleting peers. 2018-05-29 22:47:52 +02:00
Jeroen Leenarts 42f278ff49 Allow adding unvalidated config. 2018-05-29 22:21:44 +02:00
Jeroen Leenarts 0b2f004f62 Wire up TunnelConfigurationTableViewController. 2018-05-27 22:38:44 +02:00
Jeroen Leenarts a59215110b A config having zero peers is allowed. 2018-05-27 14:23:36 +02:00
Jeroen Leenarts a0cf47606a We are dealing with not just any tunnel, but with WireGuard tunnels. 2018-05-27 14:23:13 +02:00
Jeroen Leenarts 7ce3288939 Deal with final folder name issues due to Apple's case insensitive case preserving behavior. 2018-05-27 14:20:15 +02:00
Jeroen Leenarts b98ade57c4 Add trash can icon. 2018-05-26 09:41:19 +02:00
Jeroen Leenarts 6bf3d5021e Some casing trouble in WireGuard strings. 2018-05-26 09:41:09 +02:00
Jeroen Leenarts 1c43581ce5 Everything is a tunnel. 2018-05-26 09:17:36 +02:00
Jeroen Leenarts 6f59c27220 Add bare bones `ProfileConfigurationTableViewController`. 2018-05-24 22:07:04 +02:00
Jeroen Leenarts e528429f0c Basic setup of ConnectionsTableViewController. 2018-05-24 20:16:17 +02:00