Felhom Hub

{{if .Flash}}
{{if eq .Flash "deleted"}}Customer configuration deleted. {{else if eq .Flash "floor_set"}}Controller-version floor saved. {{else if eq .Flash "floor_invalid"}}Invalid version — use X.Y.Z (or blank to clear). {{else if eq .Flash "artifacts_set"}}Artifact manifest saved. {{else if eq .Flash "artifact_ver_invalid"}}Invalid artifact version — use X.Y.Z (or blank to clear). {{else if eq .Flash "artifact_sha_invalid"}}Invalid sha256 — use 64 hex chars (or blank to clear). {{end}}
{{end}}

Managed updates — global floor

The minimum controller version every box auto-updates to (unless a per-customer override is set). Boxes below the floor update on their next report — no customer action. Blank = no global floor.

{{.CSRFField}} Current: {{if .GlobalFloor}}v{{.GlobalFloor}}{{else}}unset{{end}}

Day-0 artifacts — agent & golden

The current agent binary + golden archive the host-bootstrap script fetches from Gitea and verifies (sha256) before installing. The hub vouches for these checksums (a different trust root than Gitea). Paste the version + sha256 printed by publish-agent.sh / build-golden.sh. Blank a field to clear it.

{{.CSRFField}}

Customers

+ Add Customer
{{if not .Customers}}

No customers yet.

Add a customer configuration or wait for a controller to report in.

{{else}} {{range .Customers}} {{end}}
Customer ID Name Domain Status Version Floor Config
{{.CustomerID}} {{if .CustomerName}}{{.CustomerName}}{{else}}{{end}} {{if .Domain}}{{.Domain}}{{else}}{{end}} {{if .IsBlocked}} BLOCKED {{else if .OverallStatus}} {{if eq .OverallStatus "ok"}}OK{{else if eq .OverallStatus "warn"}}WARN{{else if eq .OverallStatus "down"}}DOWN{{else if eq .OverallStatus "disabled"}}PAUSED{{else if eq .OverallStatus "pending"}}PENDING{{else}}{{.OverallStatus}}{{end}} {{else}} {{end}} {{if .ControllerVersion}}{{.ControllerVersion}}{{else}}{{end}} {{if .EffectiveFloor}}v{{.EffectiveFloor}}{{if .FloorOverride}} (override){{end}}{{if .BelowFloor}}{{end}} {{else}}{{end}} {{if .HasConfig}} MANAGED {{else}} MANUAL {{end}}
{{end}}