Roopesh Chander
4a4eeb4a21
macOS: s/macMenuStatus/macStatus/g;
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:31 +05:30
Roopesh Chander
ada7db3dca
macOS: Manage tunnels: Tunnel detail view
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:31 +05:30
Roopesh Chander
c946c0ea48
macOS: Manage tunnels: Add a filler button
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:31 +05:30
Roopesh Chander
4a4690b5fa
macOS: Manage tunnels: Fix list view look
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:31 +05:30
Roopesh Chander
37fce31d16
macOS: Manage tunnels: Add buttons to the bottom of the list view
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:30 +05:30
Roopesh Chander
7934d6b0c7
macOS: Manage tunnels window: Tunnels list
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:30 +05:30
Roopesh Chander
98e9088aba
macOS: Capitalize All Rights Reserved
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:30 +05:30
Roopesh Chander
2c81c3a379
macOS: Show status as disabled menu items
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:30 +05:30
Roopesh Chander
04f6ee0f11
macOS: Ability to activate / deactivate a tunnel
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:30 +05:30
Roopesh Chander
545f8c88f4
macOS: Ability to import tunnels from file
...
For now, the open panel shows as a separate window.
Later, we'll open it as a sheet on the 'Manage tunnels' window.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:30 +05:30
Roopesh Chander
6a27626fc0
iOS: Refactor importFromFile
...
So that it can be used in macOS as well
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:29 +05:30
Roopesh Chander
fb1607d4a2
macOS: Add tunnel management menu items
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:29 +05:30
Roopesh Chander
51a2c272b9
macOS: Specify app is an 'agent'
...
This hides the app from the Dock, while still enabling the app
to come to the foreground if required.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:29 +05:30
Roopesh Chander
b5751b6321
macOS: Create status bar with tunnel names
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:29 +05:30
Roopesh Chander
110012dbcc
macOS: Add status bar icon
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:29 +05:30
Roopesh Chander
5c7a149167
macOS: Remove MainMenu.xib
...
When there's no xib, we should explicitly set the app delegate, so we
override NSApplication and set the app delegate in NSApplication.shared
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:29 +05:30
Roopesh Chander
629009d3be
macOS: NE: Add entitlements for making network connections
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:28 +05:30
Roopesh Chander
d7d4355f5e
Make app groups work on both iOS and macOS
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:28 +05:30
Roopesh Chander
55d6961a2f
macOS: Add Network Extensions capability to app
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:28 +05:30
Roopesh Chander
c8cd663a05
iOS: Fix WireGuardNetworkExtensioniOS target
...
- Rename WireGuardNetworkExtension.entitlements to WireGuardNetworkExtension_iOS.entitlements
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:28 +05:30
Roopesh Chander
a754c4d7ab
iOS: Fix WireGuardiOS target
...
- Move Info.plist and entitlements to WireGuard/UI/iOS/
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:28 +05:30
Roopesh Chander
95415cd917
macOS: Fix WireGuardmacOS target
...
- Include non-UI code from iOS while building
- Add run scripts
- Move files to WireGuard/UI/macOS
- Set Swift-Obj-C bridging header
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:28 +05:30
Roopesh Chander
b32b897181
macOS: Fix WireGuardNetworkExtensionmacOS target
...
- Build using common network extension code
- Add run scripts
- Set Info.plist to common network extension's Info.plist
- Move entitlements to common network extension folder
- Remove Xcode-generated macOS network extension code
- Set Swift-Obj-C bridging header
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:27 +05:30
Roopesh Chander
d5c1acb57e
macOS: WireGuardNetworkExtensionmacOS depends on WireGuardGoBridgemacOS
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:27 +05:30
Roopesh Chander
573f9640de
macOS: Add WireGuardNetworkExtensionmacOS target
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:27 +05:30
Roopesh Chander
f6772dc353
macOS: Add WireGuardmacOS target
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:27 +05:30
Roopesh Chander
0cbe66df99
Xcode: Add WireGuardGoBridgemacOS target
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:27 +05:30
Roopesh Chander
3cd33ebe8f
Move iOS images and storyboard into UI/iOS/ folder
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:27 +05:30
Roopesh Chander
c7a40d3cb0
Xcode: Rename iOS targets to include an 'iOS' suffix
...
But keep the PRODUCT_NAME as 'WireGuard', not 'WireGuardiOS'.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:26 +05:30
Roopesh Chander
d02b0fd10e
xcconfig: Make app id platform-specific
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:26 +05:30
Roopesh Chander
09d7a5229a
On-Demand: Add support for macOS-specific values
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:26 +05:30
Roopesh Chander
1ca5407b85
wireguard-go-bridge: Make CFLAGS_PREFIX work for macOS as well
...
For macOS, Xcode doesn't set DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX,
but does set DEPLOYMENT_TARGET_CLANG_FLAG_NAME.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:26 +05:30
Roopesh Chander
10982a57ef
import Foundation instead of UIKit wherever possible
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2019-01-14 14:52:26 +05:30
Roopesh Chander
c563a24348
minizip: Remove zip encryption code
...
We can now remove -DNOCRYPT cflag while compiling
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-25 12:48:04 +05:30
Roopesh Chander
808852c547
Tunnel edit: Fix crash
...
This fixes a crash that happens when you:
1. Scroll to the end of the Edit screen
2. Delete a peer
3. Toggle the Activate On Demand switch
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-24 13:01:21 +05:30
Roopesh Chander
999b761ed0
Remove more comments
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-23 00:31:44 +05:30
Roopesh Chander
d29f47fc9b
Don't set username on NETunnelProviderProtocol
...
The username corresponds to the Account field in iOS system VPN UI,
but if we don't set it, the field is not shown, so setting it isn't
really required.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-22 16:13:31 +05:30
Roopesh Chander
e6e1795d08
TunnelErrors: Add alert text for PacketTunnelProviderError
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-22 16:05:43 +05:30
Roopesh Chander
fd29cf3402
TunnelStatus: Absorb NEVPNStatus+CustomStringConvertible
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-22 15:46:28 +05:30
Roopesh Chander
a21c569e9f
NE: Simplify DNS resolution
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-21 19:24:22 +05:30
Roopesh Chander
0552d75aa1
Localize all the things
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-21 18:34:09 +05:30
Roopesh Chander
e47a8232d8
Tunnel detail: iPad: Handle deletion of tunnel correctly
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-21 18:02:18 +05:30
Roopesh Chander
f818cdd963
NE: Update listen port only when first interface changes
...
When handling network path changes, change the listen port
only when the first interface has changed.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-21 17:32:44 +05:30
Roopesh Chander
28ce4d5164
NE: Change handling of bad domain names and Activate On Demand
...
The solution implemented in commit b8c331c causes the tunnel to
remain in 'Activating' state, without the ability to cancel that.
So, in this commit, instead of retrying DNS silently on
Activated-On-Demand tunnels, we fail the startTunnel() silently.
To summarize, if activate-on-demand is on:
- If started from the WireGuard app, show error using lastErrorFile
mechanism, suggesting a way to turn off Activate On Demand
- If not started from WireGuard app, don't call displayMessage()
(don't show error to user) and silently fail starting the tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-21 15:52:47 +05:30
Roopesh Chander
de08978a80
TunnelErrors: Remove unused error
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-20 19:44:57 +05:30
Roopesh Chander
9268c0c4bc
Tunnel edit: init() need not take a tunnelConfiguration argument
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-19 18:35:53 +05:30
Roopesh Chander
5c501ac9a6
NE: Log whether tunnel was activated from the app or not
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-19 18:35:53 +05:30
Roopesh Chander
35450bf407
Remove non-helpful comments
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-19 18:35:53 +05:30
Roopesh Chander
f93c9797ea
Tunnel edit: Fix comment
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-19 18:35:53 +05:30
Roopesh Chander
bba6d2f919
TunnelsManager: If only Activate On Demand has changed, don't restart tunnel
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-19 18:35:53 +05:30
Roopesh Chander
fa51e3f1d1
NE: Handle bad domain names and Activate On Demand
...
This combination causes iOS to keep trying to bring up the tunnel,
leading to a lot of displayMessage() alerts.
In this fix, if we get a DNS resolution error in an Activate On Demand
enabled tunnel, we silently retry 9 times (with a 4-second delay before
each retry) and then show the displayMessage() alert.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-19 15:38:00 +05:30
Roopesh Chander
04a8c2ff5a
NE: No need for two startTunnel() methods
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-19 13:10:42 +05:30
Roopesh Chander
4e516d6769
TunnelsManager: Handle waiting on a stale tunnel
...
If we have a stale tunnel on which we don't get status updates we rely
on a timer to update the status (see commit 34a7e5b). Previously, if
the user tries to activate another tunnel, that resulted in both tunnels
waiting indefinitely. This commit fixes that.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-19 12:48:10 +05:30
Roopesh Chander
fab7af6f38
Remove buttons and text from LaunchScreen.storyboard
...
With state restoration, we're not guaranteed that the
list view will get shown immediately after the launch screen.
So, generalize the launch screen as much as possible.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-18 23:00:27 +05:30
Roopesh Chander
3ae9fb538d
s/Observervation/Observation/g;
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-18 23:00:27 +05:30
Roopesh Chander
78eaab8b5b
Tunnel detail: Update restorationIdentifier when tunnel name changes
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-18 19:27:31 +05:30
Roopesh Chander
20f8abdf04
TunnelsManager: Add periods to end the system error messages
...
Because they can be part of a multi-sentence message when displayed
in the alert.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-18 15:47:20 +05:30
Roopesh Chander
2582ddd6f6
Error handling: Add info on the underlying system error to error alerts
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-17 19:04:17 +05:30
Roopesh Chander
2a22c0f2d6
Provide mock tunnels for the Simulator
...
To help in generation of screenshots for the App Store
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-16 01:15:10 +05:30
Roopesh Chander
c4263da231
Fix tunnel remaining in 'Activating' state
...
It uses to remain in 'Activating' state when we don't get a status
update notification, for example, when turning on the tunnel repeatedly
without Internet connectivity.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-14 17:33:56 +05:30
Roopesh Chander
1eb3fd4de0
Fix status switch weird state after an error occurs
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-14 16:50:36 +05:30
Roopesh Chander
48552d2663
NE: Communicate last error to app through a shared file
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-14 02:24:53 +05:30
Roopesh Chander
501e412b84
TunnelsManager: startActivation() need not take a tunnelConfiguration
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-14 00:40:18 +05:30
Roopesh Chander
b256acc372
TunnelsManager: Remove mentions of 'internal error'
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 23:53:17 +05:30
Roopesh Chander
7e093575a4
TunnelsManager: Ask to check Internet connectivity in error alert
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 23:49:42 +05:30
Roopesh Chander
740ffd68b6
Remove unused code: InternetReachability
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 23:45:21 +05:30
Roopesh Chander
f67e1d8fc4
TunnelsManager: Remove unused variable
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 23:44:13 +05:30
Roopesh Chander
33af8845b6
TunnelsManager: Remove assert
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 23:43:15 +05:30
Roopesh Chander
3bddab8a9e
TunnelsManager: Fix race between multiple startActivation() calls
...
After startActivate() is called on a waiting tunnel, user might turn
on a different tunnel before the waiting tunnel's status gets updated.
This fix prevents that from happening.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 23:34:00 +05:30
Roopesh Chander
f9239dae75
TunnelsManager: Reintroduce waiting for another tunnel to deactivate
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 23:21:49 +05:30
Roopesh Chander
bf58159d99
TunnelsManager: Report activation errors through the activationDelegate
...
Don't report activation errors through completion handlers
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 18:56:07 +05:30
Roopesh Chander
efd4b28a0d
Logging: Write versions from both app and extension
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 18:09:38 +05:30
Roopesh Chander
ae565db371
Logging: file_log doesn't need the message type
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 18:06:57 +05:30
Roopesh Chander
e199ed0d6c
Logging: Tag the entries in the merged log
...
So we know which entry is from the app and which is from the network
extension.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 18:00:32 +05:30
Roopesh Chander
ba1d0c05be
Logging: Use ringlogger for logging from the app
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 17:37:20 +05:30
Roopesh Chander
12503ae51d
Logging: ringlogger.c: Trim trailing newlines
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 17:37:14 +05:30
Roopesh Chander
ae7fb7323f
Logging: Use ringlogger for logging from the extension
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 17:37:14 +05:30
Roopesh Chander
5ae9eec555
Avoid using 'VPN' in code where possible
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 12:20:10 +05:30
Roopesh Chander
6528a581de
mv WireGuard/WireGuard/VPN/ WireGuard/WireGuard/Tunnel/
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-13 12:14:21 +05:30
Roopesh Chander
af78fa9a1c
Zip importing: importFromFile should take a completionHandler
...
Deletion of the being-imported file should be done in the
completionHandler.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-12 19:24:18 +05:30
Roopesh Chander
7ef12d93a7
ErrorPresenter: Support onPresented for showErrorAlert(title:,message:)
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-12 19:17:06 +05:30
Roopesh Chander
8259145f85
Zip importing: Handle spaces in filenames correctly
...
Previously, if a filename of a .conf file inside the zip file
contained spaces, it was not imported.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-12 16:57:17 +05:30
Roopesh Chander
bde984625c
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.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-11 17:52:54 +05:30
Roopesh Chander
1ded24f0e0
TunnelsManager: Error out only on no-internet scenario
...
The other scenario happens even during reloading of a tunnel for activation.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-11 03:48:28 +05:30
Roopesh Chander
1fd0c56f08
Remove the feature of waiting for another tunnel to deactivate
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-11 03:47:23 +05:30
Roopesh Chander
e59dbe6364
TunnelsManager: Deactivate only when the status becomes 'connected'
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-11 02:42:21 +05:30
Roopesh Chander
4d63a3e9bd
Allow turning off the status switch of a waiting tunnel
...
It just means the waiting should be cancelled
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-11 02:01:54 +05:30
Roopesh Chander
9946d8f989
TunnelsManager: Handle status change in TunnelsManager
...
Rather than in TunnelContainer.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-11 02:01:49 +05:30
Roopesh Chander
15b6cf5412
Error handling: alertText() can be nil
...
Indicating that no alert is to be shown for that error.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-11 00:34:22 +05:30
Roopesh Chander
851bd8102d
TunnelsManager: Don't act on status change on tunnelProviders we don't have
...
That causes errors we don't want, and duplicate notifications.
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-10 17:03:23 +05:30
Roopesh Chander
0d7a585bf7
TunnelsManager: Always call the completion handler before returning
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-10 17:01:53 +05:30
Roopesh Chander
663bb02c68
TunnelsManager: Debugging helpers for tunnel status
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-10 16:31:36 +05:30
Roopesh Chander
b491b9c371
TunnelsManager: Handle deactivation of a waiting tunnel
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-10 16:28:41 +05:30
Roopesh Chander
707f292e4e
Tunnels list: Fix AutoLayout error during deletion of a tunnel
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-10 12:59:31 +05:30
Roopesh Chander
aa41bd7d6c
Settings: Dynamic Type support
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-10 01:45:34 +05:30
Roopesh Chander
ec5be76d06
Tunnel edit: Dynamic Type support
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-10 01:45:34 +05:30
Roopesh Chander
692b0c6519
Tunnel detail: Dynamic Type support
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-10 01:45:34 +05:30
Roopesh Chander
bb836b8fdc
Tunnels list: Dynamic Type support for the add button at the center
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-09 18:13:37 +05:30
Roopesh Chander
8eda4641ca
Tunnels list: Dynamic Type support for the table view
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-09 18:13:04 +05:30
Roopesh Chander
60e13ddbf6
Model: Declare keyLength constant and use that wherever applicable
...
Signed-off-by: Roopesh Chander <roop@roopc.net >
2018-12-09 14:07:03 +05:30