Commit Graph

190 Commits (d46d247535b362e5cc85dad669fb35bb8e014981)

Author SHA1 Message Date
Denton Gentry fd42b4b352 java: format strings containing integers in ROOT locale.
We use strings to pass structured data from the JVM to Go.
In a locale using Indian-Arabic numerals: ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹
the Java code will format decimal strings using Indian-Arabic
glyphs.

Go doesn't get a locale set automatically by the Android
runtime, so it always parses strings in a default en-US
`unable to parse "lo ١ ٦٥٥٣٦ true false true false false |": expected integer`

Make the Java code format using the ROOT locale. These strings
are purely internal to pass between the two runtimes, they are
not shown to the user.

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

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry b125fbf179 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry a8f017ddf6 go.mod: update from OSS@main
Also increment Android build number past 1.22.0.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 0e5c2ec1ec android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 69f2fe67dc android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 7989a1ae2a android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 61490b1713 go.mod: go mod tidy -compat=1.17
Also increment build number past the one used for 1.20.2
on release-branch/1.20.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry aa5123b8b4 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry df73d8a419 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 6b83c6ae21 go.mod: update OSS for next unstable build.
Also increment the build number past what was used
on the release-branch/1.20

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 270b8efe97 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 039124db79 go.mod: Update from OSS.
Increment version number, the 1.18.2 release was build 82.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry bbd7b61d44 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 79bb2f33d0 ui: more robust isConnected check.
1. Follow
   https://developer.android.com/training/monitoring-device-state/connectivity-status-type
   to determine whether to report ourself as having connectivity or not.

   Tested by turning the Wifi & LTE off and on, seems to work well in
   the contrived test case.

2. Call superclass for onLost() and onLinkPropertiesChanged() handlers.
   Current Android versions have no code in the superclass of these two
   callbacks, but future proofiness.

3. Log when the UI report of LostInternet changes, so we can find it.

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

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 0265dcfd1b android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 184250167b
Merge branch 'main' into dns 3 years ago
Denton Gentry f2a104fc5f android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry ca696b116c Update opensource repository 3 years ago
Denton Gentry 5c9cec0064 retrieve current DNS servers.
Add getDnsConfigAsString() to retrieve the current DNS
configuration from the Android platform. This implements
several mechanisms to retrieve DNS information, suitable
for different Android versions:

Android 7 and later use ConnectivityManager getAllNetworks(),
then iterate over each network to retrieve DNS servers and
search domains using the LinkProperties.

Android 6 and earlier can only retrieve the currently active
interface using ConnectivityManager getActiveNetwork(), but have
two additional fallback options which leverage the system
properties available in older Android releases.

--------

Also changed how LinkChange notification works, switching from
the older BroadcastReceiver of a ConnectivityManager Intent to
the newer ConnectivityManager.registerNetworkCallback. We need
this because the onAvailable event is too early, we get notified
that LTE is up before its DNS servers have been set. We need
to wait for the onLinkPropertiesChanged event instead, which is
only available with registerNetworkCallback.

Fixes https://github.com/tailscale/tailscale/issues/2116
Updates https://github.com/tailscale/tailscale/issues/988

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 5c93a7a829 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry a045ba5ab1 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry c98d4dd89c android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 0ecb2a2587 Increment build number.
1.16.2 on release-branch/1.16 is build 74.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry fe76bef85b android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 61f90a1975 Increment build number.
Build 72 was 1.16.1, built on release-branch/1.16

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry a4a3ae6eff android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 0a13b89ce0 go.mod: update from HEAD.
Also increment build number to skip over the 1.16.0 release build.
3 years ago
Denton Gentry 02a6ae0e0d cmd/tailscale: implement getInterfaces + SDK 30
SDK 30 prohibits syscall.NetlinkRIB(syscall.RTM_GETADDR, ...)
which Go's net.Interfaces uses. Implement an Android
specific version of net.Interfaces to use instead.

Passing primitive types across JNI is relatively straightforward,
passing a single object of a complex class is annoying but still
possible, but passing lists and other more complex data structures is
way harder. As such, this commit added a Java routine to render the
interface information to a string and pass that across JNI as a
primitive type for Go code to parse.

Fixes https://github.com/tailscale/tailscale/issues/2293
3 years ago
Denton Gentry 6518535039 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 54d511a9b6 Increment build number.
build 68 is 1.14.6 on release-branch/1.14.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry ef96ee30fd android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry e2128ef6d6 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Elias Naur 84b484a954 android,cmd/tailscale: implement taildrop receive for Android < 10
Fixes tailscale/tailscale#2720
Fixes tailscale/tailscale#2296

Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Elias Naur f37cf72d81 android/ipn: ignore shared files we have no access to
I'm not able to reproduce the crash described in #2720; sharing files
from an SD-card through taildrop works for me (ChromeOS 93.0) without
issues. However, this change makes sure that we don't crash should we
lack permission for some reason.

Updates tailscale/tailscale#2720

Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Elias Naur 078356613f android: fix persistent notification intent target
Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Denton Gentry d3edb004e3 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry f33b98b313 Skip version used for 1.14.0 take 2.
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 742da3ae36 Skip version used for 1.14.0.
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 5c524d2768 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry ae2df12032 Update from Tailscale OSS.
Skip release 61.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 9283506c04 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 76df742662 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry a68462ec65 Update for unstable build.
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 3575ef712a android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 82b6b8dbd3 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 7f086ccaa6 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry ade708af7f Update for 1.13.x unstable builds. 3 years ago
Denton Gentry ea1bb12e9b android: bump version code
Fix F-Droid build.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 00e45e3795 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 0df2377630 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 3cb36c4599 android: bump version code
Unstable build 1.11.109.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 4d32c6da4f android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 1c78887bf5 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 90909797a0 android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Denton Gentry 2a6cd09d7c android: bump version code
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Elias Naur 14cdec17f1 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Elias Naur 242c936b2c android: lower target SDK to 29
Target 30 results in an error on load, most likely because netlink
is no longer accessible for apps.

runBackend: NewUserspaceEngineAdvanced: route ip+net: netlinkrib: permission denied

Fixes tailscale/tailscale#2290

Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Elias Naur 639aebac6a android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Elias Naur 10ded1bad2 cmd/tailscale,java: implement file sharing
Fixes tailscale/tailscale#1809

Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Elias Naur e007a9c153 android: bump target/compile SDK version to 30
Gio uses SDK 30 API now.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Denton Gentry 594ed6b7bc android: bump version code
On 6/24 I built a v43 and started to release it to production,
then decided to do an Internal release first. The Play Store
would not allow v43 to be used again so I built v44, released
it to Internal, and after testing promoted it to Production and
it went into Google's review process.

Crucially, I did not push the tags before going to bed.

On 6/25, not knowing any of this because I hadn't pushed the tags,
Elias built v43 and released it. The Play Store had apparently cleaned
up the state from my abandoned v43 by that point.

This commit increments the build number to v44 so we don't re-use it.
I'm not building an actual release, just incrementing the build
number and pointing to the same git commit. I'm hoping F-Droid will
therefore build exactly the same thing as it did for v43.

I promise to push the tags before going to bed next time.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
3 years ago
Elias Naur e8f2409cb3 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
3 years ago
Brad Fitzpatrick b97cc703d8 Fix routing loop prevention, MagicDNS forwarding over Tailscale.
Fixes tailscale/tailscale#2102
Updates tailscale/tailscale#1809

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
3 years ago
Elias Naur 9e9d69fd95 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 20ddae3208 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 3d2abf0b3b android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 8ea1d4ced7 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 401ed389ef android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur db13aa4e92 android/build.gradle: upgrade androidx.security to 1.1.0-alpha03
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 206f2bb4e7 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 085d823920 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur dfe7b6c0a2 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur ebdbe7c315 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 54917ae2f5 android: bump version code
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
Elias Naur 71a9bd537c com/tailscale/ipn,AndroidManifest.xml: make quick tile service passive
Active mode is more efficient, but otherwise equivalent to passive mode.
However, some Android versions don't implement active mode reliably. See
also

https://stackoverflow.com/questions/58035971/tileservice-requestlisteningstate-not-working-on-android-q-couldnt-find-tile-f
https://issuetracker.google.com/issues?q=requestListeningState

I can reproduce issue 1225 on an Android 10 emulator, but no longer with
this change applied.

For tailscale/tailscale#1225

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur f19c0c057e android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 9525b1c46c android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur c8114b4474 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 28e5c33b3b android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 2ed6c7df9a android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
David Anderson 8daee9c431 com/tailscale/ipn: exclude the app from its own VPN.
This means that the Tailscale app's traffic will never use
the VPN that it sets up, which avoids routing loops in
scenarios like publishing a default route over Tailscale.

Signed-off-by: David Anderson <danderson@tailscale.com>
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 de6c243bae android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur b97970dd8f android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 21037e6d67 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 0964bc5a6e android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 9c38bebfa9 android: create build flavor for omitting non-free Google dependency
The F-Droid app store don't support non-free dependencies. Create two build
flavors, "fdroid" for building without Google Sign-In, and "play" for including
it.

Modify Makefile to target the play flavor.

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 412fe8ad68 android/gradle/wrapper: add cryptographic checksum
Suggested by F-Droid bot, https://gitlab.com/fdroid/rfp/-/issues/1546#note_443476386.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 39dfd84951 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 3eab35ca80 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur fd4646a900 android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur 6eeb9d8ac4 AndroidManifest.xml: disable auto-backup of (encrypted) app data
Android 6.0 and later automatically backs up app data and allow the user
to restore it when setting up a new device. Unfortunately, the app data
is encrypted with a device specific master key, rendering the data
unreadable on the second device.

Apply the allowBackup=false hammer since we only store device-specific
(logs) and sensitive (private keys, authentication tokens) data for now.

Fixes tailscale/tailscale#732

Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur dfbfd2a3ed android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur c1863a42ae android: bump version code
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur d221e0db42 java/com/tailscale/ipn: run attachPeer on main thread
Signed-off-by: Elias Naur <mail@eliasnaur.com>
4 years ago
Elias Naur b6d6f57261 android: bump version code 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