save with verify and restart new session

This commit is contained in:
2026-03-13 18:02:44 +01:00
parent cd9d8cda1f
commit 1d48dbe7d5
2 changed files with 57 additions and 8 deletions
+29 -3
View File
@@ -1473,12 +1473,38 @@ async function handleSavePermissions(clientWs, allowedTools) {
`const dir=f.substring(0,f.lastIndexOf("/"));`,
'try{fs.mkdirSync(dir,{recursive:true});}catch(e){}',
'fs.writeFileSync(f,JSON.stringify(s,null,2));',
// Verify: zuruecklesen und pruefen
'const v=JSON.parse(fs.readFileSync(f,"utf8"));',
'process.stdout.write(JSON.stringify(v.allowedTools||[]));',
].join("");
const b64 = Buffer.from(script).toString("base64");
await dockerExec("aria-core", `echo ${b64} | base64 -d | node`);
const verifyRaw = await dockerExec("aria-core", `echo ${b64} | base64 -d | node`);
clientWs.send(JSON.stringify({ type: "permissions_saved", ok: true }));
log("info", "server", "Berechtigungen gespeichert");
// Verify: gespeicherte Daten mit gewuenschten vergleichen
let verified = false;
let savedTools = [];
try {
savedTools = JSON.parse(verifyRaw.trim());
verified = Array.isArray(savedTools)
&& savedTools.length === allowedTools.length
&& allowedTools.every(t => savedTools.includes(t));
} catch {}
if (!verified) {
log("error", "server", `Verify fehlgeschlagen! Erwartet: ${JSON.stringify(allowedTools)}, Gelesen: ${verifyRaw}`);
clientWs.send(JSON.stringify({
type: "permissions_saved", ok: false,
error: `Verify fehlgeschlagen — Datei wurde nicht korrekt geschrieben. Erwartet ${allowedTools.length} Tools, gelesen: ${savedTools.length}`,
}));
return;
}
clientWs.send(JSON.stringify({
type: "permissions_saved", ok: true,
info: `${allowedTools.length} Tools gespeichert und verifiziert in ${settingsPath}`,
needsRestart: true,
}));
log("info", "server", `Berechtigungen gespeichert und verifiziert (${allowedTools.length} Tools)`);
} catch (err) {
log("error", "server", `Berechtigungen speichern fehlgeschlagen: ${err.message}`);
clientWs.send(JSON.stringify({ type: "permissions_saved", ok: false, error: err.message }));