45 lines
767 B
Go
45 lines
767 B
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"nadir/internal/rbac"
|
|
|
|
"github.com/danielgtaylor/huma/v2"
|
|
)
|
|
|
|
const ModuleID = "system"
|
|
|
|
type Module struct {
|
|
sampler *Sampler
|
|
}
|
|
|
|
func New() *Module {
|
|
return &Module{
|
|
sampler: NewSampler("/proc/stat", 1*time.Second),
|
|
}
|
|
}
|
|
|
|
func (m *Module) ID() string { return ModuleID }
|
|
|
|
func (m *Module) Permissions() []rbac.Permission {
|
|
return []rbac.Permission{rbac.Read, rbac.Write, rbac.Root}
|
|
}
|
|
|
|
func (m *Module) Register(api huma.API) {
|
|
m.sampler.Start(context.Background())
|
|
registerInfo(api, m.sampler)
|
|
registerHostname(api)
|
|
registerTimedate(api)
|
|
registerLocale(api)
|
|
registerPower(api)
|
|
}
|
|
|
|
func op(permission string) map[string]any {
|
|
return map[string]any{
|
|
"module": ModuleID,
|
|
"permission": permission,
|
|
}
|
|
}
|