Plugin WebGUI fix, Pre-Registration, Service-Filter, Business-Lizenz, Firmware-Mgmt
This commit is contained in:
parent
e74cdce0ba
commit
fb5930051e
59
README.md
59
README.md
@ -1,7 +1,7 @@
|
|||||||
# OPNsense RMM System
|
# OPNsense RMM System
|
||||||
|
|
||||||
Remote Monitoring & Management fuer OPNsense Firewalls.
|
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
|
## Architektur
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ Client ──► Backend:ProxyPort ──► WebSocket (Binary) ──► Agent
|
|||||||
| Memory | Total, Used, Free | `sysctl` |
|
| Memory | Total, Used, Free | `sysctl` |
|
||||||
| Disks | ZFS Datasets, Belegung, Mountpoints | `zfs list` |
|
| Disks | ZFS Datasets, Belegung, Mountpoints | `zfs list` |
|
||||||
| Network | Interfaces, IPs, Status, MAC, Statistiken | `ifconfig` |
|
| 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` |
|
| WireGuard | Tunnel, Peers, Transfer, Handshake | `wg show` |
|
||||||
| DHCP | Aktive Leases (KEA/ISC/dnsmasq) | Lease-Dateien, KEA JSON |
|
| DHCP | Aktive Leases (KEA/ISC/dnsmasq) | Lease-Dateien, KEA JSON |
|
||||||
| Routing | Routing-Tabelle | `netstat -rn` |
|
| 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/register` | Agent registrieren (mit optionaler `agent_id`) |
|
||||||
| POST | `/api/v1/agent/heartbeat` | Systemdaten senden |
|
| 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` | Alle Agents auflisten |
|
||||||
| GET | `/api/v1/agents/{id}` | Agent + Systemdaten abrufen |
|
| GET | `/api/v1/agents/{id}` | Agent + Systemdaten abrufen |
|
||||||
| GET | `/api/v1/agents/{id}/system` | Nur Systemdaten |
|
| 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 |
|
| Seite | Beschreibung |
|
||||||
|-------|-------------|
|
|-------|-------------|
|
||||||
| Dashboard | Uebersicht aller Firewalls, Status-Kacheln, AgentPanel per Klick |
|
| 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 |
|
| Tunnel | Globale Tunnel-Uebersicht ueber alle Firewalls |
|
||||||
| Firmware | Multi-Plattform Firmware-Upload, Agent-Update-Trigger |
|
| Firmware | Multi-Plattform Firmware-Upload, Agent-Update-Trigger |
|
||||||
| Kunden | CRUD Kundenverwaltung |
|
| Kunden | CRUD Kundenverwaltung |
|
||||||
@ -914,6 +915,58 @@ rmm/
|
|||||||
- **Persistente Agent-ID**: Ueberlebt Agent- und Backend-Neustarts
|
- **Persistente Agent-ID**: Ueberlebt Agent- und Backend-Neustarts
|
||||||
- **FreeBSD-kompatibel**: Volle Pfade (/usr/bin/netstat etc.), daemon statt nohup
|
- **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
|
## Hinweise
|
||||||
|
|
||||||
- Backend braucht **kein root** — laeuft als normaler User auf Port 8443
|
- Backend braucht **kein root** — laeuft als normaler User auf Port 8443
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user