# Changelog Alle wichtigen Änderungen an diesem Projekt werden in dieser Datei dokumentiert. Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.0.0/). Dieses Projekt verwendet [Semantic Versioning](https://semver.org/lang/de/). ## [Unreleased] --- ## [0.9.0] - 2026-07-02 ### Added - Geräte-Tracking ohne MAC-Adresse: nmap-Hosts aus Remote-Subnetzen (kein ARP möglich) werden jetzt als `network_devices`-Einträge erfasst (Tracking per Hostname, Fallback per IP) - `mac_address` in `network_devices` ist jetzt nullable (mehrere NULL-Werte durch MySQL erlaubt) - Dashboard: Separater Warnblock „⚠️ IP-Adressen-Wechsel erkannt" mit Anzeige alter IP → neuer IP, Gerätename, MAC, Quittier-Button inkl. Notizfeld - Alle anderen Ereignisse auf dem Dashboard ebenfalls mit inline Notiz quittierbar - Geräte-Detailseite: IP-Verlauf zeigt Hinweis wenn ein Gerät mehrere verschiedene IPs hatte, alle bekannten IPs als Tags, aktuelle IP hervorgehoben - Globale Suche: `netbios_name` wird jetzt mitdurchsucht ### Setup (einmalig) ``` php artisan migrate ``` --- ## [0.8.0] - 2026-07-02 ### Added - IP-Bemerkungen: Pro IP-Adresse je Segment eine Bemerkung hinterlegen (inline editierbar in der Scan-Detailansicht) - Neue Tabelle `network_ip_notes` (Segment + IP als Unique-Key) - Subnetz-Erkennung: Schaltfläche „🔍 Erkennen" in Segment anlegen/bearbeiten – ermittelt /24-Subnetze aus vorhandenen IP-Daten per API (`/network/detect-subnets`) - Export Segment als Excel (`.xlsx`) via PhpSpreadsheet – enthält alle Hosts des letzten Scans inkl. Bemerkungen - Export Segment als PDF via DomPDF – Querformat-Tabelle mit Hosts, Status, MAC, Hostname, Hersteller, Ping und Bemerkungen - Export-Buttons (📊 Excel / 📄 PDF) auf Segment-Detailseite und Scan-Detailseite ### Setup (einmalig ausführen) ``` composer require phpoffice/phpspreadsheet barryvdh/laravel-dompdf php artisan migrate ``` --- ## [0.7.0] - 2026-07-02 ### Added - Automatischer Netzwerkscan via `nmap` pro Segment (Artisan Command `network:scan`) - Scan-Zyklus pro Segment einstellbar: 5 / 15 / 30 / 60 / 360 / 720 / 1440 Minuten - „Jetzt scannen"-Button direkt auf der Segment-Detailseite - nmap-Parameter pro Segment konfigurierbar (z.B. `-sn`, `-sn -p 22,80,443`) - Laravel Scheduler führt `network:scan` jede Minute aus und prüft fällige Segmente - Auto-Refresh auf Segment-Detailseite nach manuellem Scan (prüft alle 10s) - Chronologischer IP-Verlauf (`/network/history`) über alle Scans und Segmente - Filter im IP-Verlauf: IP, MAC, Hostname, Segment, Status, Datumsbereich - IP-Verlauf Auto-Refresh alle 60 Sekunden (ohne aktiven Filter) - Navigation: neuer Menüpunkt „IP-Verlauf" - `last_scanned_at` und `scan_interval_minutes` in Segment-Stammdaten ### Setup (Cron für Scheduler) ``` * * * * * cd /home/arudolph/Projekte/PHP/Network-MGMT && php artisan schedule:run >> /dev/null 2>&1 ``` --- ## [0.6.0] - 2026-07-01 ### Added - Netzwerk-Segmentverwaltung: Subnetze mit Name, VLAN-ID und Aktiv/Inaktiv-Flag definieren - Neue Tabelle `network_segments` als organisatorische Einheit für Scan-Durchläufe - Dashboard-Ansicht „Netzwerk" mit Übersicht aller Segmente, KPI-Karten und offenen Ereignissen - Globale Suche über alle Segmente nach IP, MAC, Hostname und Bezeichnung - Navigation „Netzwerk" als Dropdown: Dashboard, Segmente, Alle Geräte, Suche, Import - Import-Seite: Segment-Auswahl beim Upload eines Angry IP Scanner Exports - Segment-Detailseite mit Scan-Historie - `segment_id` FK in `network_scans` Tabelle --- ## [0.5.0] - 2026-06-29 ### Added - Netzwerk-Modul: Menüpunkt „Netzwerk" auf Ebene 0 für alle eingeloggten Benutzer - Import von Angry IP Scanner `.txt`-Exporten (tab-getrennt) via Datei-Upload - Automatische Erkennung und Speicherung von Netzwerkgeräten anhand MAC-Adresse - Chronologische Scan-Sessions mit Metadaten (Subnetz, Quelle, Gesamt-/Online-Hosts) - Änderungserkennung: neue Geräte, IP-Wechsel, Online/Offline-Statuswechsel - Ereignis-Protokoll pro Gerät mit Bestätigungs-Workflow (✓ Bestätigen) - Geräte-Detailansicht: Stammdaten, Bezeichnung, Notizen, IP-Verlauf, Ereignislog - Geräte-Übersicht mit Suche und Statusfilter (Online/Offline) - Scan-Detailansicht mit vollständiger Host-Tabelle - Manuelle Notizen zu Geräten hinzufügbar - 4 neue Datenbanktabellen: `network_scans`, `network_devices`, `network_hosts`, `network_device_events` - `NetworkScanImporter`-Service für Parser-Logik (MAC-Normalisierung, Spalten-Aliase) - `NetworkController` mit 9 Routen --- ## [0.4.0] - 2026-06-29 ### Added - Einstellungen → Layout: Seitenname, Logo-Upload, Button-Farbe (Colorpicker), Dark/Light-Mode - Settings-Tabelle als Key-Value-Store in der Datenbank - SettingsService mit Cache-Layer (automatische Invalidierung bei Änderung) - SettingsServiceProvider: Einstellungen werden global in alle Views injiziert - Dark-Mode via `dark`-Klasse auf HTML-Element (Tailwind CSS) - CSS-Variable `--color-primary` für dynamische Button-Farbe - Hilfe-Menü auf Ebene 0 (Dropdown) für alle eingeloggten Benutzer - Hilfe → Handbuch: Übersicht über Rollen, Funktionen, Bedienung - Hilfe → Changelog: Changelog direkt im Browser lesbar - Navigation: Einstellungen-Dropdown um Layout erweitert --- ## [0.3.0] - 2026-06-27 ### Added - Admin-Modul: komplette Benutzerverwaltung unter `/admin/users` - Benutzer anlegen, bearbeiten, löschen über Web-Oberfläche - Rollenzuweisung direkt im Formular (admin / manager / user) - Navigationslink „Benutzerverwaltung" nur für Admins sichtbar (`@role('admin')`) - Gefahrenzone im Bearbeiten-Formular für sicheres Löschen - Schutz: eigener Account kann nicht gelöscht werden ### Security - Admin-Routen mit Middleware `role:admin` geschützt --- ## [0.2.0] - 2026-06-27 ### Added - Laravel 13 Projektstruktur - Authentifizierung via Laravel Breeze (Blade) - RBAC via Spatie Permission v8 (admin/manager/user) - MariaDB-Anbindung konfiguriert - Rollen: `admin`, `manager`, `user` - Permissions: `user.*`, `role.*`, `network.*` - Standard-Admin-Account: admin@mms-systemservice.de - Docker-Umgebung: Gitea, MariaDB, phpMyAdmin --- ## [0.1.0] - 2026-06-27 ### Added - Initiale Projektstruktur angelegt - Git-Repository mit Gitea-Remote eingerichtet - Grundlegende PHP-Projektstruktur (public/, src/, config/) - composer.json, .gitignore, README.md [Unreleased]: http://localhost:3000/admin/Network-MGMT/compare/v0.9.0...HEAD [0.9.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.8.0...v0.9.0 [0.8.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.7.0...v0.8.0 [0.7.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.6.0...v0.7.0 [0.6.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.5.0...v0.6.0 [0.5.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.4.0...v0.5.0 [0.4.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.3.0...v0.4.0 [0.3.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.2.0...v0.3.0 [0.2.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.1.0...v0.2.0 [0.1.0]: http://localhost:3000/admin/Network-MGMT/releases/tag/v0.1.0