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 f1c7b463cd ipn/{ipnauth,ipnlocal,localapi}: make EditPrefs return an error if changing exit node is restricted by policy
We extract checkEditPrefsAccessLocked, adjustEditPrefsLocked, and onEditPrefsLocked from the EditPrefs
execution path, defining when each step is performed and what behavior is allowed at each stage.

Currently, this is primarily used to support Always On mode, to handle the Exit Node enablement toggle,
and to report prefs edit metrics.

We then use it to enforce Exit Node policy settings by preventing users from setting an exit node
and making EditPrefs return an error when an exit node is restricted by policy. This enforcement is also
extended to the Exit Node toggle.

These changes prepare for supporting Exit Node overrides when permitted by policy and preventing logout
while Always On mode is enabled.

In the future, implementation of these methods can be delegated to ipnext extensions via the feature hooks.

Updates tailscale/corp#29969
Updates tailscale/corp#26249

Signed-off-by: Nick Khyl <nickk@tailscale.com>
6 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 ipn: add missing entries for OpenBSD 7 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: add localNodeContext with netmap-related fields and methods 9 months ago
drive.go drive,ipn/ipnlocal: calculate peer taildrive URLs on-demand 6 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/ipnlocal: make GetExt work earlier, before extension init 8 months ago
extension_host_test.go ipn/ipnlocal: make GetExt work earlier, before extension init 8 months ago
local.go ipn/{ipnauth,ipnlocal,localapi}: make EditPrefs return an error if changing exit node is restricted by policy 6 months ago
local_test.go ipn/{ipnauth,ipnlocal,localapi}: make EditPrefs return an error if changing exit node is restricted by policy 6 months ago
loglines_test.go net/netmon: publish events to event bus 9 months ago
network-lock.go ipn/ipnlocal: make pricing restriction message for Tailnet Lock clearer 7 months ago
network-lock_test.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 11 months ago
node_backend.go ipn/ipnlocal: update PeerByID to return SelfNode and rename it to NodeByID (#16096) 6 months ago
node_backend_test.go ipn/ipnlocal,wgengine/magicsock: use eventbus for node & filter updates (#16271) 7 months ago
peerapi.go ipn/ipnlocal: add some verbose logging to taildrive peerapi handler 7 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 feature/taildrop, ipn/ipnlocal: remove leftover dup calls to osshare 8 months ago
prefs_metrics.go health, ipn/ipnlocal: add metrics for various client events (#15828) 8 months ago
profiles.go health, ipn/ipnlocal: add metrics for various client events (#15828) 8 months ago
profiles_notwindows.go ipn/ipnlocal: refactor and cleanup profileManager 1 year ago
profiles_test.go feature,ipn/ipnlocal: add profileManager.StateChangeHook 9 months ago
profiles_windows.go ipn/ipnlocal: refactor and cleanup profileManager 1 year ago
serve.go ipn/ipnlocal: add localNodeContext with netmap-related fields and methods 9 months ago
serve_test.go ipn/ipnlocal,wgengine{/magicsock}: replace SetNetworkMap with eventbus (#16299) 7 months ago
ssh.go all: remove non-applicable "linux" deps on Android 8 months ago
ssh_stub.go all: remove non-applicable "linux" deps on Android 8 months ago
ssh_test.go ipn/ipnlocal: plumb health.Tracker into profileManager constructor 2 years ago
state_test.go cmd/tailscale/cli,ipn,ipn/ipnlocal: add AutoExitNode preference for automatic exit node selection 6 months ago
web_client.go ipn/ipnlocal: add localNodeContext with netmap-related fields and methods 9 months ago
web_client_stub.go all: use new LocalAPI client package location 11 months ago