Ein professionelles, Open-Source Monitoring-Tool zur kontinuierlichen Überwachung deiner Internet-Qualität – mit PDF-Berichten für Provider-Beschwerden, IP-Tracking und DNS-Benchmark.
💡 Warum SignalReport?
"Mein Internet ist langsam!" reicht bei Providern nicht. Mit SignalReport lieferst du nachweisbare, quantifizierte Belege – nicht nur Bauchgefühl.
| Kategorie | Funktionen |
|---|---|
| Monitoring | 🔁 Kontinuierliche Messung (Ping/DNS/HTTP) ⏱️ Konfigurierbares Intervall (5s–1h) ⏸️ Maintenance-Fenster (Router-Updates) 🌐 IP-Tracking (externe IP-Änderungen erkennen) |
| Visualisierung | 📊 Live-Charts mit Chart.js 🌡️ Heatmap pro Stunde 🖥️ Web-Oberfläche (responsiv) 🔔 Browser-Push bei Ausfällen/Hoher Latenz |
| Berichte | 📄 PDF-Export (24h/7 Tage/12 Monate) 📈 3 Charts (PING/DNS/HTTP) mit Ziel-Änderungs-Markierung 🏆 Top 10 schlechteste Messungen 📤 CSV-Export (vollständig oder gefiltert) |
| Sicherheit | 🔐 Setup-Wizard (Web-basiert, keine CLI) 🔑 Challenge-Response-Authentifizierung (SHA-256) 👥 Admin/User-Rollen mit Session-Management 🛡️ Passwort wird nie im Klartext übertragen |
| Konfiguration | ⚙️ Dynamische Messziele (Ping/DNS/HTTP) 🌍 DNS-Benchmark (Server weltweit) 👤 Benutzer-Info (Provider/Kundennummer für Berichte) |
- Java 21 oder höher (Download)
- (Optional) Maven für Build aus Quelle
# 1. JAR herunterladen (oder mit Maven bauen: mvn clean package)
java -jar signalreport.jar
# 2. Browser öffnen
http://localhost:4567
# 3. Setup-Wizard durchlaufen (Admin-Passwort festlegen)✅ Fertig! Die Messung beginnt automatisch – alle 10 Sekunden werden Ping, DNS und HTTP getestet.
Für den Dauerbetrieb (auch ohne angemeldeten Benutzer) kann SignalReport als Hintergrund-Dienst installiert werden.
signalreport_windows.zipherunterladen und entpackeninstall.batmit Rechtsklick → "Als Administrator ausführen" starten- Das Skript installiert den Dienst, erstellt eine Desktop-Verknüpfung und richtet die Firewall ein
signalreport_mac-linux.zipherunterladen und entpacken- Terminal öffnen und ausführen:
sudo bash install.sh - Der Dienst wird als systemd-Service (Linux) bzw. launchd-Service (macOS) eingerichtet
💡 Die
signalreport.jarmuss sich im selben Verzeichnis wie die Installations-Skripte befinden.
- Windows:
uninstall.batRechtsklick → als Administrator ausführen - macOS/Linux:
sudo bash uninstall.sh(im Terminal)
| Web-Oberfläche | PDF-Bericht (Auszug) | DNS-Benchmark |
|---|---|---|
![]() |
![]() |
![]() |
| Live-Charts, Statistiken, Einstellungen | Professioneller Bericht für Provider | Vergleich globaler DNS-Server |
Nach dem ersten Start wird config.json erstellt. Wichtige Einstellungen:
{
"measurement": {
"intervalSeconds": 10,
"targets": {
"ping": "8.8.8.8",
"dns": "google.com",
"http": "https://example.com"
}
},
"maintenanceWindow": {
"enabled": true,
"startHour": 4,
"startMinute": 0,
"endHour": 4,
"endMinute": 10
},
"userInfo": {
"provider": "Oranga",
"customerId": "08154711",
"userName": "Matthias F."
}
}💡 Tipp: Änderungen über die Web-Oberfläche (Tab ⚙️ Einstellungen) werden sofort übernommen und persistiert!
Der 12-Monats-Bericht enthält:
- ✅ Deine Kundendaten (Name, Provider, Kundennummer)
- ✅ Host-Informationen (Hostname, Hash, IPs)
- ✅ 3 Charts mit roten Linien bei Ziel-Änderungen
- ✅ Chronologische Liste der gemessenen Ziele
- ✅ Top 10 schlechteste Messungen (mit Zeitstempel)
- ✅ Top 10 längste Verbindungsausfälle
- ✅ Gesamtanzahl der Ausfälle
📌 So nutzt du den Bericht:
- PDF mit "📄 PDF-Bericht (12 Monate)" generieren
- Als
signalreport-providername-beschwerde-2026-03-25.pdfspeichern- An Support-Mail anhängen mit Text:
"Anbei der technische Nachweis für wiederholte Verbindungsprobleme im Zeitraum XX bis YY. Bitte prüfen Sie die Leitung zu meinem Anschluss."
signalreport/
├── src/main/java/at/mafue/signalreport/
│ ├── SignalReportApp.java # Hauptklasse (Entry Point)
│ ├── Config.java # Singleton-Konfiguration (JSON)
│ ├── Measurer.java # Interface (Strategy-Pattern)
│ ├── PingMeasurer.java # ICMP-Ping-Messung
│ ├── DnsMeasurer.java # DNS-Auflösungs-Messung
│ ├── HttpMeasurer.java # HTTP-GET-Messung
│ ├── DnsBenchmark.java # DNS-Server-Vergleich
│ ├── H2MeasurementRepository.java # Datenbank-Zugriff (H2)
│ ├── WebServer.java # Javalin REST-API + Routing
│ ├── HtmlPageRenderer.java # HTML-Rendering Hauptseite
│ ├── SetupPageRenderer.java # HTML-Rendering Setup-Wizard
│ ├── LoginPageRenderer.java # Login-Seite (Challenge-Response)
│ ├── SessionManager.java # Session- & Nonce-Verwaltung
│ ├── PdfReportGenerator.java # PDF-Export (OpenPDF + JFreeChart)
│ ├── NetworkInfo.java # IP-Adress-Ermittlung (mit Cache)
│ └── HostIdentifier.java # Host-Hash (stabile ID)
├── src/test/java/at/mafue/signalreport/ # 8 Testklassen, 76 Tests
├── src/main/resources/web/ # Statische Dateien (Logos, Favicons)
├── docs/
│ ├── diagrams/ # PlantUML-Diagramme (.puml + .png)
│ ├── latex/ # Vollständige LaTeX-Dokumentation
│ └── screenshots/ # UI-Screenshots
├── deployment/ # Installations-Skripte (Win/Linux/macOS)
├── config.json # Auto-generierte Konfiguration
├── data/ # H2-Datenbank (gitignored)
├── pom.xml # Maven-Build-Konfiguration
└── README.md # Diese Datei
- Vollständige LaTeX-Dokumentation als PDF:
signalreport-dokumentation.pdfEnthält UML-Diagramme, Architekturbeschreibung, Implementierungsdetails und Testbericht. - UML-Diagramme: Alle 7 Diagramme als PNG und PlantUML in
docs/diagrams/:class-diagram.png– Klassenstrukturcomponent-diagram.png– Komponentenübersichtsequence-measurement.png– Messungsablaufsequence-pdf.png– PDF-Export-Prozessusecase-diagram.png– Use-Casesdeployment-diagram.png– Deployment-Szenarienstate-diagram-auth.png– Authentifizierungs-Zustände
- Challenge-Response Auth: Passwörter werden nie im Klartext übertragen – SHA-256 mit Einmal-Nonces
- Session-Management: 24h Session-Timeout, sichere Cookie-basierte Authentifizierung
- Authentifizierung: Für öffentliche IPs (z.B. NAS mit Port-Weiterleitung) unbedingt aktivieren (Tab 🔐 Sicherheit)
- Setup-Passwort: Admin-Passwort wird beim ersten Start festgelegt – niemals Standardwerte belassen!
- Datenbank: Alle Daten lokal gespeichert – keine Cloud-Abhängigkeit, keine externen APIs (außer ipify.org für externe IP)
SignalReport ist Open Source! Du kannst:
- 🐛 Fehler melden (Issues)
- 💡 Neue Features vorschlagen
- 📝 Dokumentation verbessern
- 🌍 Übersetzungen beisteuern
MIT License – siehe LICENSE Datei.
Frei nutzbar für private und kommerzielle Zwecke – mit Quellenangabe.
Dieses Projekt nutzt großartige Open-Source-Bibliotheken und Dienste:
Backend-Bibliotheken (Maven/Java):
- Javalin – Leichtgewichtiges Web-Framework
- H2 Database – Embedded SQL-Datenbank
- Jackson – JSON-Serialisierung (Config, API)
- OpenPDF – PDF-Erstellung
- JFreeChart – Chart-Generierung für PDF-Reports
- dnsjava – DNS-Queries für Benchmark
- SLF4J + Logback – Logging
- JUnit 5 – Test-Framework
Frontend (Browser):
- Chart.js – Live-Charts im Web-Interface (via CDN)
- Web Crypto API – Client-seitiges SHA-256 Hashing für Challenge-Response Auth
Externe Dienste:
- ipify.org – Ermittlung der externen IP-Adresse
Build & Deployment:
- Apache Maven – Build-System
- Apache Commons Daemon – Service-Installation (procrun/jsvc)
Dokumentation & Entwicklung:
- PlantUML – UML-Diagramme
- LaTeX – Projektdokumentation
- EmojiTerra – Emoji-Übersicht
- StackOverflow – Fragen/Antworten-Plattform für Softwareentwickler
- Hitchhiker’s Guide to PlantUML – Nomen est omen
Außerdem gilt mein Dank:
- Christian Schäfer – Java-Lehrgang und Projekt-Coaching
- Serap Kadam – Unterstützung, Freundschaft, alles rund um Java
- [Angelika Winder] – Unterstützung in allen Lebenslagen (außer bei Java)
Bei Fragen zur Abschlussarbeit oder technischen Details:
📧 **
🌐 SignalReport
Entwickelt mit ❤️ für alle, die wissen wollen, wie stabil ihre Internet-Verbindung ist.



