From 618248e8df1a501b5c007d8a8abc274de739ccad Mon Sep 17 00:00:00 2001 From: duffyduck Date: Thu, 12 Mar 2026 19:20:26 +0100 Subject: [PATCH] added subscription for opencloud --- .gitignore | 3 +++ diagnostic/index.html | 34 ++++++++++++++++++++++++++++------ diagnostic/server.js | 36 ++++++++++++++++++++++++++++++++++++ docker-compose.yml | 1 + 4 files changed, 68 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 2d1622e..6624392 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,9 @@ aria-data/config/*.env # ── ARIAs Gedächtnis (nur per tar gesichert) ──── aria-data/brain/ +# ── OpenClaw Runtime (Agent-Config, Sessions) ─── +aria-data/openclaw/ + # ── Stimmen (große Binärdateien) ───────────────── aria-data/voices/ diff --git a/diagnostic/index.html b/diagnostic/index.html index 6aebdc0..22a6033 100644 --- a/diagnostic/index.html +++ b/diagnostic/index.html @@ -97,7 +97,10 @@ -
+ + +
@@ -330,6 +333,12 @@ el.textContent = msg.error ? `Fehler: ${msg.error}` : msg.info; return; } + if (msg.type === 'core_auth') { + const el = document.getElementById('core-auth'); + el.style.display = 'block'; + el.textContent = msg.error ? `Fehler: ${msg.error}` : msg.info; + return; + } if (msg.type === 'term_ready') { document.getElementById('term-status').textContent = 'Verbunden — interaktives Terminal'; if (term) term.writeln('\x1b[32mVerbunden!\x1b[0m\r\n'); @@ -403,10 +412,12 @@ let term = null; let termFitAddon = null; + let termAction = null; // Welche Aktion beim Terminal-Start gesendet wird - function startProxyLogin() { + function openTermModal(title, action) { + termAction = action; + document.querySelector('#term-modal .modal-header h3').textContent = title; document.getElementById('term-modal').classList.add('open'); - document.getElementById('btn-proxy-login').disabled = true; document.getElementById('term-status').textContent = 'Starte Terminal...'; if (typeof Terminal === 'undefined') { @@ -424,11 +435,21 @@ } } + function startProxyLogin() { + document.getElementById('btn-proxy-login').disabled = true; + openTermModal('Claude Login Terminal (aria-proxy)', { action: 'proxy_login' }); + } + + function openCoreTerminal() { + document.getElementById('btn-core-term').disabled = true; + openTermModal('aria-core Shell', { action: 'core_terminal' }); + } + function closeTermModal() { document.getElementById('term-modal').classList.remove('open'); document.getElementById('btn-proxy-login').disabled = false; - document.getElementById('btn-proxy-login').textContent = 'Login starten'; - // Terminal aufräumen + document.getElementById('btn-core-term').disabled = false; + // Terminal aufraeumen if (term) { term.dispose(); term = null; } } @@ -461,8 +482,9 @@ send({ action: 'term_input', data: btoa(b64) }); }); - term.writeln('\x1b[33mVerbinde mit Proxy-Container...\x1b[0m'); - send({ action: 'proxy_login' }); + const containerName = termAction?.action === 'core_terminal' ? 'aria-core' : 'aria-proxy'; + term.writeln('\x1b[33mVerbinde mit ' + containerName + '...\x1b[0m'); + send(termAction); } // Resize bei Fensteraenderung diff --git a/diagnostic/server.js b/diagnostic/server.js index dd3ef6d..df9019a 100644 --- a/diagnostic/server.js +++ b/diagnostic/server.js @@ -599,6 +599,37 @@ async function checkProxyAuth() { } } +// ── OpenClaw Agent-Auth pruefen ────────────────────────── + +async function checkCoreAuth() { + try { + log("info", "gateway", "Pruefe OpenClaw Agent-Konfiguration..."); + const info = await dockerExec("aria-core", ` + echo '=== Agent-Verzeichnis ===' && + ls -la /home/node/.openclaw/agents/main/agent/ 2>&1 && + echo '' && + echo '=== auth-profiles.json ===' && + cat /home/node/.openclaw/agents/main/agent/auth-profiles.json 2>/dev/null || echo '(nicht vorhanden)' && + echo '' && + echo '=== Umgebungsvariablen ===' && + echo "OPENAI_BASE_URL=$OPENAI_BASE_URL" && + echo "OPENAI_API_KEY=$(echo $OPENAI_API_KEY | head -c 15)..." && + echo "DEFAULT_MODEL=$DEFAULT_MODEL" && + echo '' && + echo '=== OpenClaw Version ===' && + openclaw --version 2>/dev/null || echo '(openclaw CLI nicht gefunden)' && + echo '' && + echo '=== Agents Liste ===' && + openclaw agents list 2>/dev/null || echo '(Befehl fehlgeschlagen)' + `.trim()); + log("info", "gateway", `OpenClaw Config:\n${info}`); + broadcast({ type: "core_auth", info }); + } catch (err) { + log("error", "gateway", `Core-Auth-Check fehlgeschlagen: ${err.message}`); + broadcast({ type: "core_auth", info: null, error: err.message }); + } +} + // ── Docker Container Logs ──────────────────────────────── const CONTAINER_MAP = { @@ -774,6 +805,11 @@ wss.on("connection", (ws) => { checkProxyAuth(); } else if (msg.action === "proxy_login") { attachTerminal(ws, "aria-proxy", "claude login"); + } else if (msg.action === "core_terminal") { + // Interaktive Shell in aria-core (fuer openclaw agents, etc.) + attachTerminal(ws, "aria-core", msg.cmd || "sh"); + } else if (msg.action === "check_core_auth") { + checkCoreAuth(); } else if (msg.action === "term_input") { handleTermInput(ws, msg.data); } else if (msg.action === "write_credentials") { diff --git a/docker-compose.yml b/docker-compose.yml index a690bf3..8a034b9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -41,6 +41,7 @@ services: - ./aria-data/config/AGENT.md:/workspace/AGENT.md - ./aria-data/config/USER.md:/workspace/USER.md - ./aria-data/config/openclaw.env:/workspace/.env + - ./aria-data/openclaw:/home/node/.openclaw # OpenClaw Agent-Config persistieren - /tmp/.X11-unix:/tmp/.X11-unix - /var/run/docker.sock:/var/run/docker.sock # VM von innen verwalten restart: unless-stopped