]> git.ipfire.org Git - thirdparty/wireguard-apple.git/log
thirdparty/wireguard-apple.git
2 years agoUI: When reloading tunnels, preserve '.waiting' state
Roopesh Chander [Tue, 27 Jul 2021 08:05:30 +0000 (13:35 +0530)] 
UI: When reloading tunnels, preserve '.waiting' state

Signed-off-by: Roopesh Chander <roop@roopc.net>
2 years agoUI: When deactivating for activating another tunnel, disable on-demand
Roopesh Chander [Tue, 27 Jul 2021 06:09:07 +0000 (11:39 +0530)] 
UI: When deactivating for activating another tunnel, disable on-demand

Signed-off-by: Roopesh Chander <roop@roopc.net>
2 years agoUI: Keep on-demand rules even if on-demand is disabled
Roopesh Chander [Tue, 27 Jul 2021 20:40:45 +0000 (02:10 +0530)] 
UI: Keep on-demand rules even if on-demand is disabled

Signed-off-by: Roopesh Chander <roop@roopc.net>
2 years agoUI: iOS: Tunnel detail: Incorporate on-demand-ness in 'Status'
Roopesh Chander [Mon, 26 Jul 2021 11:26:03 +0000 (16:56 +0530)] 
UI: iOS: Tunnel detail: Incorporate on-demand-ness in 'Status'

Signed-off-by: Roopesh Chander <roop@roopc.net>
2 years agoUI: iOS: Show "on-demand is active" for tunnels with the active on-demand
Andrej Mihajlov [Sat, 27 Mar 2021 21:02:09 +0000 (22:02 +0100)] 
UI: iOS: Show "on-demand is active" for tunnels with the active on-demand

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
Signed-off-by: Roopesh Chander <roop@roopc.net>
2 years agoUI: iOS: Tunnels list: Incorporate on-demand-ness in the switch
Roopesh Chander [Sat, 24 Jul 2021 20:04:03 +0000 (01:34 +0530)] 
UI: iOS: Tunnels list: Incorporate on-demand-ness in the switch

Signed-off-by: Roopesh Chander <roop@roopc.net>
2 years agoUI: TunnelsManager: Add setOnDemandEnabled() instance method
Roopesh Chander [Sat, 24 Jul 2021 19:29:36 +0000 (00:59 +0530)] 
UI: TunnelsManager: Add setOnDemandEnabled() instance method

Signed-off-by: Roopesh Chander <roop@roopc.net>
2 years agoUI: TunnelsManager: Add TunnelContainer.hasOnDemandRules
Roopesh Chander [Sat, 24 Jul 2021 18:23:31 +0000 (23:53 +0530)] 
UI: TunnelsManager: Add TunnelContainer.hasOnDemandRules

Signed-off-by: Roopesh Chander <roop@roopc.net>
2 years agoGlobal: bump copyright year
Jason A. Donenfeld [Thu, 17 Jun 2021 14:56:46 +0000 (16:56 +0200)] 
Global: bump copyright year

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2 years agoKit: add missing import for WireGuardKitC
Andrej Mihajlov [Thu, 17 Jun 2021 11:23:22 +0000 (13:23 +0200)] 
Kit: add missing import for WireGuardKitC

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
2 years agoApp: version bump 1.0.13-24
Jason A. Donenfeld [Wed, 16 Jun 2021 16:11:22 +0000 (18:11 +0200)] 
App: version bump

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2 years agoKit: Go: mod bump
Jason A. Donenfeld [Wed, 16 Jun 2021 16:03:28 +0000 (18:03 +0200)] 
Kit: Go: mod bump

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2 years agoKit: Adapter: use more reliable utun detection technique
Jason A. Donenfeld [Wed, 16 Jun 2021 15:09:40 +0000 (17:09 +0200)] 
Kit: Adapter: use more reliable utun detection technique

Rather than hoping that the AF_SYSTEM fd is of type utun, and then
calling "2" on it to get the name -- which could be defined as something
else for a different AF_SYSTEM socket type -- instead simply query the
AF_SYSTEM control socket ID with getpeername. This has one catch, which
is that the ID is dynamically allocated, so we resolve it using the
qualified name. Normally we'd make a new AF_SYSTEM socket for this, but
since that's not allowed in the sandbox, we reuse the AF_SYSTEM socket
that we're checking. At this point in the flow, we know that it's a
proper AF_SYSTEM one, based on the first sockaddr member; we just don't
know that it's a utun variety.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2 years agoKit: Adapter: iterate through all FDs to find UTUN
Jason A. Donenfeld [Wed, 16 Jun 2021 13:56:21 +0000 (15:56 +0200)] 
Kit: Adapter: iterate through all FDs to find UTUN

This is a bit of a kludge, until I find something better. We simply
iterate through all FDs, and call getsockopt on each one until we find
the utun FD. This works, and completes rather quickly (fd is usually 6
or 7). Rather than maintain the old path for older kernels, just use
this for all versions, to get more coverage. Other techniques involve
undocumented APIs; this one has the advantage of using nothing
undocumented.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2 years agoSPM: update exclude rules
Andrej Mihajlov [Tue, 15 Jun 2021 13:18:21 +0000 (15:18 +0200)] 
SPM: update exclude rules

Fixes missing excluded file warning in Xcode. api-ios.go was renamed to api-apple.go.

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoUI: iOS: asynchronously load from NEHotspotNetwork on iOS 14
Jason A. Donenfeld [Mon, 8 Mar 2021 23:57:35 +0000 (00:57 +0100)] 
UI: iOS: asynchronously load from NEHotspotNetwork on iOS 14

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: iOS: clean up visuals in SSID editor
Jason A. Donenfeld [Mon, 8 Mar 2021 23:02:03 +0000 (00:02 +0100)] 
UI: iOS: clean up visuals in SSID editor

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoREADME: account for funky xcode paths
Jason A. Donenfeld [Mon, 8 Mar 2021 20:20:12 +0000 (21:20 +0100)] 
README: account for funky xcode paths

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoKit: Go: bump to latest API
Jason A. Donenfeld [Mon, 8 Mar 2021 19:29:12 +0000 (20:29 +0100)] 
Kit: Go: bump to latest API

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: iOS: Disable "copy" action on on-demand cells
Andrej Mihajlov [Wed, 6 Jan 2021 10:57:40 +0000 (11:57 +0100)] 
UI: iOS: Disable "copy" action on on-demand cells

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoKit: netcfg: add explicit IP mask routes
Jason A. Donenfeld [Fri, 1 Jan 2021 17:26:49 +0000 (18:26 +0100)] 
Kit: netcfg: add explicit IP mask routes

macOS will use the wrong source address unless we add explicit routes
that mention the self-pointing gateway. Actually, it won't add any
implicit routes on its own, so in order to route the masks of the
addresses, we have to add our own routes explicitly.

However, this still doesn't fix the problem while inside of the network
extension, even though it works outside it.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoKit: Go: mod bump
Jason A. Donenfeld [Wed, 23 Dec 2020 16:47:07 +0000 (17:47 +0100)] 
Kit: Go: mod bump

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: iOS: Remove duplicate call to addSubview
Andrej Mihajlov [Wed, 23 Dec 2020 15:03:41 +0000 (16:03 +0100)] 
UI: iOS: Remove duplicate call to addSubview

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoUI: iOS: Fix placeholder label alignment in text fields.
Andrej Mihajlov [Wed, 23 Dec 2020 15:03:01 +0000 (16:03 +0100)] 
UI: iOS: Fix placeholder label alignment in text fields.

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoApp: version bump 1.0.12-22
Jason A. Donenfeld [Wed, 23 Dec 2020 14:05:56 +0000 (15:05 +0100)] 
App: version bump

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoproject: sync translations and improve id generation again
Jason A. Donenfeld [Wed, 23 Dec 2020 13:55:29 +0000 (14:55 +0100)] 
project: sync translations and improve id generation again

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: macOS: Group more than 10 tunnels into submenu
Andrej Mihajlov [Tue, 22 Dec 2020 15:40:28 +0000 (16:40 +0100)] 
UI: macOS: Group more than 10 tunnels into submenu

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoUI: Avoid force unwrap when checking for errors
Andrej Mihajlov [Wed, 23 Dec 2020 13:16:27 +0000 (14:16 +0100)] 
UI: Avoid force unwrap when checking for errors

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoKit: do not crash on [abcd::] with missing port
Jason A. Donenfeld [Wed, 23 Dec 2020 13:06:26 +0000 (14:06 +0100)] 
Kit: do not crash on [abcd::] with missing port

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoKit: Go: bump module and simplify API
Jason A. Donenfeld [Wed, 23 Dec 2020 12:40:24 +0000 (13:40 +0100)] 
Kit: Go: bump module and simplify API

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: pause VPN configurations observer while adding or removing multiple tunnels
Andrej Mihajlov [Mon, 21 Dec 2020 12:46:55 +0000 (13:46 +0100)] 
UI: pause VPN configurations observer while adding or removing multiple tunnels

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoUI: use NotificationToken to properly clean up observers
Andrej Mihajlov [Tue, 22 Dec 2020 10:09:18 +0000 (11:09 +0100)] 
UI: use NotificationToken to properly clean up observers

When the variable goes out of scope, the observer isn't removed unless
an explicit call is made to the token.

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoKeychain: prevent call to stat() when determining appex path
Andrej Mihajlov [Mon, 21 Dec 2020 16:57:18 +0000 (17:57 +0100)] 
Keychain: prevent call to stat() when determining appex path

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoKit: Go: use Windows-style retry sleep loop on bind updates
Jason A. Donenfeld [Fri, 18 Dec 2020 10:50:13 +0000 (11:50 +0100)] 
Kit: Go: use Windows-style retry sleep loop on bind updates

Something odd happens in the network extension that we still don't
understand. Attempt to poke it in this terrible way.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: Model: remove 0.0.0.0/8 from non-private IPs
Jason A. Donenfeld [Fri, 18 Dec 2020 11:42:28 +0000 (12:42 +0100)] 
UI: Model: remove 0.0.0.0/8 from non-private IPs

macOS freaks out if you try to explicitly route to 0.0.0.0/8 in its
includedRoutes parameter. Even though 0.0.0.0/8 isn't RFC1918, it is
marked in RFC6890 as "this host on this network", so removing it from
the Internet routes makes sense semantically too.

This commit changes 0.0.0.0/5 into:
- 1.0.0.0/8
- 2.0.0.0/8
- 3.0.0.0/8
- 4.0.0.0/6

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: iOS: remove donation link 1.0.11-21
Jason A. Donenfeld [Tue, 15 Dec 2020 23:03:34 +0000 (00:03 +0100)] 
UI: iOS: remove donation link

Apple forbids us from having a simple link to wireguard.com/donations/
in the version info window, citing the existence of this link as a form
of payment outside of their in-app purchase framework that requires 30%.
The link had been there for around two years. After rejecting an app
update for a critical networking regression unrelated to this, they
wrote:

    Dec 17, 2020 at 8:35 PM
    From Apple

    3.1.1 - Business - Payments - In-App Purchase

    We noticed that your app allows users to contribute donations to the
    development of your app with a mechanism other than the in-app
    purchase API, which is not appropriate for the App Store.

    Next Steps

    To resolve this issue, please revise your app to use the in-app
    purchase API to pay for this type of transaction. Please note that
    even though tipping another individual is optional, the tip is
    connected to or associated with the receipt of digital content or
    services in your app and must be purchased through in-app purchase
    in accordance with guideline 3.1.1 of the App Store Review
    Guidelines.

    Please see attached screenshot for details.

Trying to appeal this or reason with Apple is not going to be a fruitful
endeavor, so instead we simply cut our losses and remove the donation
link entirely. The goal, anyway, is to get a timely critical update into
the hands of users, and encouraging Apple to block that further would be
a disservice.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: macOS: Fix UTF-8 and UTF-16 conversions in highlighter code
Andrej Mihajlov [Tue, 15 Dec 2020 17:26:55 +0000 (18:26 +0100)] 
UI: macOS: Fix UTF-8 and UTF-16 conversions in highlighter code

NSString uses UTF-16 internally, while String uses UTF-8 in Swift 5.

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoproject: generate more stable locale IDs
Jason A. Donenfeld [Thu, 17 Dec 2020 11:41:23 +0000 (12:41 +0100)] 
project: generate more stable locale IDs

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agobuild: disable hardened runtime on iOS but keep it enabled on macOS
Andrej Mihajlov [Thu, 17 Dec 2020 10:56:17 +0000 (11:56 +0100)] 
build: disable hardened runtime on iOS but keep it enabled on macOS

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoVersion bump 1.0.11-20
Jason A. Donenfeld [Wed, 16 Dec 2020 23:43:38 +0000 (00:43 +0100)] 
Version bump

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: add missing translations to incomplete locales
Jason A. Donenfeld [Wed, 16 Dec 2020 23:40:42 +0000 (00:40 +0100)] 
UI: add missing translations to incomplete locales

This is the wrong way to fix the problem. The correct way will involve
moving away from the whacky tr() macro and using translations functions
properly. But migrating to that will require some heavy scripting work.
So for now, use a hammer.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoKit: Adapter: do not treat NE settings timeouts as fatal
Jason A. Donenfeld [Wed, 16 Dec 2020 23:24:39 +0000 (00:24 +0100)] 
Kit: Adapter: do not treat NE settings timeouts as fatal

The general Network Extension framework is incredibly buggy, and a
timeout when setting the network settings does not necessarily imply
that the whole operation failed. Simply log the condition and move on.
This restores the app's old behavior.

Reported-by: Filipe Mendonça <cfilipem@gmail.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoKit: PacketTunnelSettingsGenerator: do not require DNS queries if no DNS
Jason A. Donenfeld [Wed, 16 Dec 2020 23:10:28 +0000 (00:10 +0100)] 
Kit: PacketTunnelSettingsGenerator: do not require DNS queries if no DNS

Prior, we would set matchDomains=[""] even if the user didn't provide
any DNS servers. This was kind of incoherent, but I guess we had in mind
some kind of non-sensical leakproof scheme that never really worked
anyway. NetworkExtension didn't like this, so setTunnelNetworkSettings
would, rather than return an error, simply timeout and never call its
callback function. But everything worked fine, so we had code in the UI
to check to make sure everything was okay after 5 seconds or so of no
callback. Recent changes made the timeout fatal on the network extension
side, so rather than succeed, configs with no DNS server started
erroring out, causing user reports.

This commit attempts to handle the root cause of the timeout issue by
not twiddling with DNS settings if no DNS server was specified. For now,
however, it leaves the hard-timeout semantics in place.

Reported-by: Filipe Mendonça <cfilipem@gmail.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoUI: macOS: remove donation link 1.0.10-19
Jason A. Donenfeld [Tue, 15 Dec 2020 23:03:34 +0000 (00:03 +0100)] 
UI: macOS: remove donation link

Apple forbids us from having a simple donation link in the "About
WireGuard" dialog, due to new policies. And arguing with the giant is
not going to be a fruitful battle. Do the practical thing and just
remove it.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoVersion bump 1.0.10-18
Jason A. Donenfeld [Tue, 15 Dec 2020 15:18:07 +0000 (16:18 +0100)] 
Version bump

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoWireGuardApp: Refactor TunnelListCell
Andrej Mihajlov [Tue, 15 Dec 2020 13:51:02 +0000 (14:51 +0100)] 
WireGuardApp: Refactor TunnelListCell

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Replace AnyObject with a concrete NSKeyValueObservation
Andrej Mihajlov [Tue, 15 Dec 2020 13:21:39 +0000 (14:21 +0100)] 
WireGuardApp: Replace AnyObject with a concrete NSKeyValueObservation

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Animate switch control in TunnelListCell
Andrej Mihajlov [Tue, 15 Dec 2020 13:21:21 +0000 (14:21 +0100)] 
WireGuardApp: Animate switch control in TunnelListCell

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Remove 200ms delay when updating tunnel status switch
Andrej Mihajlov [Tue, 15 Dec 2020 11:41:26 +0000 (12:41 +0100)] 
WireGuardApp: Remove 200ms delay when updating tunnel status switch

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Pin status switch to cell margin
Andrej Mihajlov [Mon, 14 Dec 2020 15:48:53 +0000 (16:48 +0100)] 
WireGuardApp: Pin status switch to cell margin

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Refactor indicator view initialization
Andrej Mihajlov [Mon, 14 Dec 2020 15:38:16 +0000 (16:38 +0100)] 
WireGuardApp: Refactor indicator view initialization

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Use Bundle.forInfoDictionaryKey to access Info.plist fields
Andrej Mihajlov [Mon, 14 Dec 2020 15:25:12 +0000 (16:25 +0100)] 
WireGuardApp: Use Bundle.forInfoDictionaryKey to access Info.plist fields

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Refactor indicator initialization
Andrej Mihajlov [Mon, 14 Dec 2020 15:22:52 +0000 (16:22 +0100)] 
WireGuardApp: Refactor indicator initialization

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Fix window background color to default black
Andrej Mihajlov [Mon, 14 Dec 2020 14:26:24 +0000 (15:26 +0100)] 
WireGuardApp: Fix window background color to default black

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoglobal: support DNS search domains
Jason A. Donenfeld [Tue, 15 Dec 2020 12:49:21 +0000 (13:49 +0100)] 
global: support DNS search domains

This has been supported by Windows and Linux for quite some time. Add
support here for iOS and macOS.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoWireGuardKitGo: update to latest wireguard-go tag
Jason A. Donenfeld [Tue, 15 Dec 2020 12:16:35 +0000 (13:16 +0100)] 
WireGuardKitGo: update to latest wireguard-go tag

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoRevert "[REVERT ME SOON] TunnelsManager: Workaround for macOS Catalina deleting tunne...
Jason A. Donenfeld [Fri, 11 Dec 2020 11:50:31 +0000 (12:50 +0100)] 
Revert "[REVERT ME SOON] TunnelsManager: Workaround for macOS Catalina deleting tunnels arbitrarily"

This reverts commit 028e76eb3fda127d84eb88dc5cb96d4278f37b96.

It's been over a year. I really hope this is fixed by Apple.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoWireGuardApp: modify xcodeproj when syncing translations
Jason A. Donenfeld [Fri, 11 Dec 2020 11:38:24 +0000 (12:38 +0100)] 
WireGuardApp: modify xcodeproj when syncing translations

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoWireGuardKit: Let wireguard-go backend run in offline on macOS
Andrej Mihajlov [Fri, 11 Dec 2020 10:49:56 +0000 (11:49 +0100)] 
WireGuardKit: Let wireguard-go backend run in offline on macOS

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: add CrowdIn syncer and run it
Jason A. Donenfeld [Fri, 11 Dec 2020 10:33:59 +0000 (11:33 +0100)] 
WireGuardApp: add CrowdIn syncer and run it

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoWireGuardKit: Conditionally turn on/off wireguard-go
Andrej Mihajlov [Tue, 1 Dec 2020 10:18:31 +0000 (11:18 +0100)] 
WireGuardKit: Conditionally turn on/off wireguard-go

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardGoKit: drop support for armv7
Jason A. Donenfeld [Wed, 9 Dec 2020 14:56:35 +0000 (15:56 +0100)] 
WireGuardGoKit: drop support for armv7

Apple and Go have both dropped it, so we do the same.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoglobal: fix remaining swiftlint violations
Jason A. Donenfeld [Wed, 9 Dec 2020 13:35:21 +0000 (14:35 +0100)] 
global: fix remaining swiftlint violations

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoWireGuardKitGo: get rid of missing -Wno-unused-command-line-argument flag
Jason A. Donenfeld [Wed, 9 Dec 2020 13:25:22 +0000 (14:25 +0100)] 
WireGuardKitGo: get rid of missing -Wno-unused-command-line-argument flag

Recent toolchains error out on it, and it's no longer needed.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoWireGuardKitGo: rebase boottime patch onto Go 1.15.6
Jason A. Donenfeld [Wed, 9 Dec 2020 13:08:45 +0000 (14:08 +0100)] 
WireGuardKitGo: rebase boottime patch onto Go 1.15.6

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoglobal: bump year in header
Jason A. Donenfeld [Fri, 4 Dec 2020 11:15:29 +0000 (12:15 +0100)] 
global: bump year in header

A bit overdue, but better late than never.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
3 years agoWireGuardApp: Update target membership to exclude sources that are only used in netwo...
Andrej Mihajlov [Fri, 4 Dec 2020 10:28:53 +0000 (11:28 +0100)] 
WireGuardApp: Update target membership to exclude sources that are only used in network extensions

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Delegate IPv*Address initialization to self.init
Andrej Mihajlov [Fri, 4 Dec 2020 10:25:16 +0000 (11:25 +0100)] 
WireGuardKit: Delegate IPv*Address initialization to self.init

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Remove backend version call in Logger.swift & extract wireguard-go...
Andrej Mihajlov [Fri, 4 Dec 2020 10:01:36 +0000 (11:01 +0100)] 
WireGuardApp: Remove backend version call in Logger.swift & extract wireguard-go version script from network extension targets

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Log XLAT resolution errors
Andrej Mihajlov [Thu, 3 Dec 2020 14:10:29 +0000 (15:10 +0100)] 
WireGuardKit: Log XLAT resolution errors

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Disable SWIFT_PRECOMPILE_BRIDGING_HEADER
Andrej Mihajlov [Thu, 3 Dec 2020 11:53:22 +0000 (12:53 +0100)] 
WireGuardApp: Disable SWIFT_PRECOMPILE_BRIDGING_HEADER

Clang automatically picks up module.modulemap files from WireGuardKit directories when precompiling bridging header file, which causes the compiler to fail with obscure error.

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Update swift version from 4.2 to 5.0
Andrej Mihajlov [Thu, 3 Dec 2020 11:52:49 +0000 (12:52 +0100)] 
WireGuardApp: Update swift version from 4.2 to 5.0

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoUpdate checkout path in README
Andrej Mihajlov [Thu, 3 Dec 2020 10:13:42 +0000 (11:13 +0100)] 
Update checkout path in README

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoKeychain: Avoid roundtrip via items when accessing item label (stored in kSecAttrLabel)
Andrej Mihajlov [Wed, 2 Dec 2020 17:16:41 +0000 (18:16 +0100)] 
Keychain: Avoid roundtrip via items when accessing item label (stored in kSecAttrLabel)

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoKeychain: Remove unnecessary cast to String in Keychain queries
Andrej Mihajlov [Wed, 2 Dec 2020 17:09:39 +0000 (18:09 +0100)] 
Keychain: Remove unnecessary cast to String in Keychain queries

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Remove WireGuardKit.swift from Xcode source tree
Andrej Mihajlov [Wed, 2 Dec 2020 17:05:37 +0000 (18:05 +0100)] 
WireGuardApp: Remove WireGuardKit.swift from Xcode source tree

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuadKit: Rename WireGuardAdapter.version -> .backendVersion & remove `var wireGua...
Andrej Mihajlov [Wed, 2 Dec 2020 17:05:17 +0000 (18:05 +0100)] 
WireGuadKit: Rename WireGuardAdapter.version -> .backendVersion & remove `var wireGuardVersion` with WireGuardKit.swift

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Add back the wireguard-go version extraction script and use WIREGUARD_G...
Andrej Mihajlov [Wed, 2 Dec 2020 17:03:16 +0000 (18:03 +0100)] 
WireGuardApp: Add back the wireguard-go version extraction script and use WIREGUARD_GO_VERSION directly

Avoids linking against libwg-go.a in order to access the WireGuard backend version.

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Include headers from WireGuardKitC
Andrej Mihajlov [Wed, 2 Dec 2020 16:24:31 +0000 (17:24 +0100)] 
WireGuardApp: Include headers from WireGuardKitC

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: integrate WireGuardKit sources directly
Andrej Mihajlov [Wed, 2 Dec 2020 15:10:44 +0000 (16:10 +0100)] 
WireGuardApp: integrate WireGuardKit sources directly

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoRemove Sources/ in project folder names
Andrej Mihajlov [Wed, 2 Dec 2020 14:38:12 +0000 (15:38 +0100)] 
Remove Sources/ in project folder names

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Rename WireGuardKitSwift -> WireGuardKit
Andrej Mihajlov [Wed, 2 Dec 2020 14:21:36 +0000 (15:21 +0100)] 
WireGuardKit: Rename WireGuardKitSwift -> WireGuardKit

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoLinter: Fix all linter issues across the codebase
Andrej Mihajlov [Wed, 2 Dec 2020 14:08:45 +0000 (15:08 +0100)] 
Linter: Fix all linter issues across the codebase

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardApp: Fix build working dir for go-bridge targets
Andrej Mihajlov [Wed, 2 Dec 2020 13:47:50 +0000 (14:47 +0100)] 
WireGuardApp: Fix build working dir for go-bridge targets

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardNetworkExtension: Remove wireguard.h from bridging header
Andrej Mihajlov [Wed, 2 Dec 2020 13:47:14 +0000 (14:47 +0100)] 
WireGuardNetworkExtension: Remove wireguard.h from bridging header

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoFix paths pointing to xcconfigs
Andrej Mihajlov [Wed, 2 Dec 2020 13:31:59 +0000 (14:31 +0100)] 
Fix paths pointing to xcconfigs

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Add wireguard-go files to exclude list to eliminate SwiftPM warnings
Andrej Mihajlov [Wed, 2 Dec 2020 12:06:36 +0000 (13:06 +0100)] 
WireGuardKit: Add wireguard-go files to exclude list to eliminate SwiftPM warnings

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Set publicHeadersPath = "." to flatten public headers structure
Andrej Mihajlov [Wed, 2 Dec 2020 12:02:36 +0000 (13:02 +0100)] 
WireGuardKit: Set publicHeadersPath = "." to flatten public headers structure

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Fix module map for WireGuardKitC
Andrej Mihajlov [Wed, 2 Dec 2020 12:01:21 +0000 (13:01 +0100)] 
WireGuardKit: Fix module map for WireGuardKitC

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Fix import statements
Andrej Mihajlov [Wed, 2 Dec 2020 11:32:20 +0000 (12:32 +0100)] 
WireGuardKit: Fix import statements

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoMove all source files to `Sources/` and rename WireGuardKit targets
Andrej Mihajlov [Wed, 2 Dec 2020 11:27:39 +0000 (12:27 +0100)] 
Move all source files to `Sources/` and rename WireGuardKit targets

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Assert that resolutionResults must not contain failures
Andrej Mihajlov [Wed, 2 Dec 2020 12:54:31 +0000 (13:54 +0100)] 
WireGuardKit: Assert that resolutionResults must not contain failures

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Only assign self.settingsGenerator upon success to set tunnel network...
Andrej Mihajlov [Wed, 2 Dec 2020 12:53:58 +0000 (13:53 +0100)] 
WireGuardKit: Only assign self.settingsGenerator upon success to set tunnel network settings to avoid inconsistent state

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Remove handleLogLine from WireGuardAdapter
Andrej Mihajlov [Wed, 2 Dec 2020 12:53:16 +0000 (13:53 +0100)] 
WireGuardKit: Remove handleLogLine from WireGuardAdapter

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Remove isStarted: bool from WireGuardAdapter
Andrej Mihajlov [Wed, 2 Dec 2020 12:52:24 +0000 (13:52 +0100)] 
WireGuardKit: Remove isStarted: bool from WireGuardAdapter

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Fix docs for WireGuardAdapterError
Andrej Mihajlov [Thu, 3 Dec 2020 12:19:31 +0000 (13:19 +0100)] 
WireGuardKit: Fix docs for WireGuardAdapterError

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Fix docs for WireGuardLogLevel
Andrej Mihajlov [Wed, 2 Dec 2020 12:49:25 +0000 (13:49 +0100)] 
WireGuardKit: Fix docs for WireGuardLogLevel

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Pass logHandler via constructor
Andrej Mihajlov [Wed, 2 Dec 2020 12:48:24 +0000 (13:48 +0100)] 
WireGuardKit: Pass logHandler via constructor

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoPacket tunnel: Remove last error in the completion handler given to adapter.stop
Andrej Mihajlov [Wed, 2 Dec 2020 12:43:09 +0000 (13:43 +0100)] 
Packet tunnel: Remove last error in the completion handler given to adapter.stop

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
3 years agoWireGuardKit: Rename cannotLocateSocketDescriptor -> cannotLocateTunnelFileDescriptor...
Andrej Mihajlov [Wed, 2 Dec 2020 12:42:15 +0000 (13:42 +0100)] 
WireGuardKit: Rename cannotLocateSocketDescriptor -> cannotLocateTunnelFileDescriptor in WireGuardAdapterError

Signed-off-by: Andrej Mihajlov <and@mullvad.net>