Commit Graph

441 Commits

Author SHA1 Message Date
Jason A. Donenfeld f8f922eda9 Make strings consistent 2018-12-07 18:52:14 +01:00
Roopesh Chander 880ea9237e State restoration: Restore tunnel detail view 2018-12-07 19:05:08 +05:30
Roopesh Chander 059fc77c61 Main VC: No need to refresh statuses if the tunnelsManager isn't initialized yet 2018-12-07 15:52:47 +05:30
Roopesh Chander 800cb8559e Tunnels list: Deselect rows correctly
Do it like UITableViewController.clearsSelectionOnViewWillAppear would.
2018-12-07 12:36:23 +05:30
Roopesh Chander c3a3effd82 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
2018-12-07 12:36:19 +05:30
Roopesh Chander 24de510ea6 Error handling: Use ErrorPresenter.showErrorAlert() instead of per-VC showErrorAlert() methods 2018-12-07 12:36:19 +05:30
Roopesh Chander cc39342e6e Error handling: Use WireGuardAppError and WireGuardResult throughout the app 2018-12-07 12:36:19 +05:30
Roopesh Chander 8d58a79272 Error handling: Introduce a WireGuardResult type to handle errors in callbacks across the app 2018-12-07 12:36:19 +05:30
Roopesh Chander 5aee6f5753 Error handling: Introduce a WireGuardAppError protocol to manage errors
The alert strings shall be located next to where the errors are declared.
2018-12-07 12:36:19 +05:30
Roopesh Chander 80dcd2bd77 Error handling: Cleanup Tunnels Manager errors 2018-12-07 12:36:19 +05:30
Roopesh Chander 5ed47c5898 Error presenter: Always handle the passed error 2018-12-07 12:36:19 +05:30
Roopesh Chander 6cb5719d4e Tunnel detail: Cell status switch should be toggled only after the alert presentation completes 2018-12-07 12:36:19 +05:30
Roopesh Chander 205585c5d4 Refactoring: Consolidate file deletion into a separate function 2018-12-07 12:36:19 +05:30
Roopesh Chander 5764fa4930 NE: Logging: Log file should begin with version numbers and tunnel name 2018-12-07 12:36:19 +05:30
Roopesh Chander 07fbb7c4ad NE: Logging: Make it clear which calls to wg_log use String and which use StaticString 2018-12-04 15:58:53 +05:30
Roopesh Chander fe3722fada Settings: Add timestamp to exported log
And remove the exported log afterwards.
2018-12-04 14:12:53 +05:30
Roopesh Chander 400288b02a Refactor out VPN-handling stuff from tunnels list VC to the main VC 2018-12-03 18:51:51 +05:30
Roopesh Chander 981b86d357 VPN: Error out when tunnel activation fails because there's no internet 2018-12-03 18:51:42 +05:30
Roopesh Chander a1aa13d553 Settings: Export log file 2018-12-02 13:26:53 +05:30
Roopesh Chander 67268a0ce5 NE: Write log to file 2018-11-30 00:36:33 +05:30
Roopesh Chander 64175071fa Info.plist: Add app group id for accessing from both the app and the network extension 2018-11-29 14:05:27 +05:30
Roopesh Chander 41aca352a7 Xcode: Add app groups capability 2018-11-29 12:01:45 +05:30
Roopesh Chander 5f6cd9d8b6 It's 'WiFi', not 'Wifi' 2018-11-28 12:41:35 +05:30
Roopesh Chander ff64ef79f1 NE: All DNS queries must first go through the VPN's DNS servers 2018-11-23 13:04:55 +05:30
Roopesh Chander af49397caa Tunnel view model: Invalidate the configuration object when updating allowedIPs using the 'Exclude private IPs' switch 2018-11-19 15:22:27 +05:30
Roopesh Chander 643e988f74 Config file parser: Be case-insensitive to attribute keys in the config file 2018-11-19 12:37:54 +05:30
Roopesh Chander ccd8e784f3 Config file parser: Fix typo 2018-11-17 22:52:37 +05:30
Roopesh Chander b5689edf71 Exporting: Export to zip in a background thread 2018-11-15 13:39:56 +05:30
Roopesh Chander 6857a579b3 Exporting: Refactor out zip exporting into a separate class 2018-11-15 13:39:56 +05:30
Roopesh Chander 7f2772473e Exporting: No need to check for duplicate names - we disallow it at creation time itself 2018-11-15 13:39:56 +05:30
Roopesh Chander 1a419526e7 Importing: Import from zip in a background thread 2018-11-15 13:39:56 +05:30
Roopesh Chander b2b2818e2e Importing: Refactor out zip importing into a separate class 2018-11-14 18:52:10 +05:30
Roopesh Chander ed1bae8ad0 Tunnels manager: After saving after activating on-demand, reload tunnel 2018-11-14 13:02:53 +05:30
Roopesh Chander 6da2b4d0be 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.
2018-11-12 19:24:13 +05:30
Roopesh Chander 8385e8d19e Tunnel detail: Show VPN-on-demand information 2018-11-12 19:24:13 +05:30
Roopesh Chander dc19529f10 Tunnels manager: Keep track of NETunnelProviderManager's isOnDemandEnabled property 2018-11-12 19:24:13 +05:30
Roopesh Chander e708e26a00 Tunnel edit: Update for VPN-on-demand changes 2018-11-12 19:24:13 +05:30
Roopesh Chander 1caa186ebc Tunnel view model: VPN-on-demand stuff shouldn't be part of the tunnel model 2018-11-12 19:24:13 +05:30
Roopesh Chander c0eb34c755 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.
2018-11-12 19:24:13 +05:30
Roopesh Chander b09f3e3992 TunnelsManager: Support for on-demand rules 2018-11-11 01:31:38 +05:30
Roopesh Chander 151ad9de84 Tunnel edit, Tunnel view model: UI for providing On-Demand activation options 2018-11-11 01:18:36 +05:30
Roopesh Chander 049e9f0b05 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.
2018-11-11 01:17:36 +05:30
Roopesh Chander 75474acb59 Model: ActivityType enum to represent VPN-on-demand options 2018-11-10 19:17:24 +05:30
Roopesh Chander ae627c5e5d Model: TunnelConfiguration: Add explicit conformance to Decodable 2018-11-10 19:01:34 +05:30
Roopesh Chander 0db19f187b Model: Ensure that a TunnelConfiguration always has a valid array of peers 2018-11-10 17:02:30 +05:30
Roopesh Chander e974b7df23 VPN: When activating while another tunnel is active, deactivate the other tunnel 2018-11-10 16:44:28 +05:30
Roopesh Chander e6917a6075 TunnelsManager: startDeactivation() need not take a completion handler
Because the completion handler pattern doesn't fit in this case.
2018-11-10 16:44:28 +05:30
Roopesh Chander 97d8570d99 VPN: There are no DNS errors to handle in the app now 2018-11-10 16:44:28 +05:30
Roopesh Chander 6d28240531 NE: Minor refactoring to enable calling startTunnel() with a tunnelConfiguration 2018-11-09 22:29:52 +05:30
Roopesh Chander 9568c7f980 VPN: Refresh tunnel statuses when app gets to the foreground
Because the tunnel could've be activated from iOS Settings now
2018-11-09 19:29:34 +05:30