carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1package host
2
3import (
4 "github.com/carlosframework/platform/internal/hostfloor"
5 "github.com/carlosframework/platform/internal/release"
6 "github.com/carlosframework/platform/internal/status"
7 "github.com/carlosframework/platform/internal/version"
8 "os"
9 "path/filepath"
10 "runtime"
11 "strings"
12)
13
14func claimReport(p *status.Probes) {
15 d, err := floorDisk(release.OptDir())
16 if err != nil {
17 return
18 }
19 e, err := hostfloor.ReadEnrollment("/etc/carlos/host-actor.json")
20 if err != nil {
21 return
22 }
23 r, err := d.Running(version.Build, runtime.GOOS+"-"+runtime.GOARCH)
24 if err != nil {
25 return
26 }
27 if completed, err := os.ReadFile(filepath.Join(d.Dir, "completed.json")); err == nil && len(completed) == 32 && hostfloor.UpdateIdle(d.Dir, filepath.Join(systemRootDir(release.OptDir()), "journal.json")) == nil {
28 p.ActivationID = string(completed)
29 p.ActivationComplete = true
30 }
31 p.Enrollment = e.Enrollment
32 p.ReleaseTag = r.ReleaseTag
33 p.BinarySHA256 = r.Hash
34 p.MovesProtocol = r.Protocol
35 p.BootID = r.BootID
36 p.FloorSHA256 = r.FloorSHA256
37 p.FloorGuardReady = r.GuardReady
38 p.HostClaimEnabled = strings.TrimSpace(os.Getenv("CARLOS_HOST_CLAIM")) != ""
39}
40