Compare commits

..

2 commits

Author SHA1 Message Date
2028184f70 Trigger: Modul-Deploy [deploy]
All checks were successful
Deploy netdiag / deploy (push) Successful in 14s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 06:54:55 +02:00
75c1446e76 PDF-Zweig fuer die DNS-Pruefung
netdiagPdfDns(): je befragtem Server eine eigene Zeile statt einer
|-getrennten Kette. Bei zwei Servern ging die generische Darstellung noch,
bei den vier bis fuenf Eintraegen eines Firmennetzes waere die eigentliche
Aussage - welcher Server antwortet und welcher nicht - nicht mehr auffindbar
gewesen. Damit hat jedes Werkzeug mit Listenergebnis einen eigenen Renderer.

Geprueft im vollstaendigen Durchstich: in der App gemessen (Emulator gegen die
lokale Testinstanz), synchronisiert, PDF aus ND2026-0016 erzeugt und angesehen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 06:54:55 +02:00
3 changed files with 79 additions and 1 deletions

View file

@ -1,5 +1,20 @@
# Changelog NetDiag # Changelog NetDiag
## 1.1.6 — 2026-08-17
### PDF-Zweig für die DNS-Prüfung
`netdiagPdfDns()` — je befragtem Server eine eigene Zeile statt einer
`|`-getrennten Kette. Bei zwei Servern ging die generische Darstellung noch,
bei den vier bis fünf Einträgen eines Firmennetzes wäre die eigentliche Aussage
— welcher Server antwortet und welcher nicht — nicht mehr auffindbar gewesen.
Damit hat jedes Werkzeug mit Listenergebnis einen eigenen Renderer: Dauertest,
WLAN-Kanal, Geräte-Monitor, Internet-Kette, DNS-Prüfung.
Geprüft im vollständigen Durchstich: in der App gemessen (Emulator gegen die
lokale Testinstanz), synchronisiert, PDF aus Protokoll ND2026-0016 erzeugt und
angesehen.
## 1.1.5 — 2026-08-16 ## 1.1.5 — 2026-08-16
### Feldtabelle für das neue Werkzeug „DNS-Prüfung" ### Feldtabelle für das neue Werkzeug „DNS-Prüfung"

View file

@ -67,7 +67,7 @@ class modNetDiag extends DolibarrModules
$this->editor_url = ''; $this->editor_url = '';
$this->editor_squarred_logo = ''; $this->editor_squarred_logo = '';
$this->version = '1.1.5'; $this->version = '1.1.6';
// Konstanten-Name in llx_const für Modul-Status // Konstanten-Name in llx_const für Modul-Status
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);

View file

@ -220,6 +220,8 @@ function netdiagGeneratePdf($db, $protocol, $outputlangs)
netdiagPdfMonitor($pdf, $m->result); netdiagPdfMonitor($pdf, $m->result);
} elseif ($m->tool === 'internetkette') { } elseif ($m->tool === 'internetkette') {
netdiagPdfKette($pdf, $m->result); netdiagPdfKette($pdf, $m->result);
} elseif ($m->tool === 'dnscheck') {
netdiagPdfDns($pdf, $m->result);
} else { } else {
$pdf->MultiCell(180, 5, netdiagPdfFlattenResult($m->result), 1, 'L'); $pdf->MultiCell(180, 5, netdiagPdfFlattenResult($m->result), 1, 'L');
} }
@ -435,6 +437,67 @@ function netdiagPdfStressTest($pdf, $json)
} }
} }
/**
* DNS-Prüfung ins PDF schreiben: je Server eine eigene Zeile.
*
* Dieselbe Begründung wie beim Monitor und bei der Internet-Kette: die
* generische Darstellung schiebt alle Serverantworten zu einer `|`-Kette
* zusammen. Bei zwei Servern geht das noch, bei den vier bis fünf Einträgen
* eines Firmennetzes ist die eigentliche Aussage welcher Server antwortet
* und welcher nicht nicht mehr auffindbar.
*
* @param TCPDF $pdf PDF-Objekt (Cursor steht direkt hinter der Titelzeile)
* @param string $json result-JSON der Messung
* @return void
*/
function netdiagPdfDns($pdf, $json)
{
$data = json_decode((string) $json, true);
if (!is_array($data)) {
$pdf->MultiCell(180, 5, netdiagPdfFlattenResult($json), 1, 'L');
return;
}
$sum = array();
if (!empty($data['ziel'])) {
$sum[] = 'Abgefragter Name: '.$data['ziel'];
}
if (!empty($data['gefragteServer']) && is_array($data['gefragteServer'])) {
$sum[] = 'Befragte Server: '.count($data['gefragteServer']);
}
if (!empty($sum)) {
$pdf->MultiCell(180, 5, netdiagPdfText(implode(' | ', $sum)), 1, 'L');
}
$antworten = (isset($data['antworten']) && is_array($data['antworten'])) ? $data['antworten'] : array();
if (!empty($antworten)) {
netdiagPdfEnsureSpace($pdf, 10);
$pdf->SetFont('', 'B', 8);
$pdf->Cell(180, 5, 'Antworten der Server ('.count($antworten).')', 1, 1, 'L');
$pdf->SetFont('', '', 8);
foreach ($antworten as $line) {
netdiagPdfEnsureSpace($pdf, 5, function ($p) {
$p->SetFont('', 'B', 8);
$p->Cell(180, 5, 'Antworten der Server — Fortsetzung', 1, 1, 'L');
$p->SetFont('', '', 8);
});
// MultiCell, weil eine Fehlermeldung des Servers lang werden kann
$pdf->MultiCell(180, 5, netdiagPdfText(netdiagKundentext((string) $line)), 1, 'L');
}
}
// Messverfahren und Hinweis zum Schluss — die Grenze der Aussage gehört
// ins Kundendokument (gemessen wurde je ein Paket an je einen Server).
foreach (array('hinweis', 'verfahren') as $feld) {
if (!empty($data[$feld])) {
netdiagPdfEnsureSpace($pdf, 8);
$pdf->SetFont('', 'I', 7);
$pdf->MultiCell(180, 4, netdiagPdfText(netdiagKundentext((string) $data[$feld])), 1, 'L');
$pdf->SetFont('', '', 8);
}
}
}
/** /**
* Internet-Kette ins PDF schreiben: Fehlerglied zuerst, dann die Stufen. * Internet-Kette ins PDF schreiben: Fehlerglied zuerst, dann die Stufen.
* *