@glassmkr/crucible 0.13.20 → 0.13.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +5 -5
  2. package/dist/__tests__/enroll.test.d.ts +1 -0
  3. package/dist/__tests__/enroll.test.js +135 -0
  4. package/dist/__tests__/enroll.test.js.map +1 -0
  5. package/dist/cli.d.ts +13 -1
  6. package/dist/cli.js +116 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/collect/__tests__/dmi.test.js +28 -0
  9. package/dist/collect/__tests__/dmi.test.js.map +1 -1
  10. package/dist/collect/__tests__/memory-topology.test.js +28 -0
  11. package/dist/collect/__tests__/memory-topology.test.js.map +1 -1
  12. package/dist/collect/__tests__/security-ssh-mtime.test.d.ts +1 -0
  13. package/dist/collect/__tests__/security-ssh-mtime.test.js +64 -0
  14. package/dist/collect/__tests__/security-ssh-mtime.test.js.map +1 -0
  15. package/dist/collect/dmi.d.ts +2 -7
  16. package/dist/collect/dmi.js +67 -39
  17. package/dist/collect/dmi.js.map +1 -1
  18. package/dist/collect/memory-topology.js +9 -2
  19. package/dist/collect/memory-topology.js.map +1 -1
  20. package/dist/collect/security.d.ts +1 -0
  21. package/dist/collect/security.js +39 -6
  22. package/dist/collect/security.js.map +1 -1
  23. package/dist/collect/smart.js +7 -3
  24. package/dist/collect/smart.js.map +1 -1
  25. package/dist/enroll.d.ts +26 -0
  26. package/dist/enroll.js +156 -0
  27. package/dist/enroll.js.map +1 -0
  28. package/dist/index.js +19 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/init.js +1 -1
  31. package/dist/init.js.map +1 -1
  32. package/dist/lib/__tests__/machine-id.test.d.ts +1 -0
  33. package/dist/lib/__tests__/machine-id.test.js +52 -0
  34. package/dist/lib/__tests__/machine-id.test.js.map +1 -0
  35. package/dist/lib/machine-id.d.ts +13 -0
  36. package/dist/lib/machine-id.js +62 -0
  37. package/dist/lib/machine-id.js.map +1 -0
  38. package/dist/lib/privileged.d.ts +3 -3
  39. package/dist/lib/privileged.js +35 -3
  40. package/dist/lib/privileged.js.map +1 -1
  41. package/package.json +1 -1
package/dist/enroll.js ADDED
@@ -0,0 +1,156 @@
1
+ // `glassmkr-crucible enroll` subcommand: hands-off fleet onboarding.
2
+ //
3
+ // Where `init` needs a per-server collector key (gmk_cru_live_...) that a
4
+ // human already minted in the dashboard, `enroll` takes ONE account-scoped
5
+ // key (gmk_acct_live_..., write scope) that can be baked into an Ansible /
6
+ // cloud-init / post-install run and shared across the whole fleet. Each host:
7
+ //
8
+ // 1. Derives its stable machine identity (DMI product_uuid or machine-id).
9
+ // 2. POSTs it to the dashboard, which self-registers the server and returns
10
+ // that host's own collector key. Re-running maps back to the SAME server
11
+ // (identity dedup, migration 033) instead of creating a duplicate.
12
+ // 3. Hands the returned collector key to the exact same config + systemd
13
+ // path as `init`.
14
+ //
15
+ // The account key is used only for that one POST and is NEVER written to disk;
16
+ // only the per-server collector key lands in /etc/glassmkr/crucible.yaml. So a
17
+ // stolen box yields one collector key (revocable, single-server), not the
18
+ // fleet-wide account key.
19
+ import { runInit, defaultDeps, DEFAULT_INGEST_URL, DEFAULT_CONFIG_PATH, } from "./init.js";
20
+ import { readMachineId } from "./lib/machine-id.js";
21
+ const DEFAULT_DASHBOARD_URL = "https://app.glassmkr.com";
22
+ // gmk_acct_live_<base>[_<4>]. Kept deliberately loose (prefix + min length)
23
+ // so a dashboard-side key-format tweak does not silently reject valid keys;
24
+ // the authoritative check is the dashboard rejecting a bad key with 401/403.
25
+ const ACCT_KEY_RE = /^gmk_acct_live_[A-Za-z0-9_]{8,}$/;
26
+ // Strip a trailing slash and an accidental /api/v1/ingest suffix so callers
27
+ // can pass either the dashboard base or the ingest URL they already know.
28
+ export function normalizeDashboardBase(raw) {
29
+ return raw.replace(/\/+$/, "").replace(/\/api\/v1\/ingest$/, "");
30
+ }
31
+ export async function runEnroll(opts, deps) {
32
+ let accountKey = opts.accountKey;
33
+ if (accountKey === "-") {
34
+ try {
35
+ accountKey = (await deps.readStdin()).replace(/\r?\n$/, "").trim();
36
+ }
37
+ catch (err) {
38
+ deps.error(`[enroll] failed to read account key from stdin: ${err?.message ?? err}`);
39
+ return 1;
40
+ }
41
+ }
42
+ if (!ACCT_KEY_RE.test(accountKey)) {
43
+ deps.error(`[enroll] invalid --account-key: must look like "gmk_acct_live_<...>". Create a write-scoped account key in Settings -> API keys.`);
44
+ return 2;
45
+ }
46
+ const configPath = opts.configPath ?? DEFAULT_CONFIG_PATH;
47
+ // Client-side idempotency: if the host is already configured, do nothing
48
+ // (and do NOT call the API, so a re-run of the playbook never needlessly
49
+ // rotates the collector key). --force re-enrolls and rotates.
50
+ if (deps.fs.existsSync(configPath) && !opts.force) {
51
+ deps.log(`[enroll] already configured at ${configPath}; nothing to do. Use --force to re-enroll (rotates the collector key).`);
52
+ return 0;
53
+ }
54
+ const machine = deps.readMachineId();
55
+ if (machine) {
56
+ deps.log(`[enroll] machine identity: ${machine.id} (source: ${machine.source})`);
57
+ }
58
+ else {
59
+ deps.warn(`[enroll] no stable machine id (no readable product_uuid or /etc/machine-id); enrolling without dedup. A re-run may create a duplicate server.`);
60
+ }
61
+ const base = normalizeDashboardBase(opts.dashboardUrl ?? DEFAULT_DASHBOARD_URL);
62
+ const serversUrl = `${base}/api/v1/servers`;
63
+ const headers = {
64
+ Authorization: `Bearer ${accountKey}`,
65
+ "Content-Type": "application/json",
66
+ };
67
+ // A stable Idempotency-Key gives a second, short-window guard on top of the
68
+ // durable machine_id dedup (protects a burst of retries within 24h).
69
+ if (machine)
70
+ headers["Idempotency-Key"] = `enroll-${machine.id}`;
71
+ const body = { hostname: deps.hostname() };
72
+ if (machine)
73
+ body.machine_id = machine.id;
74
+ if (opts.name && opts.name.trim())
75
+ body.name = opts.name.trim();
76
+ if (opts.tags && opts.tags.length)
77
+ body.tags = opts.tags;
78
+ deps.log(`[enroll] registering with ${serversUrl} ...`);
79
+ let resp;
80
+ try {
81
+ resp = await deps.postJson(serversUrl, body, headers);
82
+ }
83
+ catch (err) {
84
+ deps.error(`[enroll] could not reach ${serversUrl}: ${err?.message ?? err}`);
85
+ return 8;
86
+ }
87
+ if (resp.status === 401 || resp.status === 403) {
88
+ deps.error(`[enroll] account key rejected (HTTP ${resp.status}). Check the key and that it has 'write' scope.`);
89
+ return 3;
90
+ }
91
+ if (resp.status === 402) {
92
+ deps.error(`[enroll] ${resp.json?.message ?? "server limit reached or server suspended"} (HTTP 402).`);
93
+ return 10;
94
+ }
95
+ if (resp.status === 409) {
96
+ deps.error(`[enroll] concurrent enrollment for this machine (HTTP 409). Re-run to pick up the existing registration.`);
97
+ return 11;
98
+ }
99
+ if (resp.status === 429) {
100
+ deps.error(`[enroll] rate limited (HTTP 429). Wait and re-run.`);
101
+ return 13;
102
+ }
103
+ if (resp.status !== 200 && resp.status !== 201) {
104
+ deps.error(`[enroll] server registration failed (HTTP ${resp.status}): ${JSON.stringify(resp.json).slice(0, 200)}`);
105
+ return 12;
106
+ }
107
+ const collectorKey = resp.json?.server?.collector_key ?? resp.json?.server?.api_key;
108
+ const ingestUrl = resp.json?.ingest_url ?? DEFAULT_INGEST_URL;
109
+ if (!collectorKey) {
110
+ deps.error(`[enroll] registration succeeded (HTTP ${resp.status}) but no collector key in the response.`);
111
+ return 12;
112
+ }
113
+ deps.log(resp.json?.reenrolled
114
+ ? `[enroll] machine already registered as ${resp.json?.server?.id}; collector key rotated.`
115
+ : `[enroll] registered new server ${resp.json?.server?.id}.`);
116
+ // Hand the freshly-issued collector key to the shared init path (config +
117
+ // privilege separation + systemd unit + start). The account key is not
118
+ // passed on and never touches disk. The key was just accepted by the API,
119
+ // so the connectivity probe is redundant -> default to skipping it.
120
+ return runInit({
121
+ apiKey: collectorKey,
122
+ name: opts.name,
123
+ ingestUrl,
124
+ configPath: opts.configPath,
125
+ noStart: opts.noStart,
126
+ force: opts.force,
127
+ noVerify: opts.noVerify ?? true,
128
+ }, deps);
129
+ }
130
+ /**
131
+ * Default IO bindings for enroll: the real init deps plus a JSON POST helper
132
+ * and the real machine-id reader.
133
+ */
134
+ export function defaultEnrollDeps() {
135
+ return {
136
+ ...defaultDeps(),
137
+ postJson: async (url, body, headers) => {
138
+ const r = await fetch(url, {
139
+ method: "POST",
140
+ headers,
141
+ body: JSON.stringify(body),
142
+ signal: AbortSignal.timeout(15000),
143
+ });
144
+ let json = null;
145
+ try {
146
+ json = await r.json();
147
+ }
148
+ catch {
149
+ json = null;
150
+ }
151
+ return { status: r.status, json };
152
+ },
153
+ readMachineId: () => readMachineId(),
154
+ };
155
+ }
156
+ //# sourceMappingURL=enroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enroll.js","sourceRoot":"","sources":["../src/enroll.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -34,6 +34,25 @@ if (cliArgs.mode === "init") {
34
34
  }, defaultDeps());
35
35
  process.exit(code);
36
36
  }
37
+ if (cliArgs.mode === "enroll") {
38
+ const { runEnroll, defaultEnrollDeps } = await import("./enroll.js");
39
+ const flags = cliArgs.enroll;
40
+ if (!flags || !flags.accountKey) {
41
+ console.error("[enroll] missing required --account-key (use --account-key - to read from stdin). See 'glassmkr-crucible enroll --help'.");
42
+ process.exit(2);
43
+ }
44
+ const code = await runEnroll({
45
+ accountKey: flags.accountKey,
46
+ name: flags.name,
47
+ dashboardUrl: flags.dashboardUrl,
48
+ configPath: flags.configPath,
49
+ tags: flags.tags,
50
+ noStart: flags.noStart,
51
+ force: flags.force,
52
+ noVerify: flags.noVerify,
53
+ }, defaultEnrollDeps());
54
+ process.exit(code);
55
+ }
37
56
  if (cliArgs.mode === "mark-reboot" || cliArgs.mode === "reboot") {
38
57
  const { writeRebootMarker, parseDuration, DEFAULT_TTL_MS } = await import("./lib/reboot-marker.js");
39
58
  const ttlMs = cliArgs.ttl ? parseDuration(cliArgs.ttl) : DEFAULT_TTL_MS;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/init.js CHANGED
@@ -107,7 +107,7 @@ export function setupPrivilegeSeparation(deps, configPath) {
107
107
  }
108
108
  deps.log(`[init] created system user '${SERVICE_USER}'.`);
109
109
  }
110
- // 2. The collection wrapper (root:root 0755 must NOT be writable by the
110
+ // 2. The collection wrapper (root:root 0755; must NOT be writable by the
111
111
  // service user, or the sudo grant could be hijacked).
112
112
  try {
113
113
  deps.fs.writeFileSync(WRAPPER_PATH, WRAPPER_SCRIPT, { mode: 0o755 });
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,52 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { readMachineId } from "../machine-id.js";
3
+ const GOOD_UUID = "4c4c4544-0042-3010-8058-b4c04f584a33";
4
+ const GOOD_MACHINE_ID = "9f3c2b1a4d5e6f708192a3b4c5d6e7f8";
5
+ // Build a fake readFileSync from a path->content map; unknown paths throw
6
+ // ENOENT like the real fs.
7
+ function reader(files) {
8
+ return (p) => {
9
+ if (p in files)
10
+ return files[p];
11
+ throw Object.assign(new Error(`ENOENT: ${p}`), { code: "ENOENT" });
12
+ };
13
+ }
14
+ describe("readMachineId", () => {
15
+ it("prefers a valid DMI product_uuid", () => {
16
+ const r = readMachineId(reader({
17
+ "/sys/class/dmi/id/product_uuid": GOOD_UUID + "\n",
18
+ "/etc/machine-id": GOOD_MACHINE_ID + "\n",
19
+ }));
20
+ expect(r).toEqual({ id: GOOD_UUID, source: "product_uuid" });
21
+ });
22
+ it("falls back to /etc/machine-id when product_uuid is unreadable", () => {
23
+ const r = readMachineId(reader({ "/etc/machine-id": GOOD_MACHINE_ID + "\n" }));
24
+ expect(r).toEqual({ id: GOOD_MACHINE_ID, source: "machine_id" });
25
+ });
26
+ it("rejects a bogus vendor product_uuid and falls back to machine-id", () => {
27
+ const r = readMachineId(reader({
28
+ "/sys/class/dmi/id/product_uuid": "03000200-0400-0500-0006-000700080009\n",
29
+ "/etc/machine-id": GOOD_MACHINE_ID + "\n",
30
+ }));
31
+ expect(r).toEqual({ id: GOOD_MACHINE_ID, source: "machine_id" });
32
+ });
33
+ it("rejects the all-zero product_uuid", () => {
34
+ const r = readMachineId(reader({
35
+ "/sys/class/dmi/id/product_uuid": "00000000-0000-0000-0000-000000000000\n",
36
+ "/etc/machine-id": GOOD_MACHINE_ID + "\n",
37
+ }));
38
+ expect(r?.source).toBe("machine_id");
39
+ });
40
+ it("uses the dbus machine-id as a last resort", () => {
41
+ const r = readMachineId(reader({ "/var/lib/dbus/machine-id": GOOD_MACHINE_ID + "\n" }));
42
+ expect(r).toEqual({ id: GOOD_MACHINE_ID, source: "machine_id" });
43
+ });
44
+ it("returns null when nothing usable is present", () => {
45
+ expect(readMachineId(reader({}))).toBeNull();
46
+ });
47
+ it("normalises case and trims whitespace", () => {
48
+ const r = readMachineId(reader({ "/sys/class/dmi/id/product_uuid": " " + GOOD_UUID.toUpperCase() + " \n" }));
49
+ expect(r).toEqual({ id: GOOD_UUID, source: "product_uuid" });
50
+ });
51
+ });
52
+ //# sourceMappingURL=machine-id.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/machine-id.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type MachineIdSource = "product_uuid" | "machine_id";
2
+ export interface MachineId {
3
+ id: string;
4
+ source: MachineIdSource;
5
+ }
6
+ export type ReadFileSync = (path: string) => string;
7
+ /**
8
+ * Resolve the host's stable machine identity, or null when nothing usable is
9
+ * available (e.g. running unprivileged with no product UUID and no
10
+ * machine-id). Callers should degrade gracefully to non-idempotent enroll
11
+ * when this returns null. `readFileSync` is injectable for tests.
12
+ */
13
+ export declare function readMachineId(readFileSync?: ReadFileSync): MachineId | null;
@@ -0,0 +1,62 @@
1
+ // Stable, machine-unique identity used to make fleet onboarding idempotent.
2
+ //
3
+ // When a provisioning script (Ansible / cloud-init / post-install) re-runs
4
+ // against a host, the dashboard needs to recognise "this is the same machine"
5
+ // so it maps back to the existing server row instead of minting a duplicate
6
+ // that burns the node quota. This module derives that identity.
7
+ //
8
+ // Preference order:
9
+ // 1. DMI product UUID (/sys/class/dmi/id/product_uuid) - survives an OS
10
+ // reinstall on bare metal (our primary target). Requires root to read
11
+ // (the file is 0400), which the enroll flow has.
12
+ // 2. /etc/machine-id (or /var/lib/dbus/machine-id) - systemd's stable
13
+ // per-install id; world-readable, and regenerated on a proper clone, so
14
+ // it disambiguates VMs when a product UUID is absent or vendor-shared.
15
+ //
16
+ // Some firmware ships a bogus or vendor-duplicated product UUID (the same
17
+ // value across many boards); those are rejected so identity never collapses
18
+ // unrelated hosts onto one server row.
19
+ import * as fs from "node:fs";
20
+ const PRODUCT_UUID_PATH = "/sys/class/dmi/id/product_uuid";
21
+ const MACHINE_ID_PATHS = ["/etc/machine-id", "/var/lib/dbus/machine-id"];
22
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
23
+ const MACHINE_ID_RE = /^[0-9a-f]{32}$/;
24
+ // Known-bogus product UUIDs seen across many boards from the same vendor
25
+ // (AMI/MSI sample values, all-zero, all-ff). Never use these as identity.
26
+ const BOGUS_UUIDS = new Set([
27
+ "00000000-0000-0000-0000-000000000000",
28
+ "ffffffff-ffff-ffff-ffff-ffffffffffff",
29
+ "03000200-0400-0500-0006-000700080009",
30
+ "00020003-0004-0005-0006-000700080009",
31
+ ]);
32
+ const defaultReadFileSync = (p) => fs.readFileSync(p, "utf8");
33
+ /**
34
+ * Resolve the host's stable machine identity, or null when nothing usable is
35
+ * available (e.g. running unprivileged with no product UUID and no
36
+ * machine-id). Callers should degrade gracefully to non-idempotent enroll
37
+ * when this returns null. `readFileSync` is injectable for tests.
38
+ */
39
+ export function readMachineId(readFileSync = defaultReadFileSync) {
40
+ try {
41
+ const raw = readFileSync(PRODUCT_UUID_PATH).trim().toLowerCase();
42
+ if (UUID_RE.test(raw) && !BOGUS_UUIDS.has(raw)) {
43
+ return { id: raw, source: "product_uuid" };
44
+ }
45
+ }
46
+ catch {
47
+ // product_uuid unreadable (non-root, VM, or absent) - fall through.
48
+ }
49
+ for (const path of MACHINE_ID_PATHS) {
50
+ try {
51
+ const raw = readFileSync(path).trim().toLowerCase();
52
+ if (MACHINE_ID_RE.test(raw)) {
53
+ return { id: raw, source: "machine_id" };
54
+ }
55
+ }
56
+ catch {
57
+ // try the next candidate
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ //# sourceMappingURL=machine-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-id.js","sourceRoot":"","sources":["../../src/lib/machine-id.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,gEAAgE;AAChE,EAAE;AACF,oBAAoB;AACpB,0EAA0E;AAC1E,2EAA2E;AAC3E,sDAAsD;AACtD,wEAAwE;AACxE,6EAA6E;AAC7E,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,uCAAuC;AAEvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,iBAAiB,GAAG,gCAAgC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;AAEzE,MAAM,OAAO,GAAG,gEAAgE,CAAC;AACjF,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAEvC,yEAAyE;AACzE,0EAA0E;AAC1E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,sCAAsC;IACtC,sCAAsC;IACtC,sCAAsC;IACtC,sCAAsC;CACvC,CAAC,CAAC;AAWH,MAAM,mBAAmB,GAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,eAA6B,mBAAmB;IAC5E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjE,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACpD,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export declare const SERVICE_USER = "glassmkr";
2
2
  export declare const WRAPPER_PATH = "/usr/local/sbin/crucible-collect";
3
3
  export declare const SUDOERS_PATH = "/etc/sudoers.d/glassmkr-crucible";
4
- export type PrivilegedAction = "ipmi-sensor" | "ipmi-sel-info" | "ipmi-sel-elist" | "ipmi-fan" | "smart" | "zpool" | "raid-perccli" | "raid-storcli" | "raid-ssacli" | "raid-arcconf" | "dmesg-errcrit" | "dmesg-io" | "iptables" | "nft" | "ufw" | "firewall-cmd" | "pve-firewall" | "sshd" | "lvs" | "ethtool" | "last" | "dmidecode-memory" | "proc-fd";
4
+ export type PrivilegedAction = "ipmi-sensor" | "ipmi-sel-info" | "ipmi-sel-elist" | "ipmi-fan" | "smart" | "zpool" | "raid-perccli" | "raid-storcli" | "raid-ssacli" | "raid-arcconf" | "dmesg-errcrit" | "dmesg-io" | "iptables" | "nft" | "ufw" | "firewall-cmd" | "pve-firewall" | "sshd" | "lvs" | "ethtool" | "last" | "dmidecode-memory" | "proc-fd" | "ssh-config-mtime";
5
5
  /** SMART device paths the wrapper accepts. Mirrors the sh `valid_device`
6
6
  * case in WRAPPER_SCRIPT; kept in TS so it is unit-testable. Blocks path
7
7
  * traversal / arbitrary-file reads via `smartctl -a <path>`. */
@@ -27,5 +27,5 @@ export declare function isAllowedIface(name: string): boolean;
27
27
  * the wrapper still gets null (it cannot and must not escalate).
28
28
  */
29
29
  export declare function runPrivileged(action: PrivilegedAction, args?: string[], timeoutMs?: number): Promise<string | null>;
30
- export declare const WRAPPER_SCRIPT = "#!/bin/sh\n# Glassmkr Crucible privileged-collection facade (audit \u00A72.1).\n# Installed root:root 0755. The sole sudo grant for the unprivileged\n# 'glassmkr' service user. Fixed action -> fixed argv; no passthrough.\n# Managed by glassmkr-crucible init; do not edit by hand.\nset -eu\n\naction=\"${1:-}\"\n[ -n \"$action\" ] || { echo \"crucible-collect: missing action\" >&2; exit 64; }\nshift 2>/dev/null || true\n\nvalid_device() {\n case \"$1\" in\n /dev/sd[a-z]|/dev/sd[a-z][a-z]|/dev/hd[a-z]|/dev/hd[a-z][a-z]) return 0 ;;\n /dev/nvme[0-9]*n[0-9]*|/dev/nvme[0-9]*) return 0 ;;\n /dev/bus/[0-9]*) return 0 ;;\n *) return 1 ;;\n esac\n}\nvalid_iface() {\n case \"$1\" in\n \"\" | *[!A-Za-z0-9._:-]*) return 1 ;;\n *) [ \"${#1}\" -le 15 ] ;;\n esac\n}\n\ncase \"$action\" in\n ipmi-sensor) exec ipmitool sensor ;;\n ipmi-sel-info) exec ipmitool sel info ;;\n ipmi-sel-elist) exec ipmitool sel elist ;;\n ipmi-fan) exec ipmitool sdr type Fan ;;\n smart)\n dev=\"${1:-}\"\n valid_device \"$dev\" || { echo \"crucible-collect: rejected device: $dev\" >&2; exit 65; }\n exec smartctl --json --all \"$dev\" ;;\n zpool) exec zpool status ;;\n raid-perccli) exec perccli /c0 show all J ;;\n raid-storcli) exec storcli /call show all J ;;\n raid-ssacli) exec ssacli ctrl all show status ;;\n raid-arcconf) exec arcconf list ;;\n dmesg-errcrit) exec dmesg --level=err,crit --since \"5 min ago\" ;;\n dmesg-io) exec sh -c 'dmesg -T --since \"10 minutes ago\" 2>/dev/null | grep -i \"I/O error\\\\|Buffer I/O error\\\\|blk_update_request.*error\"' ;;\n iptables) exec iptables -L -n ;;\n nft) exec nft list ruleset ;;\n ufw) exec ufw status ;;\n firewall-cmd) exec firewall-cmd --state ;;\n pve-firewall) exec pve-firewall status ;;\n sshd) exec sshd -T ;;\n dmidecode-memory) exec dmidecode -t 17 ;;\n lvs) exec lvs --reportformat=json --options=lv_name,vg_name,lv_attr,data_percent,metadata_percent --units=b --noheadings ;;\n ethtool)\n ifc=\"${1:-}\"\n valid_iface \"$ifc\" || { echo \"crucible-collect: rejected iface: $ifc\" >&2; exit 65; }\n exec ethtool \"$ifc\" ;;\n last) exec last -x -F ;;\n proc-fd)\nc=0\nfor d in /proc/[0-9]*; do if [ -r \"$d/fd\" ]; then c=$((c+1)); fi; done\necho \"SCANNED $c\"\nfor d in /proc/[0-9]*; do [ -r \"$d/fd\" ] || continue; p=$(basename \"$d\"); n=$(ls \"$d/fd\" 2>/dev/null | wc -l); echo \"$n $p\"; done | sort -rn | head -50 | while read n p; do comm=$(cat /proc/$p/comm 2>/dev/null); lim=$(awk '/^Max open files/{print $4\" \"$5}' /proc/$p/limits 2>/dev/null); if [ -n \"$comm\" ]; then echo \"$p|$n|$lim|$comm\"; fi; done\n exit 0 ;;\n *) echo \"crucible-collect: unknown action: $action\" >&2; exit 64 ;;\nesac\n";
31
- export declare const SUDOERS_CONTENT = "# Glassmkr Crucible (audit \u00A72.1). Managed by glassmkr-crucible init.\n# The service user may run ONLY the fixed-argv collection facade as root.\nDefaults!/usr/local/sbin/crucible-collect env_reset\nDefaults!/usr/local/sbin/crucible-collect secure_path=\"/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin\"\nglassmkr ALL=(root) NOPASSWD: /usr/local/sbin/crucible-collect\n";
30
+ export declare const WRAPPER_SCRIPT = "#!/bin/sh\n# Glassmkr Crucible privileged-collection facade (audit \u00A72.1).\n# Installed root:root 0755. The sole sudo grant for the unprivileged\n# 'glassmkr' service user. Fixed action -> fixed argv; no passthrough.\n# Managed by glassmkr-crucible init; do not edit by hand.\nset -eu\n\naction=\"${1:-}\"\n[ -n \"$action\" ] || { echo \"crucible-collect: missing action\" >&2; exit 64; }\nshift 2>/dev/null || true\n\nvalid_device() {\n # Mirror the anchored TS isAllowedSmartDevice. POSIX 'case' patterns treat\n # the operand as a plain string, so a trailing '*' matches '/' too; that let\n # /dev/nvme0/../../etc/shadow and /dev/bus/0/../../etc/passwd slip through the\n # old '/dev/nvme[0-9]*' / '/dev/bus/[0-9]*' arms. Reject any '..' outright,\n # then constrain the variable tail of each arm to the allowed characters\n # (digits, and a single 'n' for nvme) so no post-stem '/' survives.\n case \"$1\" in *..*) return 1 ;; esac\n case \"$1\" in\n /dev/sd[a-z]|/dev/sd[a-z][a-z]|/dev/hd[a-z]|/dev/hd[a-z][a-z]) return 0 ;;\n /dev/nvme[0-9]*n[0-9]*|/dev/nvme[0-9]*)\n case \"${1#/dev/nvme}\" in *[!0-9n]*) return 1 ;; *) return 0 ;; esac ;;\n /dev/bus/[0-9]*)\n case \"${1#/dev/bus/}\" in \"\"|*[!0-9]*) return 1 ;; *) return 0 ;; esac ;;\n *) return 1 ;;\n esac\n}\nvalid_iface() {\n case \"$1\" in\n \"\" | *[!A-Za-z0-9._:-]*) return 1 ;;\n *) [ \"${#1}\" -le 15 ] ;;\n esac\n}\n\ncase \"$action\" in\n ipmi-sensor) exec ipmitool sensor ;;\n ipmi-sel-info) exec ipmitool sel info ;;\n ipmi-sel-elist) exec ipmitool sel elist ;;\n ipmi-fan) exec ipmitool sdr type Fan ;;\n smart)\n dev=\"${1:-}\"\n valid_device \"$dev\" || { echo \"crucible-collect: rejected device: $dev\" >&2; exit 65; }\n exec smartctl --json --all \"$dev\" ;;\n zpool) exec zpool status ;;\n raid-perccli) exec perccli /c0 show all J ;;\n raid-storcli) exec storcli /call show all J ;;\n raid-ssacli) exec ssacli ctrl all show status ;;\n raid-arcconf) exec arcconf list ;;\n dmesg-errcrit) exec dmesg --level=err,crit --since \"5 min ago\" ;;\n dmesg-io) exec sh -c 'dmesg -T --since \"10 minutes ago\" 2>/dev/null | grep -i \"I/O error\\\\|Buffer I/O error\\\\|blk_update_request.*error\"' ;;\n iptables) exec iptables -L -n ;;\n nft) exec nft list ruleset ;;\n ufw) exec ufw status ;;\n firewall-cmd) exec firewall-cmd --state ;;\n pve-firewall) exec pve-firewall status ;;\n sshd) exec sshd -T ;;\n dmidecode-memory) exec dmidecode -t 17 ;;\n lvs) exec lvs --reportformat=json --options=lv_name,vg_name,lv_attr,data_percent,metadata_percent --units=b --noheadings ;;\n ethtool)\n ifc=\"${1:-}\"\n valid_iface \"$ifc\" || { echo \"crucible-collect: rejected iface: $ifc\" >&2; exit 65; }\n exec ethtool \"$ifc\" ;;\n last) exec last -x -F ;;\n proc-fd)\nc=0\nfor d in /proc/[0-9]*; do if [ -r \"$d/fd\" ]; then c=$((c+1)); fi; done\necho \"SCANNED $c\"\nfor d in /proc/[0-9]*; do [ -r \"$d/fd\" ] || continue; p=$(basename \"$d\"); n=$(ls \"$d/fd\" 2>/dev/null | wc -l); echo \"$n $p\"; done | sort -rn | head -50 | while read n p; do comm=$(cat /proc/$p/comm 2>/dev/null); lim=$(awk '/^Max open files/{print $4\" \"$5}' /proc/$p/limits 2>/dev/null); if [ -n \"$comm\" ]; then echo \"$p|$n|$lim|$comm\"; fi; done\n exit 0 ;;\n ssh-config-mtime)\nnewest=0\nm=$(stat -c %Y /etc/ssh/sshd_config 2>/dev/null || echo 0)\nif [ \"$m\" -gt \"$newest\" ]; then newest=$m; fi\nfor f in /etc/ssh/sshd_config.d/*.conf; do\n if [ -e \"$f\" ]; then\n m=$(stat -c %Y \"$f\" 2>/dev/null || echo 0)\n if [ \"$m\" -gt \"$newest\" ]; then newest=$m; fi\n fi\ndone\necho \"$newest\"\n exit 0 ;;\n *) echo \"crucible-collect: unknown action: $action\" >&2; exit 64 ;;\nesac\n";
31
+ export declare const SUDOERS_CONTENT = "# Glassmkr Crucible (audit \u00A72.1). Managed by glassmkr-crucible init.\n# The service user may run ONLY the fixed-argv collection facade as root.\nDefaults!/usr/local/sbin/crucible-collect env_reset\nDefaults!/usr/local/sbin/crucible-collect secure_path=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\nglassmkr ALL=(root) NOPASSWD: /usr/local/sbin/crucible-collect\n";
@@ -35,6 +35,25 @@ const PROC_FD_SH = `c=0
35
35
  for d in /proc/[0-9]*; do if [ -r "$d/fd" ]; then c=$((c+1)); fi; done
36
36
  echo "SCANNED $c"
37
37
  for d in /proc/[0-9]*; do [ -r "$d/fd" ] || continue; p=$(basename "$d"); n=$(ls "$d/fd" 2>/dev/null | wc -l); echo "$n $p"; done | sort -rn | head -50 | while read n p; do comm=$(cat /proc/$p/comm 2>/dev/null); lim=$(awk '/^Max open files/{print $4" "$5}' /proc/$p/limits 2>/dev/null); if [ -n "$comm" ]; then echo "$p|$n|$lim|$comm"; fi; done`;
38
+ // ssh-config-mtime scan (added for the RHEL drop-in visibility fix). Prints the
39
+ // newest mtime (epoch seconds) among /etc/ssh/sshd_config and its *.conf
40
+ // drop-ins, so the unprivileged `glassmkr` service user can still tell whether
41
+ // an sshd edit is staged-but-unapplied even when /etc/ssh/sshd_config.d is
42
+ // 0700 root (RHEL default), where a direct readdir returns EACCES. Strictly
43
+ // read-only + fixed-path: it only ever stats those two locations, never reads
44
+ // contents and never writes. `stat -c %Y` is Linux/coreutils (the wrapper only
45
+ // ever runs on Linux hosts). if/then guards keep it safe under `set -eu`; a
46
+ // non-matching glob stays literal and is skipped by the `[ -e ]` test.
47
+ const SSH_CONFIG_MTIME_SH = `newest=0
48
+ m=$(stat -c %Y /etc/ssh/sshd_config 2>/dev/null || echo 0)
49
+ if [ "$m" -gt "$newest" ]; then newest=$m; fi
50
+ for f in /etc/ssh/sshd_config.d/*.conf; do
51
+ if [ -e "$f" ]; then
52
+ m=$(stat -c %Y "$f" 2>/dev/null || echo 0)
53
+ if [ "$m" -gt "$newest" ]; then newest=$m; fi
54
+ fi
55
+ done
56
+ echo "$newest"`;
38
57
  /** SMART device paths the wrapper accepts. Mirrors the sh `valid_device`
39
58
  * case in WRAPPER_SCRIPT; kept in TS so it is unit-testable. Blocks path
40
59
  * traversal / arbitrary-file reads via `smartctl -a <path>`. */
@@ -78,6 +97,7 @@ function directCommand(action, args) {
78
97
  case "last": return { cmd: "last", args: ["-x", "-F"] };
79
98
  case "dmidecode-memory": return { cmd: "dmidecode", args: ["-t", "17"] };
80
99
  case "proc-fd": return { cmd: "sh", args: ["-c", PROC_FD_SH] };
100
+ case "ssh-config-mtime": return { cmd: "sh", args: ["-c", SSH_CONFIG_MTIME_SH] };
81
101
  default: return null;
82
102
  }
83
103
  }
@@ -125,10 +145,19 @@ action="\${1:-}"
125
145
  shift 2>/dev/null || true
126
146
 
127
147
  valid_device() {
148
+ # Mirror the anchored TS isAllowedSmartDevice. POSIX 'case' patterns treat
149
+ # the operand as a plain string, so a trailing '*' matches '/' too; that let
150
+ # /dev/nvme0/../../etc/shadow and /dev/bus/0/../../etc/passwd slip through the
151
+ # old '/dev/nvme[0-9]*' / '/dev/bus/[0-9]*' arms. Reject any '..' outright,
152
+ # then constrain the variable tail of each arm to the allowed characters
153
+ # (digits, and a single 'n' for nvme) so no post-stem '/' survives.
154
+ case "$1" in *..*) return 1 ;; esac
128
155
  case "$1" in
129
156
  /dev/sd[a-z]|/dev/sd[a-z][a-z]|/dev/hd[a-z]|/dev/hd[a-z][a-z]) return 0 ;;
130
- /dev/nvme[0-9]*n[0-9]*|/dev/nvme[0-9]*) return 0 ;;
131
- /dev/bus/[0-9]*) return 0 ;;
157
+ /dev/nvme[0-9]*n[0-9]*|/dev/nvme[0-9]*)
158
+ case "\${1#/dev/nvme}" in *[!0-9n]*) return 1 ;; *) return 0 ;; esac ;;
159
+ /dev/bus/[0-9]*)
160
+ case "\${1#/dev/bus/}" in ""|*[!0-9]*) return 1 ;; *) return 0 ;; esac ;;
132
161
  *) return 1 ;;
133
162
  esac
134
163
  }
@@ -171,6 +200,9 @@ case "$action" in
171
200
  proc-fd)
172
201
  ${PROC_FD_SH}
173
202
  exit 0 ;;
203
+ ssh-config-mtime)
204
+ ${SSH_CONFIG_MTIME_SH}
205
+ exit 0 ;;
174
206
  *) echo "crucible-collect: unknown action: $action" >&2; exit 64 ;;
175
207
  esac
176
208
  `;
@@ -180,7 +212,7 @@ esac
180
212
  export const SUDOERS_CONTENT = `# Glassmkr Crucible (audit §2.1). Managed by glassmkr-crucible init.
181
213
  # The service user may run ONLY the fixed-argv collection facade as root.
182
214
  Defaults!${WRAPPER_PATH} env_reset
183
- Defaults!${WRAPPER_PATH} secure_path="/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin"
215
+ Defaults!${WRAPPER_PATH} secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
184
216
  ${SERVICE_USER} ALL=(root) NOPASSWD: ${WRAPPER_PATH}
185
217
  `;
186
218
  //# sourceMappingURL=privileged.js.map