Start the Go rewrite: jsjson, awg-ctrl port, differential bench

- internal/jsjson: JSON.stringify-compatible encoder and order-preserving decoder,
  tested against fixtures produced by Node itself
- internal/ctrl: awg-ctrl in Go (params, vpn:// keys, users, peers, sync, 3.1
  upgrade, CAKE shaping, metrics, monitor job, Express-compatible HTTP layer)
- internal/iauth, internal/logx: internal Ed25519 tokens and logging
- tools/diffbench: Docker bench with stubbed awg/ip/tc/nft that runs one scenario
  against the TS and Go implementations for comparison
This commit is contained in:
2026-10-14 13:27:24 +00:00
parent 53d5a08bbd
commit 59e076c1de
28 changed files with 4960 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
// Состояние после сценария: conf, файлы каталога, строки баз, журнал и состояние заглушек.
import fs from "fs";
import { execSync } from "child_process";
const out = process.argv[2];
const t = JSON.parse(fs.readFileSync(out, "utf8"));
const D = "/etc/amnezia/amneziawg";
const q = sql => JSON.parse(execSync(`sqlite3 -json ${D}/users.db "${sql}"`).toString() || "[]");
t.state = {
conf: fs.readFileSync(`${D}/awg1.conf`, "utf8"),
confMode: (fs.statSync(`${D}/awg1.conf`).mode & 0o777).toString(8),
files: fs.readdirSync(D).map(f => f.replace(/\d{4}-\d\d-\d\dT[\d-]+Z/, "<ts>")).sort(),
users: q("select * from users order by rowid"),
peers: q("select * from peers order by rowid"),
config: q("select * from config order by key"),
schema: execSync(`sqlite3 ${D}/users.db .schema`).toString(),
stubLog: fs.readFileSync("/var/lib/stub/log.jsonl", "utf8").split("\n").filter(Boolean).map(l => JSON.parse(l)),
stubState: JSON.parse(fs.readFileSync("/var/lib/stub/state.json", "utf8")),
};
fs.writeFileSync(out, JSON.stringify(t, null, 1));
console.log(`collect: done`);