mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 13:38:31 +00:00
fix(mitm): generate root ca on server startup (#2228)
Direct MITM server startup read rootCA.key/.crt immediately and exited when either was missing, bypassing the manager.js CA setup path. - generate Root CA from server.js when key/cert is missing - make generateRootCA()/generateCert() synchronous to avoid a startup race before readFileSync - add unit test covering synchronous Root CA creation Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
committed by
decolua
co-authored by
Cursor
parent
0b3c794075
commit
182c849979
@@ -0,0 +1,35 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { createRequire } from "module";
|
||||
import fs from "fs";
|
||||
import os from "os";
|
||||
import path from "path";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
|
||||
function loadRootCAWithDataDir(dataDir) {
|
||||
const rootCAPath = require.resolve("../../src/mitm/cert/rootCA.js");
|
||||
const pathsPath = require.resolve("../../src/mitm/paths.js");
|
||||
delete require.cache[rootCAPath];
|
||||
delete require.cache[pathsPath];
|
||||
|
||||
const oldDataDir = process.env.DATA_DIR;
|
||||
process.env.DATA_DIR = dataDir;
|
||||
try {
|
||||
return require("../../src/mitm/cert/rootCA.js");
|
||||
} finally {
|
||||
if (oldDataDir === undefined) delete process.env.DATA_DIR;
|
||||
else process.env.DATA_DIR = oldDataDir;
|
||||
}
|
||||
}
|
||||
|
||||
describe("MITM Root CA generation", () => {
|
||||
it("creates Root CA files synchronously for direct server startup", () => {
|
||||
const dataDir = fs.mkdtempSync(path.join(os.tmpdir(), "9router-mitm-ca-"));
|
||||
const { generateRootCA } = loadRootCAWithDataDir(dataDir);
|
||||
|
||||
generateRootCA();
|
||||
|
||||
expect(fs.existsSync(path.join(dataDir, "mitm", "rootCA.key"))).toBe(true);
|
||||
expect(fs.existsSync(path.join(dataDir, "mitm", "rootCA.crt"))).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user