You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/ipn/ipnlocal
Nick Khyl e6eba4efee ipn/{auditlog,ipnext,ipnlocal}: convert the profile-change callback to a profile-state-change callback
In this PR, we enable extensions to track changes in the current prefs. These changes can result from a profile switch
or from the user or system modifying the current profile’s prefs. Since some extensions may want to distinguish between
the two events, while others may treat them similarly, we rename the existing profile-change callback to become
a profile-state-change callback and invoke it whenever the current profile or its preferences change. Extensions can still
use the sameNode parameter to distinguish between situations where the profile information, including its preferences,
has been updated but still represents the same tailnet node, and situations where a switch to a different profile has been made.

Having dedicated prefs-change callbacks is being considered, but currently seems redundant. A single profile-state-change callback
is easier to maintain. We’ll revisit the idea of adding a separate callback as we progress on extracting existing features from LocalBackend,
but the conversion to a profile-state-change callback is intended to be permanent.

Finally, we let extensions retrieve the current prefs or profile state (profile info + prefs) at any time using the new
CurrentProfileState and CurrentPrefs methods. We also simplify the NewControlClientCallback signature to exclude
profile prefs. It’s optional, and extensions can retrieve the current prefs themselves if needed.

Updates #12614
Updates tailscale/corp#27645
Updates tailscale/corp#26435
Updates tailscale/corp#27502

Signed-off-by: Nick Khyl <nickk@tailscale.com>
9 months ago
..
testdata ipn/ipnlocal: fix the path for writing cert files (#7203) 3 years ago
autoupdate.go clientupdate: return true for CanAutoUpdate for macsys (#12746) 1 year ago
autoupdate_disabled.go ipn/ipnlocal: periodically run auto-updates when "offline" (#12118) 2 years ago
breaktcp_darwin.go cmd/tailscale: add debug commands to break connections 2 years ago
breaktcp_linux.go cmd/tailscale: add debug commands to break connections 2 years ago
bus.go ipn/ipnlocal: fix build, remove another Notify.BackendLogID reference that crept in 1 year ago
bus_test.go ipn/ipnlocal: add IPN Bus NotifyRateLimit watch bit NotifyRateLimit 1 year ago
c2n.go ipn/ipnlocal: return old hwaddrs if missing 9 months ago
c2n_pprof.go ipn/ipnlocal: add c2n /debug/pprof/allocs endpoint 2 years ago
c2n_test.go util/cmpx: delete now that we're using Go 1.22 2 years ago
cert.go ipn/ipnlocal: include previous cert in new ACME orders (#15595) 9 months ago
cert_js.go ipn/ipnlocal: add c2n method to check on TLS cert fetch status 2 years ago
cert_test.go ipn/ipnlocal, envknob: make it possible to configure the cert client to act in read-only mode (#15250) 10 months ago
dnsconfig_test.go ipn/ipnlocal: don't program system DNS when node key is expired (#13370) 1 year ago
drive.go cmd/viewer,types/views,various: avoid allocations in pointer field getters whenever possible 12 months ago
expiry.go all: add Node.HomeDERP int, phase out "127.3.3.40:$region" hack [capver 111] 12 months ago
expiry_test.go cmd/viewer,types/views,various: avoid allocations in pointer field getters whenever possible 12 months ago
extension_host.go ipn/{auditlog,ipnext,ipnlocal}: convert the profile-change callback to a profile-state-change callback 9 months ago
extension_host_test.go ipn/{auditlog,ipnext,ipnlocal}: convert the profile-change callback to a profile-state-change callback 9 months ago
local.go ipn/{auditlog,ipnext,ipnlocal}: convert the profile-change callback to a profile-state-change callback 9 months ago
local_test.go ipn/ipnlocal: skip broken TestOnTailnetDefaultAutoUpdate on macOS 9 months ago
loglines_test.go util/usermetrics: make usermetrics non-global 1 year ago
network-lock.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 11 months ago
network-lock_test.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 11 months ago
peerapi.go ipn/ipnlocal: fix peerapi ingress endpoint (#15611) 9 months ago
peerapi_h2c.go all: update copyright and license headers 3 years ago
peerapi_macios_ext.go net/netmon, add: add netmon.State type alias of interfaces.State 2 years ago
peerapi_test.go util/usermetrics: make usermetrics non-global 1 year ago
profiles.go ipn/{auditlog,ipnext,ipnlocal}: convert the profile-change callback to a profile-state-change callback 9 months ago
profiles_notwindows.go ipn/ipnlocal: refactor and cleanup profileManager 1 year ago
profiles_test.go ipn, ipn/ipnlocal: reduce coupling between LocalBackend/profileManager and the Windows-specific "current user" model 9 months ago
profiles_windows.go ipn/ipnlocal: refactor and cleanup profileManager 1 year ago
serve.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 11 months ago
serve_test.go types/netmap,*: pass around UserProfiles as views (pointers) instead 11 months ago
ssh.go ssh/tailssh: add Plan 9 support for Tailscale SSH 9 months ago
ssh_stub.go ssh/tailssh: add Plan 9 support for Tailscale SSH 9 months ago
ssh_test.go ipn/ipnlocal: plumb health.Tracker into profileManager constructor 2 years ago
state_test.go ipn/ipnlocal: unconfigure wgengine when switching profiles 9 months ago
taildrop.go ipn/localapi: add support for multipart POST to file-put 2 years ago
web_client.go all: use new LocalAPI client package location 11 months ago
web_client_stub.go all: use new LocalAPI client package location 11 months ago