headscale/hscontrol
Kristoffer Dalby 7bab8da366 state, policy, noise: implement SSH check period auto-approval
Add SSH check period tracking so that recently authenticated users
are auto-approved without requiring manual intervention each time.

Introduce SSHCheckPeriod type with validation (min 1m, max 168h,
"always" for every request) and encode the compiled check period
as URL query parameters in the HoldAndDelegate URL.

The SSHActionHandler checks recorded auth times before creating a
new HoldAndDelegate flow. Auth timestamps are stored in-memory:
- Default period (no explicit checkPeriod): auth covers any
  destination, keyed by source node with Dst=0 sentinel
- Explicit period: auth covers only that specific destination,
  keyed by (source, destination) pair

Auth times are cleared on policy changes.

Updates #1850
2026-02-25 21:28:05 +01:00
..
assets editorconfig: add basic editor config 2025-12-16 10:12:36 +01:00
capver capver: regenerate from docker tags 2026-02-07 08:23:51 +01:00
db auth: generalise auth flow and introduce AuthVerdict 2026-02-25 21:28:05 +01:00
derp all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
dns all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
mapper auth: generalise auth flow and introduce AuthVerdict 2026-02-25 21:28:05 +01:00
policy state, policy, noise: implement SSH check period auto-approval 2026-02-25 21:28:05 +01:00
routes all: upgrade to Go 1.26rc2 and modernize codebase 2026-02-08 12:35:23 +01:00
state state, policy, noise: implement SSH check period auto-approval 2026-02-25 21:28:05 +01:00
templates templates: generalise auth templates for web and OIDC 2026-02-25 21:28:05 +01:00
types policy, noise: implement SSH check action 2026-02-25 21:28:05 +01:00
util auth: generalise auth flow and introduce AuthVerdict 2026-02-25 21:28:05 +01:00
app.go auth: generalise auth flow and introduce AuthVerdict 2026-02-25 21:28:05 +01:00
auth.go auth: generalise auth flow and introduce AuthVerdict 2026-02-25 21:28:05 +01:00
auth_tags_test.go auth: generalise auth flow and introduce AuthVerdict 2026-02-25 21:28:05 +01:00
auth_test.go auth: generalise auth flow and introduce AuthVerdict 2026-02-25 21:28:05 +01:00
debug.go all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
grpcv1.go hscontrol, cli: add auth register and approve commands 2026-02-25 21:28:05 +01:00
grpcv1_test.go hscontrol: add tests for deleting users with tagged nodes 2026-02-20 21:51:00 +01:00
handlers.go hscontrol, cli: add auth register and approve commands 2026-02-25 21:28:05 +01:00
metrics.go all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
noise.go state, policy, noise: implement SSH check period auto-approval 2026-02-25 21:28:05 +01:00
oidc.go templates: generalise auth templates for web and OIDC 2026-02-25 21:28:05 +01:00
oidc_template_test.go templates: generalise auth templates for web and OIDC 2026-02-25 21:28:05 +01:00
oidc_test.go oidc: make email verification configurable 2025-12-18 11:42:32 +00:00
platform_config.go all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
poll.go all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
tailsql.go all: fix golangci-lint issues (#3064) 2026-02-06 21:45:32 +01:00
templates_consistency_test.go templates: generalise auth templates for web and OIDC 2026-02-25 21:28:05 +01:00