Plugin WebGUI fix, Pre-Registration, Service-Filter, Business-Lizenz, Firmware-Mgmt

This commit is contained in:
christian 2026-03-01 01:18:47 +01:00
parent e74cdce0ba
commit fb5930051e

View File

@ -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 `<rmmagent>` 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