Commit Graph

518 Commits

Author SHA1 Message Date
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
Roopesh Chander fc93ca65a5 Remove unused code 2018-11-09 19:20:33 +05:30
Roopesh Chander fefa39de46 TunnelsManager: Ability to refresh connection statuses 2018-11-09 19:19:32 +05:30
Roopesh Chander c9c58f3755 NE: When there's an error starting the tunnel, show it to the user using displayMessage() 2018-11-09 17:07:42 +05:30
Roopesh Chander fffaba451a Remove unused file PacketTunnelOptionKey.swift 2018-11-08 18:59:16 +05:30
Roopesh Chander c0f9c01fb9 Move logic to extension: Bring up the tunnel from the stored providerConfiguration 2018-11-08 18:59:16 +05:30
Roopesh Chander df7197473e DNSResolver: Simplify 2018-11-08 17:52:11 +05:30
Roopesh Chander 40ce2604ea DNSResolver: Let's not cache DNS resolution results anymore 2018-11-08 17:52:11 +05:30
Roopesh Chander 7bde4a6300 DNSResolver: DNS resolution can now happen synchronously 2018-11-08 17:52:11 +05:30
Roopesh Chander 8f35d70482 Model: Endpoint.hostname() 2018-11-08 17:52:11 +05:30
Roopesh Chander e83af4bce5 Move logic to extension: NETunnelProviderProtocol extension code should be shared 2018-11-08 17:52:01 +05:30
Roopesh Chander 80e563406b Move logic to extension: Refactor PacketTunnelOptionsGenerator into a PacketTunnelSettingsGenerator 2018-11-08 15:44:13 +05:30
Roopesh Chander 13eebb2e64 Move logic to extension: Move DNSResolver to extension 2018-11-08 15:09:45 +05:30
Roopesh Chander 3f3f22a048 Move logic to extension: .resolvingEndpointDomains is not longer a valid status 2018-11-08 15:08:57 +05:30
Roopesh Chander 7c9d45ac97 Move logic to extension: DNS resolution no longer happens in the app 2018-11-08 15:04:12 +05:30
Roopesh Chander 6e5b691a83 Move logic to extension: Include shared model code when building the extension 2018-11-08 14:50:05 +05:30
Roopesh Chander 2afb2244ff Model: Move InterfaceConfiguration.publicKey to Curve25519.swift
The code for public key calculation need not be shared with the extension
2018-11-08 14:48:25 +05:30