203 lines
9.0 KiB
Markdown
203 lines
9.0 KiB
Markdown
# 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.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 via `entrypoint.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
|
||
- `.dockerignore` für minimale Image-Größe
|
||
- `.env.example` auf 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ührt `git 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.php` mit 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
|
||
```bash
|
||
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_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
|
||
- Globale Suche: Zeigt auch Treffer direkt aus `network_hosts` (Scan-Verlauf) wenn noch kein Geräteeintrag vorhanden
|
||
- Artisan-Command `network:backfill-devices`: Erstellt `network_devices`-Einträge für alle bestehenden `network_hosts` ohne `device_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 `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.10.0...HEAD
|
||
[0.10.0]: http://localhost:3000/admin/Network-MGMT/compare/v0.9.0...v0.10.0
|
||
[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
|