Commit Graph

185 Commits (61fb6bbf8e4613305492548178569e9acdae14c5)

Author SHA1 Message Date
Percy Wegmann a1e67ff1e9 android: ViewModel cleanup
- Replace IpnManager, IpnModel and PrefsEditor with IpnViewModel
- Use lazy StateFlows in Notifier
- Manage view model lifecycles using viewModel() function
- Stop watching IPN bus when MainActivity stops
- Pass IPN notifications as ByteArray instead of string

Updates tailscale/corp#18202

Signed-off-by: Percy Wegmann <percy@tailscale.com>
8 months ago
Percy Wegmann d42329e2e2 android: simplify local API client
Updates tailscale/corp#18202

Signed-off-by: Percy Wegmann <percy@tailscale.com>
8 months ago
Percy Wegmann 9a6aecb454 android: implement exit node picker
Updates tailscale/corp#18202

Signed-off-by: Percy Wegmann <percy@tailscale.com>
8 months ago
Jonathan Nobels f275656c25
ui: add view to debug MDM settings and add the syspolicy handlers (#199)
* mdm: add Android syspolicy handler (#195)

Updates tailscale/corp#18202

Adds a syspolicy handler for Android in cmd/tailscale. This allows the Go code to use the syspolicy package to read values set by a system administrator using the Android RestrictionsManager.

Out of the box, this adds supports for a number of MDM policies that are fully integrated on the Go side, such as `ExitNodeID` (forced exit node functionality).

Signed-off-by: Andrea Gottardo <andrea@gottardo.me>
Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>

* ui: add view to debug MDM settings

Adds a view to see the currently set MDM settings, we're going to need this to debug actual MDM integrations more effectively.

Signed-off-by: Andrea Gottardo <andrea@gottardo.me>
Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>

---------

Signed-off-by: Andrea Gottardo <andrea@gottardo.me>
Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
Co-authored-by: Andrea Gottardo <andrea@gottardo.me>
8 months ago
Jonathan Nobels 1f457399b8
android: code review feedback and stylistic improvements (#200)
Updates tailscale/corp#18202

Review feedback and stylistic improvements.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
Co-authored-by: Andrea Gottardo <andrea@tailscale.com>
8 months ago
Jonathan Nobels 3926cf4b56
android: add main screen device details and basic nav (#191)
updates tailscale/corp#18202
updates ENG-2835
updates ENG-2859

Adds the peer details view and some supporting utilities. Eliminates all of the singletons.

None of this is styled correctly, but the layouts match iOS.

Signed-off-by: Jonathan Nobels jonathan@tailscale.com

---------

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
8 months ago
James Tucker 87a8003d39 *: add a CI check for license headers and fix all files
Updates tailscale/tailscale#10992

Signed-off-by: James Tucker <james@tailscale.com>
8 months ago
Jonathan Nobels 4f46c38c99
Jonathan/notifier (#179)
android: add notifier support a data model and compose dependencies

fixes ENG-2084
fixes ENG-2086

Adds support for the ipnBusWatcher directly via a JNI API rather than HTTP via LocalAPIClient

Adds a rudimentary controller class and a model from which we can construct ViewModels

Cleans up some of the JNI bindings.  Adds hooks for ensuring the JNI setup is complete before attempting to do LocalAPIClient things.

Cleans up some wildcard imports.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
Signed-off-by: Percy Wegmann <percy@tailscale.com>
Co-authored-by: Percy Wegmann <percy@tailscale.com>
8 months ago
kari-ts 01ec98f29a
cmd/tailscale/main: restore persisted settings (#169)
Fixes tailscale/tailscale#10748
Fixes tailscale/corp#17470

Signed-off-by: kari-ts <kari@tailscale.com>
8 months ago
Aalok Kamble f23477e796
Feature: machine status icon added. (#167)
* Feature: machine status icon added.

Signed-off-by: Aalok Kamble <aalok.kamble@gmail.com>

* Update ui.go

Aligned dot vertically with lowercase letters for machine names.
Reverted 'Machine' to 'My devices'

Signed-off-by: Aalok Kamble <aalok.kamble@gmail.com>

* status dot changed from string to drawdisc

Signed-off-by: Aalok Kamble <aalok.kamble@gmail.com>

---------

Signed-off-by: Aalok Kamble <aalok.kamble@gmail.com>
8 months ago
kari-ts 9492b01946
cmd/tailscale, tailscale/ipn: fix alway-on VPN (#168)
=If a ConnectEvent is received before the first notification, (as happens when a connection is attempted due to always-on after device reboot) create state.Prefs.
-Create an intent to start the VPN worker in the case of an always-on intent received on device reboot
-Rename onConnect channel to onVPNRequested, since this isn't doing the actual connecting

Fixes tailscale/tailscale#2481

Signed-off-by: kari-ts <kari@tailscale.com>
8 months ago
Jonathan Nobels bb7ea7cf9f
android: add kotlin dependencies build the kotlin->go localAPIClient (#173)
updates ENG-2805

Adds all of the kotlin build dependencies and a partial implementation of a LocalAPIClient in the front end, wired up via JNI.  The general idea here is to mimic the architecture used on other Tailscale clients, where the front ends largely interact with the backend via "localapi".

The LocalAPIClient in go has been renamed to LocalAPIService to avoid confusion with the implementation on the future client side in Kotlin.  Some mild refactoring was done to make the localAPI invocations methods on the api service instead of App.

Streaming notifier endpoints like watch-ipn-bus are not supported.  We will build out a separate set of JNI methods for dealing with those.

The jni package is moved under cmd where it is used.

This constains mostly-complete implementation of the required localAPI data classes based on the pieces that are used by the iOS and macOS clients.  The LocalAPIClient itself does not implement all of the endpoints, but is ready to do so when those APIs are needed by a UI component.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
8 months ago
Percy Wegmann 37832a5b72 go.mod: pull in latest tailscale.com
Updates #cleanup

Signed-off-by: Percy Wegmann <percy@tailscale.com>
9 months ago
kari-ts 89e160bd08
cmd/tailscale/main: remove debugging comment (#175)
Updates #cleanup

Signed-off-by: kari-ts <kari@tailscale.com>
9 months ago
kari-ts f6b0734e49
cmd/tailscale/main: use localapi for logging out (#164)
Updates tailscale/tailscale#10992

Signed-off-by: kari-ts <kari@tailscale.com>
9 months ago
Percy Wegmann cbe8858427 cmd/tailscale: pass nil TailFSForLocal to netstack.Create
In the latest tailscale.com, netstack.Create has a new parameter
that must be supplied.

Updates #cleanup

Signed-off-by: Percy Wegmann <percy@tailscale.com>
9 months ago
kari-ts 60b9884aa2
cmd/tailscale/main: clean up unused event (#170)
Updates #cleanup

Signed-off-by: kari-ts <kari@tailscale.com>
9 months ago
kari-ts 98fe1e86e5
cmd/tailscale/main: use localapi for login and add tests. (#157) 9 months ago
Moritz Poldrack e90f39a58c
cmd/tailscale/main: apply custom control server on first start (#156)
Currently the custom control server is not applied on start. To remedy
this, check the stored preference and if they differ issue an event to
switch to the correct backend server.

Updates: tailscale/tailscale#17470

Signed-off-by: Moritz Poldrack <git@moritz.sh>
9 months ago
kari-ts f9310e7a1f
cmd/tailscale/main: use localapi for generating bug report (#155)
Fix logIDPublic and make localapiclient a package with a generic function for calling localapi that can be reused for all features

Updates tailscale/tailscale#10992
9 months ago
Nicola Beghin df9c75136b
Fixes Android quick settings tile - issue #2646 (#143)
* quicksettings - move to use intents com.tailscale.ipn.CONNECT_VPN and com.tailscale.ipn.DICONNECT_VPN - Fixes #2646

Signed-off-by: Nicola Beghin <nicolabeghin@gmail.com>

* cleanup imports - Fixes #2646

Signed-off-by: Nicola Beghin <nicolabeghin@gmail.com>

---------

Signed-off-by: Nicola Beghin <nicolabeghin@gmail.com>
9 months ago
Charlotte Brandhorst-Satzkorn 9e8dfbb2ab
cmd/tailscale: do not show location based exit nodes in main view (#158)
This change stops us from clogging up the main UI view with location
based exit nodes, which can be in their hundreds. They will still appear
in the exit node UI.

Updates tailscale/tailscale#9438

Signed-off-by: Charlotte Brandhorst-Satzkorn <charlotte@tailscale.com>
9 months ago
Charlotte Brandhorst-Satzkorn 3615398012
cmd/tailscale: improve exit node menu for location based exit nodes (#159)
This change provides minor improvements to the exit node menu when there
are location based exit nodes present. It will ensure that non location
based exit nodes are displayed at the top of the list, followed by a
the best node for a country/city combination, and followed by all
location based exit nodes.

Updates tailscale/tailscale#9421

Signed-off-by: Charlotte Brandhorst-Satzkorn <charlotte@tailscale.com>
9 months ago
David Anderson 4c7d66701f cmd/tailscale: remove obsolete DNS config logging
Causes a JNI crash because 1b42117791
removed those methods when fixing our connectivity monitoring.

Updates tailscale/tailscale#10107

Signed-off-by: David Anderson <dave@natulte.net>
10 months ago
kari-ts 1b42117791
use network callback to update DNS config when network changes (#147)
* use network callback to update DNS config when network changes

-Use requestNetwork, which gets the best network matching the passed in network request, to listen for changes to network and cache DNS config
-Call netmon.InjectEvent on network change to indicate a change
Follow-up will fix issue in netmon where IsMajorChangeFrom doesn't identify major changes when a network is added

Fixes #10107

* use network callback to update DNS config when network changes

-Use requestNetwork, which gets the best network matching the passed in network request, to listen for changes to network and cache DNS config
-Call netmon.InjectEvent on network change to indicate a change
Follow-up will fix issue in netmon where IsMajorChangeFrom doesn't identify major changes when a network is added

Updates tailscale/tailscale/#10107

hi

* hi

* .

* use network callback to update DNS config when network changes

-Use requestNetwork, which gets the best network matching the passed in network request, to listen for changes to network and cache DNS config
-Call netmon.InjectEvent on network change to indicate a change
Follow-up will fix issue in netmon where IsMajorChangeFrom doesn't identify major changes when a network is added

Updates tailscale/tailscale/#10107

* fixed missing connectivity manager
10 months ago
Denton Gentry a965ae0038
cmd/tailscale: add tun Wrapper and call Start() (#140)
Fixes https://github.com/tailscale/corp/issues/15388

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
1 year ago
James Tucker 727e7e2b50 cmd/tailscale: avoid creating multiple netmon instances
This is a quick fix, we should come back and try to reorganize this
later.

Updates tailscale/tailscale#9374
1 year ago
Aaron Klotz 6a142b2f50 cmd/tailscale: fix OSS build breaks
For build #cleanup

Signed-off-by: Aaron Klotz <aaron@tailscale.com>
1 year ago
Brad Fitzpatrick c21bbc94a1 cmd/tailscale: prefer showing Sharer user over Owner user
Fixes tailscale/corp#14056
Updates tailscale/tailscale#8967

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
1 year ago
Brad Fitzpatrick b500bbdad6 go.mod: bump oss
And resulting API changes.

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
1 year ago
Maisem Ali 50b5b851eb
go.mod: bump oss (#130)
Updates #oss

Signed-off-by: Maisem Ali <maisem@tailscale.com>
1 year ago
Charlotte Brandhorst-Satzkorn aba683bb61
cmd/tailscale: rebind magicsock.Conn onConnect (#126)
We have been getting into routing loops due to the timing of when we
bind sockets on starting the tailscale app. At this point, we do
not have access to `VpnService.protect()` and are unable to protect
the magicsock sockets, which causes a routing loop issue until we
forcibly rebind about 10 minutes into the service being started.

This change causes a rebind when the service is started, which restores
connectivity in cases where the socket was unprotected.

Updates tailscale/corp#13814
1 year ago
James Tucker 6a6e80db47
go.mod,cmd/tailscale: bump OSS and update logtail transport setup (#119)
Updates #cleanup
1 year ago
Denton Gentry 31f2aa8097 cmd/tailscale/main.go: use ipn.NewPrefs(), not &ipn.Prefs{}
ipn.NewPrefs() sets accepting DNS and routes to true,
among other things. &ipn.Prefs{} initializes all fields
to false.

Fixes https://github.com/tailscale/corp/issues/13377

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
1 year ago
kari-ts 04b79a2206
cmd/tailscale: if first notification, set hostname even if prefs is nil (#111)
Currently, if the notification (ipn.Notify) has a nil Prefs, the hostname defaults to localhost

Fixes #7875

Signed-off-by: kari-ts <kari@tailscale.com>
1 year ago
Brad Fitzpatrick f44692addd
cmd/tailscale: don't render ShareeNode peers (#98)
Fixes tailscale/corp#11006

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
1 year ago
Charlotte Brandhorst-Satzkorn 39717f946b
Revert "Add DNS/routing prefs like on desktop (#86)" (#108)
This reverts commit d316acaa3d.
1 year ago
Brad Fitzpatrick 6b9a11c755 cmd/tailscale: fix regression from earlier commit
In 00a42702cb I bumped go.mod and adjusted the API, but only tested
that it compiled & tests (hah) passed.

I forgot this line. I still haven't tested this, but can't be worse! :)

Fixes 00a42702cb (commitcomment-112642284)

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2 years ago
Brad Fitzpatrick 00a42702cb go.mod: bump tailscale.com dep, update for tsd.System API change
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2 years ago
Brad Fitzpatrick a7b3ae04b0 cmd/tailscale: use Google as DNS of last resort
Sometimes we try a dozen different ways to read the phone's DNS
settings and it still comes back empty. In that case, if we're already
on a Google-ified Android phone, just use Google's Public DNS servers
as the ultimate fallback, as we already do on ChromeOS to work around
ChromeOS Android VpnBuilder bugs.

Updates tailscale/tailscale#8006 etc etc

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2 years ago
RoboMagus 13ecd3e34d
Exit node in notification (#96)
* Show exitnode in persistent notification when connected.
* updateNotification when exitnode changes

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

Signed-off-by: RoboMagus <68224306+RoboMagus@users.noreply.github.com>
2 years ago
Denton Gentry aa32919ac3 go.mod: update from OSS
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
2 years ago
Brett Jenkins eb9599540c
Add intents (#87)
IPNReceiver: Add intents to connect and disconnect VPN

Added a new class IPNReceiver to listen to intents silently and connect and disconnect the VPN. This uses workers to avoid doing too much in the IPNReceiver which is to be avoided according to documentation.

Also includes a fix for vpn occasionally not starting. Think this was due to a race condition, but now only sets autoConnect to false when we know a connection is connecting or connected.

Fixes https://github.com/tailscale/tailscale/issues/3547
Updates https://github.com/tailscale/tailscale/issues/2481

Signed-off-by: Brett Jenkins <brett@brettjenkins.co.uk>
2 years ago
Mihai Parparita 8e4a740d8e cmd/tailscale: enabled logtail flushing for the Android client
The c2n endpoint was not working since we did not configure the flush
function (same issue that was previously fixed in the iOS client in
tailscale/corp#9939).

Updates tailscale/corp#8564
2 years ago
Mihai Parparita 68ecc44a49 cmd/tailscale: upload client metrics
More generally, make the logtail.Config similar to the one used by
clients for other platforms.

Updates tailscale/corp#9230
2 years ago
Gero Gerke d316acaa3d
Add DNS/routing prefs like on desktop (#86)
ui: Add DNS/routing prefs like on desktop

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

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
2 years ago
Jordan Whited 2470284b31
go.mod: Update from OSS and bump wireguard-go. (#88)
Signed-off-by: Jordan Whited <jordan@tailscale.com>
2 years ago
Denton Gentry d0c45c1de1 Revert "IPNReceiver: Add intents to connect and disconnect VPN (#84)"
Reverting according to discussion in
https://github.com/tailscale/tailscale/issues/3547#issuecomment-1465035410

This reverts commit 51a53e5472.
2 years ago
Denton Gentry d53da4ac65 go.mod: update OSS
Skip over the build number used for 1.36.2.

Signed-off-by: Denton Gentry <dgentry@tailscale.com>
2 years ago
Brett Jenkins 51a53e5472
IPNReceiver: Add intents to connect and disconnect VPN (#84)
* IPNReceiver: Add intents to connect and disconnect VPN

Added a new class IPNReceiver to listen to intents silently and connect and disconnect the VPN
Also removed unneeded comment

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

Signed-off-by: Brett Jenkins <brett@brettjenkins.co.uk>
2 years ago