Documentation
¶
Overview ¶
Package lockdown provides fail-closed service lockdown stronger than maintenance. Unlock requires separate stronger auth + expected ID + confirm. Evidence is never deleted.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrActive = errors.New("lockdown: already active") ErrInactive = errors.New("lockdown: not active") ErrDenied = errors.New("lockdown: denied") ErrConfirm = errors.New("lockdown: confirm required") ErrExpectedID = errors.New("lockdown: expected id mismatch") ErrWeakAuth = errors.New("lockdown: unlock requires stronger auth") )
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
DurablePath string
EvidencePath string
Clock func() time.Time
AutoRateLimit time.Duration // min interval between auto triggers
}
Config configures Manager.
type EnterRequest ¶
EnterRequest configures Enter.
type Evidence ¶
type Evidence struct {
Time time.Time `json:"time"`
Event string `json:"event"`
ActorID string `json:"actor_id,omitempty"`
Attrs map[string]string `json:"attrs,omitempty"`
}
Evidence is never deleted by unlock.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager tracks lockdown.
func (*Manager) Enter ¶
func (m *Manager) Enter(req EnterRequest) (State, error)
Enter activates lockdown.
func (*Manager) TryAutoEnter ¶
TryAutoEnter rate-limits automatic lockdown triggers.
type State ¶
type State struct {
ID string `json:"id"`
Mode Mode `json:"mode"`
Reason string `json:"reason"`
EnteredAt time.Time `json:"entered_at"`
ActorID string `json:"actor_id"`
Active bool `json:"active"`
Trigger string `json:"trigger,omitempty"`
}
State is durable lockdown state. Historical evidence fields are append-only via Evidence.
Click to show internal directories.
Click to hide internal directories.