ซอร์สที่เผยแพร่
ดาวน์โหลด ZIP ของซอร์ส
CH-J Tools
เรียกดูไดเรกทอรีและไฟล์ของรุ่นแอปพลิเคชันที่ระบุ
CH-J / Server Manager
406 ไฟล์
core-20261024T135205Z-7c487d719de2
วันที่เพิ่ม: · วันที่บิลด์:
1
"use strict";3
// chj.disks against an isolated Windows test VM: the platform is detected, no Linux disk tool is ever started and4
// every disk operation is refused cleanly. Read-only. Environment: CHJ_DISKS_WINDOWS_HOST, CHJ_DISKS_WINDOWS_FINGERPRINT5
// (SHA256:...), CHJ_DISKS_WINDOWS_KEY (private key path), CHJ_DISKS_WINDOWS_USER (default ai).6
const test = require("node:test");7
const assert = require("node:assert/strict");8
const { SessionManager } = require("../src/main/sessions/sessionManager");9
const { PrivilegedExecutor } = require("../src/main/sessions/privilegedExec");10
const { DiskService } = require("../src/main/disks/diskService");12
const env = process.env;13
const skip = env.CHJ_DISKS_WINDOWS_HOST && env.CHJ_DISKS_WINDOWS_FINGERPRINT && env.CHJ_DISKS_WINDOWS_KEY ? false : "Set CHJ_DISKS_WINDOWS_* to run against an isolated Windows test VM.";15
test("chj.disks on an isolated Windows test VM is refused without running Linux tools", { skip, timeout: 180000 }, async (t) => {16
const hostKeys = new Map();17
const profileService = {18
get: () => ({ id: "win", label: "win", host: env.CHJ_DISKS_WINDOWS_HOST, port: 22, username: env.CHJ_DISKS_WINDOWS_USER || "ai", authMethod: "privateKey", privateKeyPath: env.CHJ_DISKS_WINDOWS_KEY }),19
getHostKey: (h, p) => hostKeys.get(`${h}:${p}`) || null, trustHostKey: (h, p, fp) => hostKeys.set(`${h}:${p}`, fp), getStoredPassword: () => "", markUsed() {}20
};21
const manager = new SessionManager({ profileService });22
try { await manager.connect({ sessionId: "win", profileId: "win" }); }23
catch (error) {24
if (error.code !== "HOST_KEY_UNKNOWN") throw error;25
assert.equal(`SHA256:${Buffer.from(error.fingerprint, "hex").toString("base64").replace(/=+$/, "")}`, env.CHJ_DISKS_WINDOWS_FINGERPRINT, "documented host key");26
manager.trustPending({ sessionId: "win", profileId: "win", fingerprint: error.fingerprint });27
await manager.connect({ sessionId: "win", profileId: "win" });28
}29
t.after(() => manager.disconnectAll("test"));30
const executor = new PrivilegedExecutor({ sessionManager: manager });31
const runs = [];32
const original = executor.run.bind(executor);33
executor.run = (...args) => { runs.push(args[1]?.args?.[0]); return original(...args); };34
const disks = new DiskService({ sessionManager: manager, privilegedExecutor: executor });36
const inventory = await disks.inspect("win");37
t.diagnostic(`${inventory.os} -> supported=${inventory.supported} reason=${inventory.reason}`);38
assert.equal(inventory.supported, false); assert.equal(inventory.platform, "windows"); assert.equal(inventory.reason, "WINDOWS");39
assert.match(inventory.os, /Windows/);40
await assert.rejects(() => disks.plan("win", { operations: [{ type: "grow-fs", device: "/dev/sda1" }] }), { code: "DISKS_PLATFORM_UNSUPPORTED" });41
await assert.rejects(() => disks.smart("win", { device: "/dev/sda" }), { code: "DISKS_PLATFORM_UNSUPPORTED" });42
await assert.rejects(() => disks.autoExpand("win", { suggestionId: "partition:sda:1" }), { code: "DISKS_PLATFORM_UNSUPPORTED" });43
assert.deepEqual(await disks.jobs("win"), { jobs: [] });44
assert.deepEqual(runs, [], "the Linux helper was never started on Windows");45
// The shared SSH layer stays usable for the other plugins.46
const metrics = await manager.readSystemMetrics("win");47
assert.equal(metrics.os, "windows");48
});SHA-256
c7c0e9c74f67e01d0ba88d43f564b7d0b70f8748cd32629cdc9f7edfd6ffa7f8CH-J Proprietary Software License 1.14 · ซอร์สโค้ดนี้ให้ไว้ภายใต้ CH-J Proprietary Software License 1.14 การเปิดให้เข้าถึงไม่ได้เปลี่ยนแปลงเงื่อนไขของสัญญาอนุญาตหรือให้สิทธิ์เพิ่มเติม
SHA-256 ของไฟล์บีบอัด
476ed8aef0f1e96a5acdf223127b6692acdf4492eeaf5d0816b6e2a634fbbda6