Dolibarr-Modul NetDiag — Netzwerk-Diagnose-Protokolle, JSON-API für die NetDiag-App
Find a file
Eduard Wisch dc716709d5
All checks were successful
Deploy netdiag / deploy (push) Has been skipped
Datenkorrektur fuer die drei dhcpcheck-Altmessungen vorbereitet
Eddy hat die Korrektur der Prod-Datensaetze angewiesen. Das SQL liegt jetzt
unter doc/datenkorrekturen/ - bewusst NICHT unter sql/, weil alles dort von
Dolibarrs _load_tables() beim Aktivieren des Moduls automatisch ausgefuehrt
wird und eine Datenkorrektur in keinen automatischen Lauf gehoert.

Enthaelt Begruendung, den vollstaendigen Vorher-Zustand aller drei Zeilen
(rowid 5, 7, 10) und den Rueckweg. Die WHERE-Bedingung ist wiederholbar und
im Trockenlauf gegen Prod geprueft: sie trifft exakt diese drei Zeilen,
rowid 42 (echte Messung mit echtem Ergebnis) bleibt unangetastet.

Korrigiert werden nur measure_status und label - also die Bewertung und deren
Zusammenfassung. Die Spalte result bleibt unveraendert, sie ist die Messung
selbst und damit Beleg.

Ausgefuehrt ist die Korrektur noch nicht: der Sicherheitsfilter der Sitzung
blockiert Schreibzugriffe auf die Produktionsdatenbank.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 16:24:02 +02:00
.forgejo/workflows Initiales Commit — Dolibarr-Modul NetDiag [deploy] 2026-05-19 12:12:11 +02:00
admin Initiales Commit — Dolibarr-Modul NetDiag [deploy] 2026-05-19 12:12:11 +02:00
api Vier Bestandsfehler im Kundendokument und im Sync behoben 2026-08-16 19:02:11 +02:00
class Phase 5 abgeschlossen: Klarnamen, Parameter, Listen-Ampel, N+1, Standort 2026-08-16 11:09:28 +02:00
core/modules PDF-Zweig fuer die DNS-Pruefung 2026-08-17 06:54:55 +02:00
doc/datenkorrekturen Datenkorrektur fuer die drei dhcpcheck-Altmessungen vorbereitet 2026-08-17 16:24:02 +02:00
langs Phase 5 abgeschlossen: Klarnamen, Parameter, Listen-Ampel, N+1, Standort 2026-08-16 11:09:28 +02:00
lib PDF-Zweig fuer die DNS-Pruefung 2026-08-17 06:54:55 +02:00
sql Phase 5: Kundendokument lesbar, Gerätemerkmale kommen endlich an 2026-08-15 18:54:01 +02:00
ChangeLog.md PDF-Zweig fuer die DNS-Pruefung 2026-08-17 06:54:55 +02:00
netdiag_object_tab.php Initiales Commit — Dolibarr-Modul NetDiag [deploy] 2026-05-19 12:12:11 +02:00
netdiagindex.php Phase 5 abgeschlossen: Klarnamen, Parameter, Listen-Ampel, N+1, Standort 2026-08-16 11:09:28 +02:00
netdiagprotocol_card.php Drei Falschaussagen im Kundendokument, alle aus Altdaten 2026-08-16 23:11:07 +02:00
README.md Doku + Version 1.1.1: die Whitelist-Falle steht jetzt im README [deploy] 2026-08-16 19:56:10 +02:00

NetDiag — Netzwerk-Diagnose für Dolibarr

Dolibarr-Modul für die Ablage von Netzwerk-Diagnose-Protokollen. Erfasst per mobiler App (siehe Projekt NetzwerkDiagnose/app) gefundene Geräte, Ports und Messungen und hängt die Protokolle dauerhaft an Kunde und Auftrag.

Funktionen

  • Datenmodell: Protokoll → Geräte → Messungen (llx_netdiag_*)
  • Tab Netzwerk-Diagnose an Kunde (thirdparty) und Auftrag (commande)
  • JSON-API unter /custom/netdiag/api/ für die mobile App. Anmeldung seit v1.1.0 über das zentrale Auth-Modul awlauth (Brute-Force-Bremse, gemeinsame Sitzungsliste, „Gerät abmelden"); der alte modul-eigene JWT-Pfad bleibt als Rückfall, bis alle Geräte die neue APK haben
  • PDF-Protokoll, wird im Dokumentenarchiv (ECM) abgelegt
  • Zwei Sichten auf dieselben Messdaten: die Technikeransicht zeigt alles, das Kunden-PDF nur eine Whitelist (siehe „Neue Messart" unten)
  • Rechtesystem: netdiag → protocol → read/write/delete
  • Mehrsprachig (de_DE, en_US)
  • QR-Code zum App-Download in der Modul-Einrichtung

Installation

  1. Verzeichnis netdiag/ nach htdocs/custom/ auf den Dolibarr-Server kopieren. Auf dem Produktivsystem übernimmt das die Forgejo-Pipeline (.forgejo/workflows/deploy.yml) — Commit mit [deploy] in der Message synct das Modul automatisch auf den Server.
  2. In Dolibarr: Einrichtung → Module → NetDiag aktivieren.
  3. Beim Aktivieren werden die Tabellen llx_netdiag_protocol, llx_netdiag_device, llx_netdiag_measurement angelegt und ein JWT-Schlüssel erzeugt.
  4. Benutzern das Recht NetDiag → Protokolle lesen/schreiben geben.

API-Endpunkte

Alle unter https://<dolibarr>/custom/netdiag/api/:

Endpunkt Methode Zweck
auth.php POST {login,password} Anmeldung → {token,expiresIn,user}
customers.php GET ?q= / ?id= Kundensuche / Kundendetail
orders.php GET ?open=1&q= / ?id= Auftragsliste / Auftragsdetail
protocols.php GET ?id= Protokoll mit Geräten + Messungen
protocols.php POST {action:"sync",protocol:{…}} Protokoll anlegen/aktualisieren (idempotent über clientUuid)
pdf.php GET ?id=&jwt= Protokoll-PDF streamen

Authentifizierung per Authorization: Bearer <token> oder ?jwt=<token>. Jeder Endpunkt prüft ein Recht — protocols.php im GET-Zweig protocol read oder write: die Rechte sind in Dolibarr einzeln vergebbar, und ein Techniker mit Schreib- ohne ausdrückliches Leserecht darf nicht ausgesperrt werden (das fiele erst beim Kunden auf).

?jwt= in der URL ist nur für den PDF-Download da (der Browser kann dort keinen Header setzen). Langzeit-Token in URLs landen in Zugriffs- und Proxy-Logs — Ablösung steht in ROADMAP_UMSETZUNG.md, Phase L5.

Neue Messart aus der App aufnehmen

Die App schickt Messergebnisse als freies JSON. Damit ein Feld beim Kunden ankommt, sind drei Stellen in lib/netdiag.lib.php zu pflegen:

Funktion Zweck Wenn vergessen
netdiagKundenfelder() Whitelist + Beschriftung + Einheit Feld verschwindet im Kunden-PDF spurlos, übrig bleibt die Ampel
netdiagToolName() Klarname des Werkzeugs beim Kunden steht „[netzwerk] meintool"
netdiagKundentext() Rohwerte übersetzen/entschärfen englische API-Werte im deutschen Abnahmedokument

Spiegelbildlich dazu app/src/lib/messfelder.ts in der App.

Feldnamen immer aus dem erzeugenden Code der App ablesen (types.ts, die run()-Rümpfe der Werkzeuge), nie aus dem Kopf und nie aus selbst geschriebenen Testdaten — das ist hier schon zweimal schiefgegangen (KB #1084). Braucht die Messart eine eigene Tabellendarstellung im PDF, einen Zweig in lib/netdiag_pdf.lib.php ergänzen (Vorbilder: netdiagPdfStressTest, netdiagPdfWifiKanal) — sonst wird das Ergebnis zu einer |-getrennten Zeile zusammengeschoben.

Einrichtung

Einrichtung → Module → NetDiag → Einstellungen:

  • Token-Gültigkeit (Sekunden)
  • App-Download-URL (APK) — wird als QR-Code angezeigt

Lizenz

GPLv3