From fb5930051e9ffd9d35a8b77d1ddcb33ef03838b1 Mon Sep 17 00:00:00 2001 From: christian Date: Sun, 1 Mar 2026 01:18:47 +0100 Subject: [PATCH] Plugin WebGUI fix, Pre-Registration, Service-Filter, Business-Lizenz, Firmware-Mgmt --- README.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 09b8b85..6b951c7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # OPNsense RMM System Remote Monitoring & Management fuer OPNsense Firewalls. -Go-basierter Agent + Backend mit WebSocket-Kommunikation und Session-basierten TCP-Tunneln. +Go-basierter Agent (v1.0.3) + Backend mit WebSocket-Kommunikation und Session-basierten TCP-Tunneln. ## Architektur @@ -42,7 +42,7 @@ Client ──► Backend:ProxyPort ──► WebSocket (Binary) ──► Agent | Memory | Total, Used, Free | `sysctl` | | Disks | ZFS Datasets, Belegung, Mountpoints | `zfs list` | | Network | Interfaces, IPs, Status, MAC, Statistiken | `ifconfig` | -| Services | Laufende Dienste, Status | `service -e`, `configctl` | +| Services | Laufende OPNsense-Dienste (gefiltert) | `service -e`, `configctl`, `/usr/local/sbin/pluginctl` | | WireGuard | Tunnel, Peers, Transfer, Handshake | `wg show` | | DHCP | Aktive Leases (KEA/ISC/dnsmasq) | Lease-Dateien, KEA JSON | | Routing | Routing-Tabelle | `netstat -rn` | @@ -356,6 +356,7 @@ Oder Plugin komplett neu installieren (`install.sh` ist idempotent — installie |---------|----------|-------------| | POST | `/api/v1/agent/register` | Agent registrieren (mit optionaler `agent_id`) | | POST | `/api/v1/agent/heartbeat` | Systemdaten senden | +| POST | `/api/v1/agents` | Firewall pre-registrieren (`{name, customer_id?}`) | | GET | `/api/v1/agents` | Alle Agents auflisten | | GET | `/api/v1/agents/{id}` | Agent + Systemdaten abrufen | | GET | `/api/v1/agents/{id}/system` | Nur Systemdaten | @@ -798,7 +799,7 @@ React + Vite + TailwindCSS Web-Frontend, deployed als statische Dateien auf Ngin | Seite | Beschreibung | |-------|-------------| | Dashboard | Uebersicht aller Firewalls, Status-Kacheln, AgentPanel per Klick | -| Firewalls | Suchbare Tabelle, AgentPanel mit Tabs (Uebersicht, Interfaces, Dienste, Tunnel, VPN, WireGuard, Routen, DHCP, Zertifikate, Backups, Agent) | +| Firewalls | Suchbare Tabelle, AgentPanel mit Tabs (Uebersicht, Interfaces, Dienste, Tunnel, VPN, WireGuard, Routen, DHCP, Zertifikate, Backups, Agent); Firewall hinzufuegen/loeschen | | Tunnel | Globale Tunnel-Uebersicht ueber alle Firewalls | | Firmware | Multi-Plattform Firmware-Upload, Agent-Update-Trigger | | Kunden | CRUD Kundenverwaltung | @@ -914,6 +915,58 @@ rmm/ - **Persistente Agent-ID**: Ueberlebt Agent- und Backend-Neustarts - **FreeBSD-kompatibel**: Volle Pfade (/usr/bin/netstat etc.), daemon statt nohup +## Neue Features (v1.0.3) + +### OPNsense Plugin WebGUI Fix + +Der `SettingsController` wurde gefixt: +- **Config-Parsing**: Korrektes Parsen von `rmmagent[general][KEY]` Formular-Feldern (OPNsense MVC-Konvention) +- **Initialer config.xml Eintrag**: Beim ersten Speichern wird automatisch der `` Knoten in der `config.xml` angelegt, sodass die WebGUI-Konfiguration sofort funktioniert + +### Pre-Registration von Firewalls + +Firewalls koennen vorab im System registriert werden, bevor der Agent installiert wird: + +- **API**: `POST /api/v1/agents` mit `name` (Pflicht) und optionalem `customer_id` +- Der Agent wird mit `hostname="(ausstehend)"` angelegt +- Bei der eigentlichen Agent-Registration (`POST /api/v1/agent/register`) wird automatisch nach Name gematcht +- **DB-Funktion**: `GetAgentByName` fuer das automatische Pre-Registration Matching +- **Frontend**: "Firewall hinzufuegen" Dialog mit Installationsanleitung und Copy-Buttons fuer die Befehle + +### Firewall loeschen + +- Firewalls koennen direkt im Frontend ueber das Papierkorb-Icon im AgentPanel geloescht werden +- Loescht den Agent und alle zugehoerigen Daten (Systemdaten, Events, Backups, Metriken) + +### Service-Filter + +Boot- und Init-Scripts werden nicht mehr in der Dienste-Liste angezeigt: +- **Gefiltert**: `bgfsck`, `cleanvar`, `dmesg`, `hostid`, `ldconfig`, `motd`, `newsyslog`, `ntpd`, `resolv`, `syslogd`, `var` und andere System-Boot-Scripts +- **Angezeigt**: Nur echte OPNsense-Dienste (OpenVPN, Unbound, DHCPd, WireGuard, etc.) +- `pluginctl` wird mit vollem Pfad `/usr/local/sbin/pluginctl` aufgerufen (FreeBSD-Kompatibilitaet) + +### OPNsense Business Edition Lizenz-Anzeige + +Im Frontend im **Uebersicht-Tab** des AgentPanel wird die Lizenzinformation angezeigt: +- **Product Name**: z.B. "OPNsense Business Edition" +- **Subscription Key**: Lizenzschluessel +- **Ablaufdatum**: Wann die Lizenz ablaeuft +- **Restlaufzeit**: Visueller Farbbalken (gruen/gelb/rot je nach verbleibender Zeit) + +### Firmware Management (Frontend) + +Die **Firmware-Seite** im Frontend bietet: +- **Multi-Platform Upload**: Agent-Binaries fuer FreeBSD, Linux und Windows hochladen +- **Versions-Uebersicht**: Alle hochgeladenen Firmware-Versionen pro Plattform mit SHA256-Hash und Groesse +- **Agent-Update-Buttons**: Update fuer einzelne Agents oder "Alle updaten" mit einem Klick + +### Frontend Agent-Tab + +Der **Agent-Tab** im AgentPanel zeigt: +- **Agent-Info**: Version, Agent-ID, Plattform, Uptime +- **Update-Button**: Direktes Agent-Update anfordern +- **Befehle**: Remote-Shell-Befehle direkt aus dem Frontend ausfuehren + ## Hinweise - Backend braucht **kein root** — laeuft als normaler User auf Port 8443