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/util
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
..
cache util/cache: fix missing interface methods (#11275) 2 years ago
cibuild all: update copyright and license headers 3 years ago
clientmetric util/clientmetric: use counter in aggcounter 12 months ago
cloudenv all: use math/rand/v2 more 2 years ago
cmpver util/cmpver: add Less/LessEq helper funcs 2 years ago
codegen util/codegen: treat unique.Handle as an opaque value type 1 year ago
cstruct all: use Go 1.21's binary.NativeEndian 1 year ago
ctxkey all: use reflect.TypeFor now available in Go 1.22 (#11078) 2 years ago
deephash util/deephash: fix test regression on 32-bit 2 years ago
dirwalk all: use tstest.Replace more 3 years ago
dnsname tailcfg: adjust ServiceName.Validate to use vizerror 12 months ago
execqueue control/controlclient,util/execqueue: extract execqueue into a package 2 years ago
expvarx all: use Go 1.22 range-over-int 2 years ago
goroutines ipn/ipnlocal, util/goroutines: track goroutines for tests, shutdown 1 year ago
groupmember util/groupmember: fail earlier if group doesn't exist, use slices.Contains 2 years ago
hashx all: use Go 1.22 range-over-int 2 years ago
httphdr util/httphdr: add new package for parsing HTTP headers (#9797) 2 years ago
httpm util/httpm: don't run test if .git doesn't exist 2 years ago
jsonutil all: use Go 1.22 range-over-int 2 years ago
limiter all: add test for package comments, fix, add comments as needed 2 years ago
lineiter types/result, util/lineiter: add package for a result type, use it 1 year ago
lineread all: update copyright and license headers 3 years ago
linuxfw all: use Go 1.21's binary.NativeEndian 1 year ago
lru util/slicesx: add MapKeys and MapValues from golang.org/x/exp/maps 1 year ago
mak various: add golangci-lint, fix issues (#7905) 3 years ago
multierr all: use Go 1.22 range-over-int 2 years ago
must all: update copyright and license headers 3 years ago
nocasemaps all: use Go 1.22 range-over-int 2 years ago
osdiag all: add test for package comments, fix, add comments as needed 2 years ago
osshare all: add test for package comments, fix, add comments as needed 2 years ago
osuser util/osuser: turn wasm check into a const expression 1 year ago
pidowner types/result, util/lineiter: add package for a result type, use it 1 year ago
pool util/pool: add package for storing and using a pool of items 2 years ago
precompress all: update copyright and license headers 3 years ago
progresstracking ipn/localapi: add support for multipart POST to file-put 2 years ago
quarantine all: update copyright and license headers 3 years ago
race all: use Go 1.22 range-over-int 2 years ago
racebuild all: update copyright and license headers 3 years ago
rands wgengine/magicsock: use math/rands/v2 2 years ago
reload all: use math/rand/v2 more 2 years ago
ringbuffer all: use Go 1.22 range-over-int 2 years ago
set all: use iterators over slice views more 1 year ago
singleflight util/singleflight: add DoChanContext 2 years ago
slicesx util/slicesx: add AppendNonzero 12 months ago
stringsx util/stringsx: add package for extra string functions, like CompareFold 1 year ago
syspolicy ipn/ipn{auth,server,local}: initial support for the always-on mode 12 months ago
sysresources util/sysresources, magicsock: scale DERP buffer based on system memory 3 years ago
systemd all: update copyright and license headers 3 years ago
testenv util/testenv: add new package to hold InTest 2 years ago
topk all: use Go 1.22 range-over-int 2 years ago
truncate util/truncate: support []byte as well (#11614) 2 years ago
usermetric wgengine/filter: add check for unknown proto 12 months ago
vizerror util/vizerror: add WrapWithMessage 1 year ago
winutil cmd/tailscaled,util/syspolicy/source,util/winutil/gp: disallow acquiring the GP lock during service startup 12 months ago
zstdframe all: use Go 1.22 range-over-int 2 years ago