Commit Graph

185 Commits (dca2fc3bf4fef576eb795c46e17447c588865169)

Author SHA1 Message Date
Denton Gentry 90351e7392 backend: Send DNS config through CallbackRouter.
Using NewNoopManager avoided the errors from trying to overwrite
/etc/resolv.conf, but still didn't fully work. Route DNS config
through the CallbackRouter.

Fixes https://github.com/tailscale/tailscale/issues/1956

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
4 years ago
Elias Naur 9ba4a01a4e cmd/tailscale: remove tstun.Wrapper
NewUserspaceEngine wraps our TUN device already.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Denton Gentry ec8133a972 backend: use dns.NewNoopManager.
Android updates its DNS config in updateTUN() when in response
to several different channels from the backend.

There is not an Android-specific NewOSConfigurator, we end
up pulling in the Linux NewOSConfigurator:
https://github.com/tailscale/tailscale/blob/main/net/dns/manager_linux.go

The Linux DNS manager expects to be able to write to /etc/resolv.conf,
which does not work on Android and causes errors in updating DNS config.

Instead, allocate dns.NewNoopManager to disable the DNS manager, and
rely on the updateTUN() code to handle DNS.

Fixes https://github.com/tailscale/tailscale/issues/1956

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
4 years ago
Elias Naur 06e461d703 go.*,cmd/tailscale: upgrade to tailscale.com v1.8.3
Updates tailscale/tailscale#1695

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 05212e770b cmd/tailscale: don't configure logtail for low memory
logtail in low memory configuration truncates log lines to ~254 bytes.

Fixes tailscale/tailscale#1625

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 633d81287a cmd/tailscale,com/tailscale/ipn: delete unused constant, reformat
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur e2d731dbba ensure exit node status is updated when changing it
Fixes tailscale/tailscale#1545

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 3b1a5e7a71 cmd/tailscale: implement Tailscale 1.6 default route setting
Fixes tailscale/tailscale#1401

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 71e0f2bd94 cmd/tailscale,go.*: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 56362cc61a cmd/tailscale,go.*: upgrade to latest tailscale
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur b151de039b cmd/tailscale: simplify non-blocking coalescing channels
Three variables are used everywhere a single non-blocking producer sends
values where only the latest is relevant:

    var (
	    mu sync.Mutex
	    latest T
	    notify = make(chan struct{}, 1)
    )

By draining the notification channel before sending through it, we
can simplify to just one channel:

    latest = make(chan T, 1)

Thanks to Chris Waldon for showing me this neat trick.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 33cf7c0aa1 jni: replace True and False with more convenient Bool function
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 07b2373e6b com/tailscale/ipn,cmd/tailscale: handle quick tile clicks while signed out
Specifically, start the main activity to prompt the user to sign in or
be notified of a pending machine auth.

Fixes tailscale/tailscale#1225

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Sonia Appasamy c4f626c5a7 cmd/tailscale: use node.DisplayName for machine names
Update to tailscale 1.4.0 while here.

Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
4 years ago
Elias Naur ba38a9bb59 jni,cmd/tailscale: replace jni.EnvFor with explicit conversion
The EnvFor converted an uintptr to a pointer value, which is not
guaranteed to work in general. This change removes EnvFor and pushes the
potentially unsafe conversion to users of the jni package.

Fixes tailscale/tailscale#1195

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 61d9733b24 jni,cmd/tailscale: replace jni.JVMFor with direct cast
The JVMFor function converted an uintptr to a pointer, which is not
guaranteed to work in general. This change removes JVMFor, forcing the
unsafe conversion to the user of the jni packge.

Updates tailscale/tailscale#1195

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 1c93c0f2c7 cmd/tailscale: don't surface IPv6 addresses in UI
Fixes tailscale/tailscale#1158

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
David Anderson b1395cfefb cmd/tailscale: update to network engine that supports IPv6.
Part of tailscale/tailscale#1158.

Signed-off-by: David Anderson <danderson@tailscale.com>
4 years ago
Elias Naur b981aa576c cmd/tailscale,go.*: update Gio version
Fixes tailscale/tailscale#471

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 2c9fddab4f cmd/tailscale: warn when debug signed and Google Sign-In fails
Fixes tailscale/tailscale#1036

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 9db851a113 cmd/tailscale: notify user when VPN access is denied
When tailscale starts, any other active VPN service is automatically closed by the system.
However, if the other VPN service is configured to be always-on, we will be denied access
to set up a VPN. The user may not realize this case, so this change adds a notification
when we're denied access.

The failure mode is identical to the user denying access tthrough the system dialog
shown first time Tailscale starts, so the notification also mentions that case.

Fixes tailscale/tailscale#1017

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 33a953fb21 cmd/tailscale: only refresh VPN tunnel if configuration changed
This used to work, but a later ChromeOS workaround closed and cleared the last
configuration before comparing it with the new.

Fixes tailscale/tailscale#966

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 129abdb13f cmd/tailscale: close Tailscale when user cancels system VPN dialog
Fixes tailscale/tailscale#904

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur f2c035a8bf cmd/tailscale: note in Hostinfo.OSVersion if Google Play is unavailable
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur cedc696c87 go.*,cmd/tailscale: upgrade to latest gio version
Includes the GOARM=7 fix to avoid softfloat on 32-bit android/arm.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 6d9acbb479 cmd/tailscale,java: refactor Google Sign-In into separate class
In preparation for the F-Droid release, refactor the non-free Google dependency
into a separate Java class and make the Go client tolerate missing support.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 25168130a7 cmd/tailscale,go.*: update to tailscale 1.2
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 233515e86a cmd/tailscale: move the App.appDir field to the only method that uses it
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 7de19cd9b8 cmd/tailscale: remove unused field stateStore.dataDir
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 679f97afb3 cmd/tailscale: don't show toggle when not authenticated
Also, change the login screen tile to say "Tailscale", not the
redundant "Needs authentication".

Updates tailscale/tailscale#608

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 1b402aebb0 cmd/tailscale,java/com/tailscale/ipn: always register the Peer Fragment
Before this change, the Peer would be registered across Activity restarts
but not after Activity destruction (for example, when the user pressed the
back button).

Use the newer Gio ViewEvent API for tracking the Activity lifecycle and
the most recent Activity reference.

Move Java calls that need an Activity from Peer to App, leaving Peer solely
as a method for receiving onActivityResult.

Fixes tailscale/tailscale#670

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 3089ad8347 cmd/tailsca,java/comt/tailscale/ipn: don't require an Activity for Google sign-out
The GoogleSignIn.getClient has a version that only needs a Context, not an Activity.

Updates tailscale/tailscale#670

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur f25b5bbcba cmd/tailscale: make intro screen scrollable
Include the version code bump as well. Oops.

Updates tailscale/tailscale#488

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 1003774193 cmd/tailscale,go.*: fix network hangs on Huawei devices
Bump the tailscale.com module version to get the Android fallback
for determining the default network device,

25b021388b

Updates tailscale/tailscale#471

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 758e5691da cmd/tailscale: mask route addresses to please VpnService.Builder.addRoute
Update inet.af/netaddr for IPPrefix.Masked.

Fixes tailscale/tailscale#645

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 454c59a4e5 cmd/tailscale: add detail to VpnService.Builder cosntruction errors
Updates tailscale/tailscale#645

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 943bded910 cmd/tailscale: don't duplicate log output
logtail.Log by default writes log output to stderr, but stderr is taken over by
filch's ReplaceStderr, resulting in duplicate logs sent to Tailscale.
ReplaceStderr is useful for capturing stack dumps from panics.

Configure logtail to route logs to the Android logger, which stops the
duplicate logging and replaces an existing MultiWriter setup for the same
purpose.

Reduce the scope of the logtail logger while here.

Fixes tailscale/tailscale#646

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 334dff897c cmd/tailscale: pause app on sign-in screen when internet is gone
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 05fc3ef433 cmd/tailscale: close overflow menu when the Android back button is pressed
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur a7dfea267c cmd/tailscale: fallback back to Google DNS on ChromeOS
Contrary to the VpnService.Builder documentation, ChromeOS doesn't
automatically fall back to the underlying network nameservers when
none are provided.

Updates tailscale/tailscale#431

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 7211e6db1b cmd/tailscale: tee log output to both Tailscale and the Android log
Updates tailscale/tailscale#471

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 9e45538997 cmd/tailscale,java/com/tailscale/ipn: provide OSVersion and DeviceModel for the backend
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 93afdf1e5d cmd/tailscale: bump tailscale version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 91d4d47fd8 cmd/tailscale: stop loader indicator when Google Sign-in is cancelled
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 15632cb15b cmd/tailscale: sign-out any Google users when logging out from Tailscale
Fixes tailscale/tailscale#585

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 053820acda cmd/tailscale: ensure the web sign-in button always chooses the browser
It was set to reauthenticate with the last used sign-in method by mistake.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 5a018c7209 cmd/tailscale: reset loader indicator after Google Sign-in
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 19ed532519 cmd/tailscale: don't set up VPN for invalid configurations
Fixes tailscale/tailscale#507

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 2119f8aa9d cmd/tailscale: avoid backend deadlocks from SetPrefs and LinkChange
Updates tailscale/tailscale#471 (perhaps fixes it)

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur bae9b8394a android: add quick setting tile support
Fixes tailscale/tailscale#516

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur df1d8b338b cmd/tailscale: implement Google ID sign-in
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur ad92c8d81f cmd/tailscale: remove redundant locking
There are no more concurrent accesses to the prefs variable.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 3f469f3f8a cmd/tailscale: replace manual border widget with gioui.org/widget.Border
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 878e6e75df cmd/tailscale: disable sign-in buttons during sign-in
Fixes tailscale/tailscale#481

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 22851bfa05 cmd/tailscale: add progress indicator to sign in buttons
For tailscale/tailscale#481

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur e3befb01d8 cmd/tailscale: make sign-in buttons visually lighter
Having two (or more) login buttons demands a less overwhelming look.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur ec9bb108c6 cmd/tailscale: add Google sign-in button
Hidden behind a flag pending support from the Tailscale client.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 33849b0daa cmd/tailscale,go.*: track go-bindata tool version in go.mod
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur cd9c808dd2 java/com/tailscale,cmd/tailscale: remove webview signin
Adjust the Custom Tabs browser color to match the app header while
here.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 8f621e531a cmd/tailscale: don't notify for never-expiring sessions
Fixes tailscale/tailscale#469

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur a39b174ed8 cmd/tailscale: don't set up logging twice
Updates tailscale/tailscale#500

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur f88e8f6f8c cmd/tailscale: bump tailscale.com version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 4d5f89f767 cmd/tailscale: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 28c8a2e1e5 go.mod: change the module name to github.com/tailscale/tailscale-android
Makes it go-gettable.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 31b3c725c8 cmd/tailscale: reset cached config when failing to set up VPN tunnel
Add a bit of logging while here.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur b297135f2a cmd/tailscale: wait for previous tunnel(s) to close before establishing new
Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 0d0a049057 cmd/tailscale: avoid deadlocking between backend calls and callbacks
The runBackend goroutine issues backend requests (StartLoginInteractive,
Logout, SetPrefs) from the same select that receives callbacks the
backend.

Avoid the potential for same-goroutine deadlock by issuing backend requests on
separate goroutines.

Fixes tailscale/tailscale#470

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 18adee11a5 cmd/tailscale: assume internet connectivity at startup
Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur bfd730f3d7 cmd/tailscale: handle IPN callbacks from the backend goroutine
Before this change, the notification and configuration callbacks
raced with the backend goroutine.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 4388f145cc cmd/tailscale: switch to the Roboto font
Updates tailscale/tailscale#420

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 08c2192240 cmd/tailscale: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 271d40978e java/com/tailscale/ipn: explicitly allow IPv4 and IPv6 traffic
The VPNService.Builder object blocks traffic to IP families for which no
route, local address, nor DNS are defined. The Tailscale tunnel doesn't
cover all traffic, so both IP families should be kept open.

Updates tailscale/tailscale#453 (maybe fixes it)
Updates tailscale/tailscale#431 (another DNS problem)

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur c290ccf388 cmd/tailscale: note that seamless VPN tunnel handover works on Android
But not on ChromeOS, and I haven't found a robust way to detect
ChromeOS.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 8dbac874eb cmd/tailscale: disable smooth tunnel handovers for ChromeOS
ChromeOS doesn't seem to correctly apply new tunnel settings if
another tunnel is already active. Instead, close any existing
tunnel before creating another.

Updates tailscale/tailscale#431

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 4c1017a548 cmd/tailscale,android: bump gio version
Updates tailscale/tailscale#431 (fixes a resize crash)

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur adb6bb736b cmd/tailscale: dim want-running switch when not authorized
Updates tailscale/tailscale#420

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur a2fbd1a202 cmd/tailscale: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 5de04d4177 cmd/tailscale: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 8a444d7fb7 cmd/tailscale: don't show stale local name and address
Updates tailscale/tailscale#420

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 8ae20a98eb cmd/tailscale: synchronize UI switch with ipn.Prefs.WantRunning
Updates tailscale/tailscale#420

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 3db59c3a9b cmd/tailscale,java/com/tailscale/ipn: set hostname to Build.MODEL
Fixes tailscale/tailscale#409

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 920aba4ff1 cmd/tailscale: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 7708523bd6 cmd/tailscale: bump gio version and add tools.go import of the gogio tool
Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur dd6a68bae7 cmd/tailscale: use Stopped as the barrier state for enabling the VPN
NeedsLogin is not the correct barrier because NeedsMachineAuth should also
block VPN startup.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago
Elias Naur 5109987e18 all: initial commit
Signed-off-by: Elias Naur <mail@eliasnaur.com>
5 years ago