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 02ad21717f ipn/ipn{auth,server,local}: initial support for the always-on mode
In this PR, we update LocalBackend to set WantRunning=true when applying policy settings
to the current profile's prefs, if the "always-on" mode is enabled.

We also implement a new (*LocalBackend).EditPrefsAs() method, which is like EditPrefs
but accepts an actor (e.g., a LocalAPI client's identity) that initiated the change.
If WantRunning is being set to false, the new EditPrefsAs method checks whether the actor
has ipnauth.Disconnect access to the profile and propagates an error if they do not.

Finally, we update (*ipnserver.actor).CheckProfileAccess to allow a disconnect
only if the "always-on" mode is not enabled by the AlwaysOn policy setting.

This is not a comprehensive solution to the "always-on" mode across platforms,
as instead of disconnecting a user could achieve the same effect by creating
a new empty profile, initiating a reauth, or by deleting the profile.
These are the things we should address in future PRs.

Updates #14823

Signed-off-by: Nick Khyl <nickk@tailscale.com>
12 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) 2 years 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 feature/*: make Wake-on-LAN conditional, start supporting modular features 12 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 tempfork/acme: add new package for x/crypto package acme fork, move 12 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: add debug envknob for ACME directory URL (#14771) 12 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 1 year ago
expiry.go all: add Node.HomeDERP int, phase out "127.3.3.40:$region" hack [capver 111] 1 year ago
expiry_test.go cmd/viewer,types/views,various: avoid allocations in pointer field getters whenever possible 1 year ago
local.go ipn/ipn{auth,server,local}: initial support for the always-on mode 12 months ago
local_test.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 12 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 12 months ago
network-lock_test.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 12 months ago
peerapi.go appc,ipn/ipnlocal: log DNS parsing errors in app connectors (#14607) 12 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: generate LoginProfileView and use it instead of *LoginProfile where appropriate 12 months ago
profiles_notwindows.go ipn/ipnlocal: refactor and cleanup profileManager 1 year ago
profiles_test.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 12 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 12 months ago
serve_test.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 12 months ago
ssh.go Revert "ssh,tempfork/gliderlabs/ssh: replace github.com/tailscale/golang-x-crypto/ssh with golang.org/x/crypto/ssh" 12 months ago
ssh_stub.go ipnlocal: log failure to get ssh host keys 2 years ago
ssh_test.go ipn/ipnlocal: plumb health.Tracker into profileManager constructor 2 years ago
state_test.go types/persist: remove Persist.LegacyFrontendPrivateMachineKey 12 months ago
taildrop.go ipn/localapi: add support for multipart POST to file-put 2 years ago
web_client.go all: use iterators over slice views more 1 year ago
web_client_stub.go ipn/ipnlocal: add mutex to webClient struct 2 years ago