Add read-only MG4 ADB status collector
This commit is contained in:
+7
-5
@@ -3,6 +3,7 @@ import { getServers } from "node:dns";
|
||||
import { hostname, networkInterfaces } from "node:os";
|
||||
import type { CompanionDatabase } from "./database.js";
|
||||
import { collectSystemStatus } from "./status.js";
|
||||
import { DISABLED_ADB_CONFIG, type AdbConfig } from "./adb.js";
|
||||
|
||||
const MAX_OUTPUT_BYTES = 32 * 1024;
|
||||
const SECRET_KEY = /authorization|cookie|csrf|password|secret|token|credential/i;
|
||||
@@ -98,7 +99,7 @@ function supportBundle(database: CompanionDatabase, generatedAt: string, status:
|
||||
};
|
||||
}
|
||||
|
||||
function defaultDefinitions(database: CompanionDatabase): readonly JobDefinition[] {
|
||||
function defaultDefinitions(database: CompanionDatabase, adbConfig: AdbConfig): readonly JobDefinition[] {
|
||||
const safeJob = (definition: Omit<JobDefinition, "riskLevel" | "confirmationRequired">): JobDefinition => ({
|
||||
...definition,
|
||||
riskLevel: "low",
|
||||
@@ -110,7 +111,7 @@ function defaultDefinitions(database: CompanionDatabase): readonly JobDefinition
|
||||
title: "Refresh system health",
|
||||
description: "Collect a fresh system health snapshot.",
|
||||
timeoutMs: 15_000,
|
||||
run: async () => collectSystemStatus()
|
||||
run: async () => collectSystemStatus(adbConfig)
|
||||
}),
|
||||
safeJob({
|
||||
id: "network-diagnostics",
|
||||
@@ -126,7 +127,7 @@ function defaultDefinitions(database: CompanionDatabase): readonly JobDefinition
|
||||
timeoutMs: 20_000,
|
||||
run: async () => {
|
||||
const generatedAt = new Date().toISOString();
|
||||
return supportBundle(database, generatedAt, await collectSystemStatus());
|
||||
return supportBundle(database, generatedAt, await collectSystemStatus(adbConfig));
|
||||
}
|
||||
})
|
||||
];
|
||||
@@ -169,9 +170,10 @@ export class JobRunner {
|
||||
|
||||
constructor(
|
||||
private readonly database: CompanionDatabase,
|
||||
jobs: readonly JobDefinition[] = defaultDefinitions(database)
|
||||
jobs?: readonly JobDefinition[],
|
||||
adbConfig: AdbConfig = DISABLED_ADB_CONFIG
|
||||
) {
|
||||
this.#jobs = new Map(jobs.map((job) => [job.id, job]));
|
||||
this.#jobs = new Map((jobs ?? defaultDefinitions(database, adbConfig)).map((job) => [job.id, job]));
|
||||
}
|
||||
|
||||
listJobs(): JobDescriptor[] {
|
||||
|
||||
Reference in New Issue
Block a user