Commit Graph

564 Commits

Author SHA1 Message Date
Jason A. Donenfeld 545eae8d95 Revert pure-go network monitoring and add wgSetConfig
This reverts commit 99f0e457c3 and adds a
function too.
2018-12-11 22:25:54 +01:00
Roopesh Chander 4e70455800 State restoration: Don't create duplicate mainVC and tunnelsListVC
This creates a duplicate tunnels manager, leading to problems tracking
tunnel statuses.

To reproduce the bug that this commit fixes, you can do the following:
 1. Remove all tunnels
 2. Run in Xcode
 3. Import zip with ~10 tunnels
 4. Stop app in Xcode
 5. Run in Xcode
 6. Turn on 1st tunnel, after it's on, turn off
    Turn on 2nd tunnel, after it's on, turn off
    ...
    After 6-8 tunnels, the spinner doesn't show up, indicating that the
    status is not being tracked.
2018-12-11 17:52:54 +05:30
Roopesh Chander 4d6a21f14e TunnelsManager: Error out only on no-internet scenario
The other scenario happens even during reloading of a tunnel for activation.
2018-12-11 03:48:28 +05:30
Roopesh Chander 0c913d0dbc Remove the feature of waiting for another tunnel to deactivate 2018-12-11 03:47:23 +05:30
Roopesh Chander 39ac53d853 TunnelsManager: Deactivate only when the status becomes 'connected' 2018-12-11 02:42:21 +05:30
Roopesh Chander 56730ef048 Allow turning off the status switch of a waiting tunnel
It just means the waiting should be cancelled
2018-12-11 02:01:54 +05:30
Roopesh Chander 9906689122 TunnelsManager: Handle status change in TunnelsManager
Rather than in TunnelContainer.
2018-12-11 02:01:49 +05:30
Roopesh Chander 305264d064 Error handling: alertText() can be nil
Indicating that no alert is to be shown for that error.
2018-12-11 00:34:22 +05:30
Roopesh Chander d3ba76def3 TunnelsManager: Don't act on status change on tunnelProviders we don't have
That causes errors we don't want, and duplicate notifications.
2018-12-10 17:03:23 +05:30
Roopesh Chander 94b81fc577 TunnelsManager: Always call the completion handler before returning 2018-12-10 17:01:53 +05:30
Roopesh Chander 0472527617 TunnelsManager: Debugging helpers for tunnel status 2018-12-10 16:31:36 +05:30
Roopesh Chander 66bb9c94d4 TunnelsManager: Handle deactivation of a waiting tunnel 2018-12-10 16:28:41 +05:30
Roopesh Chander 42729a0fe7 Tunnels list: Fix AutoLayout error during deletion of a tunnel 2018-12-10 12:59:31 +05:30
Roopesh Chander c375d01199 Settings: Dynamic Type support 2018-12-10 01:45:34 +05:30
Roopesh Chander 9bdfabee6a Tunnel edit: Dynamic Type support 2018-12-10 01:45:34 +05:30
Roopesh Chander 3e27a9ddb0 Tunnel detail: Dynamic Type support 2018-12-10 01:45:34 +05:30
Roopesh Chander 527c1fcb37 Tunnels list: Dynamic Type support for the add button at the center 2018-12-09 18:13:37 +05:30
Roopesh Chander 3a7dbc6e37 Tunnels list: Dynamic Type support for the table view 2018-12-09 18:13:04 +05:30
Roopesh Chander af018988b4 Model: Declare keyLength constant and use that wherever applicable 2018-12-09 14:07:03 +05:30
Roopesh Chander 34a21098fc TunnelsManager: Observe status for all tunnels in one block 2018-12-08 18:43:24 +05:30
Roopesh Chander d7762f5055 TunnelsManager: Remove unused variables 2018-12-08 15:00:26 +05:30
Roopesh Chander ada1b659a8 Zip: Fix comment 2018-12-08 13:43:00 +05:30
Jason A. Donenfeld 01ec87ddee Version bump 2018-12-07 23:58:53 +01:00
Jason A. Donenfeld 9992322186 PacketTunnelProvider: Show log timestamp 2018-12-07 23:56:26 +01:00
Jason A. Donenfeld 99f0e457c3 wireguard-go-bridge: account for network changes
Everytime the network changes, we need to recreate the UDP socket,
because the ephemeral listen port is tied to the old physical interface.
As well, we need to re-set the IP addresses for each endpoint, so that
they're passed to getaddrinfo and are then resolved using DNS46.
2018-12-07 21:50:19 +01:00
Roopesh Chander 2e5d467bc7 Zip: Increase size of buffer used to read data from the archive 2018-12-08 02:17:55 +05:30
Roopesh Chander aa915fc54c Settings: Export log: Perform file operations in a background thread 2018-12-08 02:17:55 +05:30
Roopesh Chander 3af543a352 On-Demand: TunnelViewModel: Make activate-on-demand methods static 2018-12-08 02:17:23 +05:30
Roopesh Chander 4f98330bc0 On-Demand: Move detail text to TunnelViewModel 2018-12-08 02:17:15 +05:30
Jason A. Donenfeld 8227e77111 Plist: Handle crypto export 2018-12-07 18:52:14 +01:00
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