9.0 KiB
9.0 KiB
Changelog
Alle wichtigen Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
Format basiert auf Keep a Changelog. Dieses Projekt verwendet Semantic Versioning.
Unreleased
0.10.0 - 2026-07-02
Added
- Docker-Setup:
Dockerfile(PHP 8.5 FPM + nginx + Node.js 20 + nmap + supervisor),docker-compose.yml(App + MariaDB 11), automatischer Startup viaentrypoint.sh(wartet auf DB, migriert, baut Assets, startet Supervisor) docker/nginx.conf,docker/supervisord.conf: nginx als Reverse-Proxy zu PHP-FPM, Laravel Scheduler als Supervisor-Job.dockerignorefür minimale Image-Größe.env.exampleauf Docker-Betrieb angepasst (DB_HOST=db, MariaDB-Variablen, APP_PORT)- Software-Update-Funktion: Admin → Einstellungen → 🔄 Software-Update
config/version.php: zentrale Versionsverwaltung, konfigurierbare Gitea-URL- Artisan-Command
app:check-update: prüft Gitea-API auf neuere Release-Tags, speichert Ergebnis 6 Stunden im Cache - Artisan-Command
app:install-update: führtgit fetch,git checkout <tag>,composer install,npm run build,php artisan migrate, Cache-Rebuild durch — mit automatischem Wartungsmodus UpdateController(Admin): Update-Seite mit Versionsvergleich, Release-Notes, Install-Button, manueller Tag-Eingabe- Navigation: „Update"-Badge im Einstellungen-Dropdown wenn neue Version verfügbar (liest aus Cache, kein Live-HTTP-Request)
- Update-Check alle 6 Stunden via Laravel Scheduler (
app:check-update) - Wartungsseite
errors/maintenance.blade.phpmit Auto-Reload
Setup (einmalig)
GITEA_URL=http://<IP-des-Gitea-Servers>:3000
GITEA_REPO=admin/Network-MGMT
In .env eintragen, danach steht der Update-Check zur Verfügung.
Docker-Deployment
git clone http://<gitea>:3000/admin/Network-MGMT.git
cd Network-MGMT
cp .env.example .env
# .env anpassen (Passwörter, APP_URL, GITEA_URL)
docker compose up -d --build
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_addressinnetwork_devicesist 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_namewird jetzt mitdurchsucht - Globale Suche: Zeigt auch Treffer direkt aus
network_hosts(Scan-Verlauf) wenn noch kein Geräteeintrag vorhanden - Artisan-Command
network:backfill-devices: Erstelltnetwork_devices-Einträge für alle bestehendennetwork_hostsohnedevice_id
Setup (einmalig)
php artisan migrate
php artisan network:backfill-devices
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
nmappro Segment (Artisan Commandnetwork: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:scanjede 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_atundscan_interval_minutesin 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_segmentsals 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_idFK innetwork_scansTabelle
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)NetworkControllermit 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-primaryfü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:admingeschü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