Skip to content

matthili/SignalReport

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SignalReport

Java 21+ License: MIT JUnit Tests

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.


🌟 Features

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
⚠️ Verbindungsausfall-Analyse
📤 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)

🚀 Schnellstart

Voraussetzungen

  • Java 21 oder höher (Download)
  • (Optional) Maven für Build aus Quelle

Installation & Start

# 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.


📦 Installation als Dienst

Für den Dauerbetrieb (auch ohne angemeldeten Benutzer) kann SignalReport als Hintergrund-Dienst installiert werden.

Windows

  1. signalreport_windows.zip herunterladen und entpacken
  2. install.bat mit Rechtsklick → "Als Administrator ausführen" starten
  3. Das Skript installiert den Dienst, erstellt eine Desktop-Verknüpfung und richtet die Firewall ein

macOS / Linux

  1. signalreport_mac-linux.zip herunterladen und entpacken
  2. Terminal öffnen und ausführen: sudo bash install.sh
  3. Der Dienst wird als systemd-Service (Linux) bzw. launchd-Service (macOS) eingerichtet

💡 Die signalreport.jar muss sich im selben Verzeichnis wie die Installations-Skripte befinden.

Deinstallation

  • Windows: uninstall.bat Rechtsklick → als Administrator ausführen
  • macOS/Linux: sudo bash uninstall.sh (im Terminal)

📸 Screenshots

Web-Oberfläche PDF-Bericht (Auszug) DNS-Benchmark
Dashboard PDF Report DNS Benchmark
Live-Charts, Statistiken, Einstellungen Professioneller Bericht für Provider Vergleich globaler DNS-Server

⚙️ Konfiguration

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!


📊 PDF-Bericht – Perfekt für Provider-Beschwerden

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:

  1. PDF mit "📄 PDF-Bericht (12 Monate)" generieren
  2. Als signalreport-providername-beschwerde-2026-03-25.pdf speichern
  3. 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."

🏗️ Projektstruktur

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

📚 Dokumentation


🔒 Sicherheitshinweise

  • 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)

🤝 Mitwirken

SignalReport ist Open Source! Du kannst:

  • 🐛 Fehler melden (Issues)
  • 💡 Neue Features vorschlagen
  • 📝 Dokumentation verbessern
  • 🌍 Übersetzungen beisteuern

📜 Lizenz

MIT License – siehe LICENSE Datei.
Frei nutzbar für private und kommerzielle Zwecke – mit Quellenangabe.


🙏 Danksagung

Dieses Projekt nutzt großartige Open-Source-Bibliotheken und Dienste:

Backend-Bibliotheken (Maven/Java):

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:

Dokumentation & Entwicklung:

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)

📮 Kontakt & Support

Bei Fragen zur Abschlussarbeit oder technischen Details:
📧 **


🌐 SignalReport
Entwickelt mit ❤️ für alle, die wissen wollen, wie stabil ihre Internet-Verbindung ist.