v0.9.0: no-MAC device tracking, IP-change dashboard, extended search

This commit is contained in:
2026-07-02 20:37:57 +02:00
parent 9fa20af87a
commit 85118c5bcc
23 changed files with 1703 additions and 48 deletions
+9
View File
@@ -1,8 +1,17 @@
<?php
use App\Models\NetworkSegment;
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schedule;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
// Netzwerk-Scans automatisch ausführen
// Der Scheduler prüft jede Minute ob ein Segment fällig ist
Schedule::command('network:scan')
->everyMinute()
->withoutOverlapping()
->runInBackground();
+15 -1
View File
@@ -42,12 +42,26 @@ Route::prefix('network')
// Dashboard
Route::get('/', [NetworkController::class, 'dashboard'])->name('dashboard');
// Subnetz-Erkennung (JSON)
Route::get('/detect-subnets', [NetworkController::class, 'detectSubnets'])->name('detect-subnets');
// Globale Suche
Route::get('/search', [NetworkController::class, 'search'])->name('search');
// Segmente (CRUD)
// Segmente (CRUD + Scan auslösen)
Route::resource('segments', NetworkSegmentController::class)
->names('segments');
Route::post('segments/{segment}/scan', [NetworkSegmentController::class, 'triggerScan'])
->name('segments.scan');
Route::post('segments/{segment}/ip-notes', [NetworkSegmentController::class, 'saveIpNote'])
->name('segments.ip-notes');
Route::get('segments/{segment}/export/xlsx', [NetworkSegmentController::class, 'exportXlsx'])
->name('segments.export.xlsx');
Route::get('segments/{segment}/export/pdf', [NetworkSegmentController::class, 'exportPdf'])
->name('segments.export.pdf');
// Chronologischer IP-Verlauf
Route::get('/history', [NetworkController::class, 'history'])->name('history');
// Geräte
Route::get('/devices', [NetworkController::class, 'devices'])->name('devices');