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
Aaron Klotz db39a43f06 util/winutil: add support for restarting Windows processes in specific sessions
This PR is all about adding functionality that will enable the installer's
upgrade sequence to terminate processes belonging to the previous version,
and then subsequently restart instances belonging to the new version within
the session(s) corresponding to the processes that were killed.

There are multiple parts to this:

* We add support for the Restart Manager APIs, which allow us to query the
  OS for a list of processes locking specific files;
* We add the RestartableProcess and RestartableProcesses types that query
  additional information about the running processes that will allow us
  to correctly restart them in the future. These types also provide the
  ability to terminate the processes.
* We add the StartProcessInSession family of APIs that permit us to create
  new processes within specific sessions. This is needed in order to
  properly attach a new GUI process to the same RDP session and desktop that
  its previously-terminated counterpart would have been running in.
* I tweaked the winutil token APIs again.
* A lot of this stuff is pretty hard to test without a very elaborate
  harness, but I added a unit test for the most complicated part (though it
  requires LocalSystem to run).

Updates https://github.com/tailscale/corp/issues/13998

Signed-off-by: Aaron Klotz <aaron@tailscale.com>
1 year ago
..
cibuild all: update copyright and license headers 2 years ago
clientmetric util/clientmetric: allow client metric values to be provided by a function 2 years ago
cloudenv all: update copyright and license headers 2 years ago
cmpver util/cmpver: only consider ascii numerals (#9741) 1 year ago
cmpx all: update exp/slices and fix call sites 1 year ago
codegen util/codegen: support embedded fields 2 years ago
cstruct all: update copyright and license headers 2 years ago
deephash util/deephash: add IncludeFields, ExcludeFields HasherForType Options 1 year ago
dirwalk all: use tstest.Replace more 2 years ago
dnsname cmd/tailscale: extend hostname validation (#7678) 2 years ago
goroutines util/goroutines: let ScrubbedGoroutineDump get only current stack 1 year ago
groupmember util/groupmember: fail earlier if group doesn't exist, use slices.Contains 1 year ago
hashx all: update copyright and license headers 2 years ago
httphdr util/httphdr: add new package for parsing HTTP headers (#9797) 1 year ago
httpm util/httpm: don't run test if .git doesn't exist 1 year ago
jsonutil all: update copyright and license headers 2 years ago
limiter util/lru, util/limiter: add debug helper to dump state as HTML 1 year ago
lineread all: update copyright and license headers 2 years ago
linuxfw util/linuxfw: add missing error checks in tests 1 year ago
lru util/lru: update c.head when deleting the most recently used entry 1 year ago
mak various: add golangci-lint, fix issues (#7905) 2 years ago
multierr all: use Go 1.21 slices, maps instead of x/exp/{slices,maps} 1 year ago
must all: update copyright and license headers 2 years ago
nocasemaps util/nocasemaps: import nocasemaps from corp 1 year ago
osdiag util/osdiag, util/winutil: expose Windows policy key 1 year ago
osshare all: update copyright and license headers 2 years ago
osuser ssh/tailssh,util: extract new osuser package from ssh code (#10170) 1 year ago
pidowner all: update copyright and license headers 2 years ago
precompress all: update copyright and license headers 2 years ago
quarantine all: update copyright and license headers 2 years ago
race util/race: add test to confirm we don't leak goroutines 1 year ago
racebuild all: update copyright and license headers 2 years ago
rands util/rands: add package with HexString func 1 year ago
ringbuffer util/ringbuffer: move generic ringbuffer from corp repo 2 years ago
set util/set: implement json.Marshaler/Unmarshaler (#10308) 1 year ago
singleflight all: update copyright and license headers 2 years ago
slicesx util/slicesx: add EqualSameNil, like slices.Equal but same nilness 1 year ago
syspolicy syspolicy: add exit node related policies (#10172) 1 year ago
sysresources util/sysresources, magicsock: scale DERP buffer based on system memory 2 years ago
systemd all: update copyright and license headers 2 years ago
testenv util/testenv: add new package to hold InTest 1 year ago
truncate util: add truncate package (#7490) 2 years ago
uniq all: update copyright and license headers 2 years ago
vizerror util/vizerror: add As function to get wrapped Error 2 years ago
winutil util/winutil: add support for restarting Windows processes in specific sessions 1 year ago