240 lines
10 KiB
XML
240 lines
10 KiB
XML
<?xml version='1.0' standalone='yes'?>
|
|
<!DOCTYPE PLUGIN [
|
|
<!ENTITY name "mua">
|
|
<!ENTITY author "Michael">
|
|
<!ENTITY version "2026.08.24.r018">
|
|
<!ENTITY launch "Settings/mua">
|
|
<!ENTITY pluginURL "http://192.168.1.2:4000/michael/MUA-Mikes-Unraid-Agent/raw/branch/main/plugin/mua.plg">
|
|
<!ENTITY pluginLOC "/boot/config/plugins/&name;">
|
|
<!ENTITY emhttpLOC "/usr/local/emhttp/plugins/&name;">
|
|
<!ENTITY txzURL "http://192.168.1.2:4000/michael/MUA-Mikes-Unraid-Agent/raw/branch/main/dist/mua-2026.08.24.r018-x86_64-1.txz">
|
|
<!ENTITY txzSHA256 "174603af715b3f875a875563b6a67045c6af6b8166b6943780712d8074bc2071">
|
|
]>
|
|
|
|
<PLUGIN name="&name;"
|
|
author="&author;"
|
|
version="&version;"
|
|
launch="&launch;"
|
|
pluginURL="&pluginURL;"
|
|
icon="cubes"
|
|
min="7.0.0"
|
|
support="http://192.168.1.2:4000/michael/MUA-Mikes-Unraid-Agent"
|
|
project="http://192.168.1.2:4000/michael/MUA-Mikes-Unraid-Agent"
|
|
>
|
|
|
|
<CHANGES>
|
|
### 2026.08.24.r018
|
|
- Added focused, batched container-log analysis via `focus_terms` to avoid repeated shell/grep loops.
|
|
- Repaired the repository self-test command.
|
|
|
|
### 2026.08.24.r017
|
|
- Community-Applications-Suche akzeptiert bis zu fünf mit `|` getrennte Namens-, Schreib- oder Zweckvarianten in einem einzigen begrenzten Feed-Durchlauf.
|
|
- Treffer nennen die tatsächlich passenden Varianten; kleine Agenten müssen Synonyme nicht mehr in einzelnen Werkzeugrunden abfragen.
|
|
### 2026.08.23.r016
|
|
- Docker-Update-Status wird primär über Unraids nativen Containernamen-Schlüssel aufgelöst; Image-, `library/`- und `:latest`-Varianten bleiben als kompatible Fallbacks erhalten.
|
|
- Alternative Cacheformate und boolesche oder textuelle Statuswerte werden global normalisiert, statt einzelne Container wie Windows11 und WindowsXP als `unknown` zu verlieren.
|
|
- Unvollständige Ergebnisse enthalten `unknown_count`, `status_complete` und kennzeichnen `updates_available` ausdrücklich als Mindestzahl.
|
|
### 2026.08.22.r015
|
|
- Docker-Liste kann serverseitig nach running/stopped/created/exited filtern und liefert verbindliche Zustandszähler.
|
|
- Kompakte Antworten ohne Live-Metriken sind nun Standard; CPU/RAM/I/O und Detailfelder werden nur bei Bedarf erzeugt.
|
|
- Die Werkzeugbeschreibung weist kleine Modelle ausdrücklich auf state=running für aktive Container hin.
|
|
### 2026.08.21.r014
|
|
- CA-Template-Normalisierung: Fehlende Mode-Attribute werden ergänzt, damit Unraids Docker-Manager Community-Apps ohne PHP-Warnungen einliest.
|
|
### 2026.08.21.r013
|
|
- CA-Port-Override-Fix: Numerische XML-Ziele wie Port 8080 werden nach PHPs JSON-Dekodierung sicher als Text normalisiert.
|
|
### 2026.08.21.r012
|
|
- CA-Installationsfix: Vorhandene Container werden über eine exakte Docker-Namensabfrage erkannt statt durch fehleranfällige Interpretation von Docker-Fehlertexten.
|
|
### 2026.08.21.r011
|
|
- CA-Vorschau-Fix: asynchrone Bun-Dateiprüfungen werden korrekt abgewartet; freie Container- und Templatenamen werden nicht mehr fälschlich als belegt gemeldet.
|
|
### 2026.08.21.r010
|
|
- Sieben kompakte Unraid-Lesewerkzeuge für Systemzustand, Storage/Parity, SMART, Benachrichtigungen, Shares und Docker-Update-Status.
|
|
- Community Applications: offizieller Feed, kompakte Suche sowie sicherer Vorschau- und Installationsablauf.
|
|
- CA-Installationen benötigen ein exaktes, zehn Minuten gültiges Freigabeticket und erzeugen reguläre Unraid-Benutzertemplates für die GUI-Verwaltung.
|
|
- PHP-Helfer werden ohne Shell-Interpreter als direkte Argumentliste gestartet.
|
|
### 2026.08.21.r009
|
|
- WebGUI-Fix: Alle Formulare senden neben dem internen MUA-CSRF-Wert auch Unraids verpflichtendes csrf_token; Button-Klicks enden nicht mehr auf einer leeren Seite.
|
|
### 2026.08.21.r008
|
|
- Neue getrennte Nur-Lese-Shell: unraid_system_shell_readonly mit Programm-Allowlist und direkter argv-Ausführung ohne /bin/sh.
|
|
- Schreibende Unterbefehle und Optionen für ip, find, ss, dmesg, date, mount und hostname werden serverseitig abgelehnt.
|
|
- Die uneingeschränkte Root-Shell bleibt als separates kritisches Werkzeug standardmäßig deaktiviert.
|
|
- GUI-Fix: MUA-eigene CSS-Klassennamen verhindern die Kollision mit Unraids globaler notice-Klasse; die blaue Karte wird wieder korrekt dargestellt.
|
|
### 2026.08.21.r007
|
|
- Navigation: MUA liegt unter Settings → User Utilities; der Klick im Plugin-Manager öffnet zuverlässig die MUA-Seite (korrekte Groß-/Kleinschreibung).
|
|
- Sicherheitsprofile: Nur Lesen (Standard), Betrieb + Diagnose, Alles sperren und expliziter Vollzugriff.
|
|
- Fix: Eine leere Tool-Auswahl aktiviert nicht mehr versehentlich alle Tools.
|
|
- Secrets: Container-Umgebungswerte werden nicht mehr ausgegeben; häufige Secrets in Logs werden redigiert.
|
|
- API-Key: nur einmalige Klartextanzeige nach Rotation; danach ausschließlich maskiert.
|
|
- Config-Server: zusätzlicher, pro Start erneuerter Admin-Token und CSRF-Schutz in der WebGUI.
|
|
- Netzwerk: CORS standardmäßig aus, Request-Limit 1 MiB und Rate-Limit pro Client.
|
|
- Audit: Werkzeugname, Risikostufe, Ergebnis und Laufzeit ohne Argumente/Inhalte in mua-audit.log.
|
|
- WebGUI vollständig neu geordnet: Statuskarten, Sicherheitsprofile und Werkzeuge nach Risikostufe.
|
|
### 2026.08.18.r006
|
|
- Neues Tool: unraid_system_shell — direkter Shell-Zugriff auf den Unraid-Host (root, /bin/sh -c). Liefert exit_code + stdout + stderr (JSON).
|
|
- WebGUI: unraid_system_shell in der System-Tool-Gruppe (jetzt 2 System-Tools, insgesamt 22 Tools).
|
|
### 2026.08.18.r005
|
|
- Fix: unraid_docker_analyze_logs scan-all-Modus (ohne container-Parameter) funktionierte nicht — docker logs ohne Container-Argument lief ins Leere. Jetzt Loop über alle laufenden Container.
|
|
- Output: sample_matches enthält jetzt den Container-Namen + neues Feld containers_with_matches.
|
|
### 2026.08.18.r004
|
|
- Auto-Restart: Binary erkennt Update auf Platte (mtime/size) und startet den Service automatisch neu.
|
|
- WebGUI: „MUA neu starten"-Button (manueller Restart über Config-Server).
|
|
- POST-INSTALL/UPDATE: Service wird nach Installation/Update automatisch neu gestartet.
|
|
- WebGUI: Version wird dynamisch aus /health gelesen (kein hartkodiertes rNNN).
|
|
### 2026.08.18.r002
|
|
- API-Key-Authentifizierung (Bearer-Token) für den MCP-HTTP-Endpunkt (Port 3002). /health bleibt offen.
|
|
- Einstellungs-Maske im WebGUI-Tab: API-Key generieren + Tools per Checkbox aktivieren/deaktivieren.
|
|
- Config-Server auf 127.0.0.1:3013 (nur localhost) für WebGUI-Integration.
|
|
- Tool-Filter: deaktivierte Tools werden in tools/list ausgeblendet und bei tools/call abgelehnt.
|
|
### 2026.08.18.r001
|
|
- Initial release: 21 Docker, network, and system tools as MCP server over HTTP (Streamable HTTP, port 3002).
|
|
- Runtime: TypeScript (Bun Runtime, compiled binary) — no PHP built-in server.
|
|
</CHANGES>
|
|
|
|
<!--
|
|
===========================================
|
|
PRE-INSTALL: Cleanup + Verzeichnisse
|
|
===========================================
|
|
-->
|
|
<FILE Run="/bin/bash">
|
|
<INLINE>
|
|
set -e
|
|
|
|
echo ""
|
|
echo "===================================================="
|
|
echo " MUA - Mikes Unraid Agent"
|
|
echo " Installation"
|
|
echo "===================================================="
|
|
echo ""
|
|
|
|
# Verzeichnisse
|
|
mkdir -p &emhttpLOC;
|
|
mkdir -p &pluginLOC;
|
|
mkdir -p /var/log/plugins
|
|
touch /var/log/plugins/mua.log
|
|
|
|
</INLINE>
|
|
</FILE>
|
|
|
|
<!--
|
|
===========================================
|
|
SLACKWARE-PACKET INSTALLIEREN
|
|
===========================================
|
|
Das .txz enthält:
|
|
usr/local/bin/mua (kompiliertes Binary)
|
|
usr/local/bin/unraid-docker-mcp-helper.php (PHP-Helper)
|
|
etc/rc.d/rc.mua (SysVinit-Service)
|
|
usr/local/emhttp/plugins/mua/mua.page (WebGUI-Tab)
|
|
install/doinst.sh (läuft nach Installation)
|
|
===========================================
|
|
-->
|
|
<FILE Name="/boot/config/plugins/&name;/mua-2026.08.24.r018-x86_64-1.txz" Run="upgradepkg --install-new" Mode="755" Min="7.0.0">
|
|
<URL>&txzURL;</URL>
|
|
<SHA256>&txzSHA256;</SHA256>
|
|
</FILE>
|
|
|
|
<!--
|
|
===========================================
|
|
POST-INSTALL: Service neu starten + Health-Check
|
|
===========================================
|
|
Läuft nach Installation UND nach Update.
|
|
`restart` stoppt den Service (falls er läuft) und startet ihn neu —
|
|
funktioniert sowohl bei Erstinstallation als auch bei Update.
|
|
===========================================
|
|
-->
|
|
<FILE Run="/bin/bash">
|
|
<INLINE>
|
|
set +e
|
|
|
|
echo ""
|
|
echo " Starte MUA-Service neu..."
|
|
/etc/rc.d/rc.mua restart 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo " Führe Health-Check aus..."
|
|
sleep 3
|
|
if curl -sf "http://127.0.0.1:3002/health" > /dev/null 2>&1; then
|
|
echo ""
|
|
echo " Health-Check: OK"
|
|
echo ""
|
|
echo "===================================================="
|
|
echo " MUA installiert und läuft auf Port 3002"
|
|
echo " Endpunkt: http://$(hostname -I | awk '{print $1}'):3002/mcp"
|
|
echo " WebGUI: Settings > User Utilities > MUA"
|
|
echo "===================================================="
|
|
else
|
|
echo ""
|
|
echo " WARNUNG: Health-Check fehlgeschlagen"
|
|
echo " Logs: tail -f /var/log/plugins/mua.log"
|
|
echo "===================================================="
|
|
fi
|
|
|
|
exit 0
|
|
|
|
</INLINE>
|
|
</FILE>
|
|
|
|
<!--
|
|
===========================================
|
|
UPDATE: Alte Dateien bereinigen
|
|
===========================================
|
|
-->
|
|
<FILE Run="/bin/bash" Method="update">
|
|
<INLINE>
|
|
# Service stoppen vor Update
|
|
/etc/rc.d/rc.mua stop 2>/dev/null || true
|
|
|
|
# Alte PHP-Dateien entfernen (falls vorhanden)
|
|
rm -rf &emhttpLOC;/mcp
|
|
rm -rf &emhttpLOC;/scripts
|
|
rm -f &emhttpLOC;/plugin.php
|
|
|
|
</INLINE>
|
|
</FILE>
|
|
|
|
<!--
|
|
===========================================
|
|
REMOVE: Deinstallation
|
|
===========================================
|
|
-->
|
|
<FILE Run="/bin/bash" Method="remove">
|
|
<INLINE>
|
|
echo ""
|
|
echo "===================================================="
|
|
echo " MUA - Mikes Unraid Agent"
|
|
echo " Deinstallation"
|
|
echo "===================================================="
|
|
echo ""
|
|
|
|
# 1. Service stoppen
|
|
/etc/rc.d/rc.mua stop 2>/dev/null || true
|
|
|
|
# 2. Service-Datei entfernen
|
|
rm -f /etc/rc.d/rc.mua
|
|
|
|
# 3. Binary entfernen
|
|
rm -f /usr/local/bin/mua
|
|
|
|
# 4. PHP-Helper entfernen
|
|
rm -f /usr/local/bin/unraid-docker-mcp-helper.php
|
|
rm -f /usr/local/bin/unraid-mcp-status-helper.php
|
|
|
|
# 5. Plugin-Verzeichnis entfernen
|
|
rm -rf &emhttpLOC;
|
|
|
|
# 6. Config entfernen
|
|
rm -rf &pluginLOC;
|
|
|
|
# 7. Logs entfernen
|
|
rm -f /var/log/plugins/mua.log
|
|
rm -f /var/log/plugins/mua-audit.log
|
|
rm -f /var/run/mua.pid
|
|
rm -f /var/run/mua-admin.token
|
|
|
|
echo ""
|
|
echo " MUA wurde deinstalliert."
|
|
echo "===================================================="
|
|
|
|
</INLINE>
|
|
</FILE>
|
|
|
|
</PLUGIN>
|