Commit Graph

98 Commits

Author SHA1 Message Date
Jason A. Donenfeld
6134817b23 Global: fix swiftlint issues 2019-02-08 17:07:28 +01:00
Jason A. Donenfeld
657915e931 Info.plist: Add missing key types
I worry that LSMinimumSystemVersion in the extension's plist might be
problematic, since that same plist runs on macOS and iOS. We _might_
need to bifurcate.
2019-02-08 03:47:36 +01:00
Jason A. Donenfeld
7ebf36d0f4 Key: Use C implementation instead
Swift compiles so slowly and it's unclear all of the insane type punning
was even correct.
2019-02-08 03:23:15 +01:00
Jason A. Donenfeld
e2c717212b Key: Constant time encoding 2019-02-08 03:23:15 +01:00
Jason A. Donenfeld
2d761b4a00 PacketTunnelProvider: proper fix for 32073323 2019-02-07 15:01:37 +01:00
Jason A. Donenfeld
0407d41005 Keychain: store configurations in keychain instead of providerConfig 2019-02-06 06:20:23 +01:00
Jason A. Donenfeld
fef3e80472 Tunnel: support getting runtime configuration 2019-01-24 01:37:57 +01:00
Jason A. Donenfeld
d3db8519b0 macOS: remove mobile network tweeks 2019-01-22 13:11:28 +01:00
Roopesh Chander
ca827d2d10 Better os() directives 2019-01-22 04:06:37 +05:30
Roopesh Chander
670673cccc macOS: Use tunnelOverheadBytes for automatic MTU in macOS 2019-01-16 01:51:56 +05:30
Roopesh Chander
1e543f7f8c macOS: NE: Add entitlements for making network connections 2019-01-14 14:52:28 +05:30
Roopesh Chander
c41be2a29d Make app groups work on both iOS and macOS 2019-01-14 14:52:28 +05:30
Roopesh Chander
2632ead1bf iOS: Fix WireGuardNetworkExtensioniOS target
- Rename WireGuardNetworkExtension.entitlements to WireGuardNetworkExtension_iOS.entitlements
2019-01-14 14:52:28 +05:30
Roopesh Chander
966883ea05 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
2019-01-14 14:52:27 +05:30
Roopesh Chander
8715b66caa xcconfig: Make app id platform-specific 2019-01-14 14:52:26 +05:30
Jason A. Donenfeld
a266171157 PacketTunnelSettingsGenerator: use 127.0.0.1 as dummy address
It turns out that using 0.0.0.0 somehow conflicts with DNS lookups when
CLAT is in use.
2019-01-08 01:51:12 +01:00
Jason A. Donenfeld
83cc642b34 Avoid dynamic MTU calculations for now 2019-01-07 19:23:39 -05:00
Jason A. Donenfeld
7bf3d7b09d Update copyright 2019-01-07 19:23:39 -05:00
Jason A. Donenfeld
013d603109 Rework DNS and routes in network extension
The DNS resolver prior had useless comments, awful nesting, converted
bytes into strings and back into bytes, and generally made no sense.
That's been rewritten now.

But more fundumentally, this commit made the DNS resolver actually
accomplish its objective, by passing AI_ALL to it. It turns out, though,
that the Go library isn't actually using GAI in the way we need for
parsing IP addresses, so we actually need to do another round, this time
with hints flag as zero, so that we get the DNS64 address.

Additionally, since we're now binding sockets to interfaces, we can
entirely remove the excludedRoutes logic.
2018-12-28 19:38:03 +01:00
Jason A. Donenfeld
0cc55db4cb NetworkExtension: rescope socket instead of tearing down socket 2018-12-26 01:17:55 +01:00
Jason A. Donenfeld
b68b3785be Rely on availability of fd only after setting network settings 2018-12-22 18:29:54 +01:00
Jason A. Donenfeld
a60b2a37d0 Retain aggressive socket reestablishment for now
This can be reverted once we've done more testing.
2018-12-22 15:45:09 +01:00
Eric Kuck
8fb8d9a9d2 All models now Equatable 2018-12-21 22:57:17 -06:00
Jason A. Donenfeld
27cd93a898 Do not crash if we can't get socket.fileDescriptor 2018-12-22 05:13:04 +01:00
Eric Kuck
3269c54718 Removing a tunnel from iOS's settings is now immediately reflected in app 2018-12-21 21:59:43 -06:00
Jason A. Donenfeld
0b2d91a7f4 Localize remaining strings in network extension 2018-12-22 03:42:01 +01:00
Jason A. Donenfeld
d0cc2a8afd Combine double log invocations 2018-12-22 02:21:07 +01:00
Jason A. Donenfeld
e1c3d9b57a Move name from interface to tunnel 2018-12-22 00:28:18 +01:00
Jason A. Donenfeld
775e174967 Nuke trailing spaces 2018-12-21 23:34:56 +01:00
Eric Kuck
c62c56da13 providerConfiguration is now a WgQuickConfig 2018-12-21 16:32:08 -06:00
Jason A. Donenfeld
137d453c0d Do not require NetworkExtension to know its own name 2018-12-21 22:05:47 +01:00
Jason A. Donenfeld
df698658d2 Get rid of superflous isActivateOnDemandEnabled key 2018-12-21 18:50:32 +01:00
Eric Kuck
f39893685f Updated NETunnelProvider save format 2018-12-21 16:42:16 +01:00
Jason A. Donenfeld
cab80f8fc0 NE: simplify logic 2018-12-21 15:56:03 +01:00
Roopesh Chander
b02754a7bd NE: Simplify DNS resolution 2018-12-21 19:24:22 +05:30
Roopesh Chander
939e96e5c1 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.
2018-12-21 17:32:44 +05:30
Roopesh Chander
115e057d96 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
2018-12-21 15:52:47 +05:30
Eric Kuck
9c7f27f19f Enabled more swiftlint rules 2018-12-20 11:22:37 -06:00
Roopesh Chander
d36b764e20 NE: Log whether tunnel was activated from the app or not 2018-12-19 18:35:53 +05:30
Roopesh Chander
8f46713b0d Remove non-helpful comments 2018-12-19 18:35:53 +05:30
Roopesh Chander
b8c331c72d 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.
2018-12-19 15:38:00 +05:30
Roopesh Chander
82ca9f7c5a NE: No need for two startTunnel() methods 2018-12-19 13:10:42 +05:30
Eric Kuck
d1825d6b6c Got TunnelsManager back under the max file length by splitting out NEVPNStatus+CustomStringConvertible 2018-12-16 23:51:25 -06:00
Eric Kuck
b06a43e2a2 Most similar views now shared between ViewControllers 2018-12-14 17:15:22 -06:00
Jason A. Donenfeld
33d88529c6 Simplify logging tags
This was roop's initial idea, and it turns out to be the better one, now
that we can pass cstrings more easily.
2018-12-14 22:53:42 +01:00
Roopesh Chander
e6c1e46b1d NE: Communicate last error to app through a shared file 2018-12-14 02:24:53 +05:30
Jason A. Donenfeld
b40bbd1cdc Localize swiftlint 2018-12-13 20:06:37 +01:00
Eric Kuck
a8cbe0d683 Reorganized ViewControllers (split out UIViews and UITableViewCells into their own classes)
All swiftlint warnings except one fixed up
2018-12-13 12:58:50 -06:00
Jason A. Donenfeld
a5aaec673a Avoid escaping heap allocation 2018-12-13 19:43:12 +01:00
Jason A. Donenfeld
45dd86beee Tidy up str to gostr conversion 2018-12-13 19:36:51 +01:00