+
+ Globale Suche
+
+
+
+
+
+
+
+ @if($q && strlen($q) < 2)
+
Mindestens 2 Zeichen eingeben.
+ @elseif($q)
+
+ {{ $devices->total() }} Ergebnis(se) für „{{ $q }}" über alle Segmente
+
+
+
+
+
+
+ | Status |
+ IP-Adresse |
+ MAC-Adresse |
+ Hostname / Bezeichnung |
+ Hersteller |
+ Zuletzt gesehen |
+ |
+
+
+
+ @forelse($devices as $device)
+
+ |
+
+ |
+ {{ $device->current_ip }} |
+ {{ $device->mac_address }} |
+
+ @if($device->label)
+ {{ $device->label }}
+ ({{ $device->hostname }})
+ @else
+ {{ $device->hostname ?? '—' }}
+ @endif
+ |
+ {{ $device->mac_vendor ?? '—' }} |
+
+ {{ $device->last_seen_at?->format('d.m.Y H:i') ?? '—' }}
+ |
+
+ Detail →
+ |
+
+ @empty
+
+ | Keine Geräte gefunden. |
+
+ @endforelse
+
+
+
+ @if($devices->hasPages())
+
+ {{ $devices->links() }}
+
+ @endif
+
+ @endif
+
+
+
+
diff --git a/resources/views/network/segments/create.blade.php b/resources/views/network/segments/create.blade.php
new file mode 100644
index 0000000..2216331
--- /dev/null
+++ b/resources/views/network/segments/create.blade.php
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
diff --git a/resources/views/network/segments/edit.blade.php b/resources/views/network/segments/edit.blade.php
new file mode 100644
index 0000000..d45ecb4
--- /dev/null
+++ b/resources/views/network/segments/edit.blade.php
@@ -0,0 +1,64 @@
+
+
+
+
Segmente
+
/
+
{{ $segment->name }} bearbeiten
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/views/network/segments/index.blade.php b/resources/views/network/segments/index.blade.php
new file mode 100644
index 0000000..ee8335f
--- /dev/null
+++ b/resources/views/network/segments/index.blade.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+ @if(session('success'))
+
{{ session('success') }}
+ @endif
+
+
+
+
+
+ | Aktiv |
+ Name |
+ Subnetz |
+ VLAN |
+ Scans |
+ Beschreibung |
+ |
+
+
+
+ @forelse($segments as $segment)
+
+ |
+
+ |
+
+
+ {{ $segment->name }}
+
+ |
+ {{ $segment->subnet }} |
+
+ {{ $segment->vlan_id ? 'VLAN ' . $segment->vlan_id : '—' }}
+ |
+ {{ $segment->scans_count }} |
+
+ {{ $segment->description ?? '—' }}
+ |
+
+ Bearbeiten
+
+ |
+
+ @empty
+
+ |
+ Noch keine Segmente. Jetzt anlegen
+ |
+
+ @endforelse
+
+
+
+
+
+
diff --git a/resources/views/network/segments/show.blade.php b/resources/views/network/segments/show.blade.php
new file mode 100644
index 0000000..2fc0630
--- /dev/null
+++ b/resources/views/network/segments/show.blade.php
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{-- Segment-Info --}}
+
+
+
Subnetz
+
{{ $segment->subnet }}
+
+
+
VLAN
+
{{ $segment->vlan_id ? 'VLAN ' . $segment->vlan_id : '—' }}
+
+
+
Status
+
+ {{ $segment->active ? 'Aktiv' : 'Inaktiv' }}
+
+
+
+
Scans gesamt
+
{{ $scans->total() }}
+
+
+
+ @if($latestScan)
+
+
+
Letzter Scan
+
{{ $latestScan->created_at->format('d.m.Y H:i') }}
+
+
+
Online / Gesamt
+
+ {{ $latestScan->online_hosts }}
+ / {{ $latestScan->total_hosts }}
+
+
+
+
Neue Geräte
+
{{ $latestScan->new_devices }}
+
+
+ @endif
+
+ {{-- Scan-Historie --}}
+
+
+
Scan-Historie
+
+
+
+
+ | Datum |
+ Scanner |
+ Gesamt |
+ Online |
+ Neu |
+ Geändert |
+ |
+
+
+
+ @forelse($scans as $scan)
+
+ | {{ $scan->created_at->format('d.m.Y H:i') }} |
+ {{ $scan->scanner ?? '—' }} |
+ {{ $scan->total_hosts }} |
+ {{ $scan->online_hosts }} |
+ {{ $scan->new_devices }} |
+ {{ $scan->changed_devices }} |
+
+ Details →
+ |
+
+ @empty
+
+ | Noch keine Scans für dieses Segment. |
+
+ @endforelse
+
+
+ @if($scans->hasPages())
+
+ {{ $scans->links() }}
+
+ @endif
+
+
+
+
+
diff --git a/routes/web.php b/routes/web.php
index efe739f..f0bac02 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -3,6 +3,7 @@
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\HelpController;
use App\Http\Controllers\NetworkController;
+use App\Http\Controllers\NetworkSegmentController;
use App\Http\Controllers\Admin\UserController as AdminUserController;
use App\Http\Controllers\Admin\LayoutController as AdminLayoutController;
use Illuminate\Support\Facades\Route;
@@ -38,14 +39,30 @@ Route::prefix('network')
->name('network.')
->middleware(['auth'])
->group(function () {
- Route::get('/', [NetworkController::class, 'index'])->name('index');
+ // Dashboard
+ Route::get('/', [NetworkController::class, 'dashboard'])->name('dashboard');
+
+ // Globale Suche
+ Route::get('/search', [NetworkController::class, 'search'])->name('search');
+
+ // Segmente (CRUD)
+ Route::resource('segments', NetworkSegmentController::class)
+ ->names('segments');
+
+ // Geräte
Route::get('/devices', [NetworkController::class, 'devices'])->name('devices');
Route::get('/devices/{device}', [NetworkController::class, 'device'])->name('device');
Route::put('/devices/{device}', [NetworkController::class, 'updateDevice'])->name('device.update');
Route::post('/devices/{device}/note', [NetworkController::class, 'addNote'])->name('device.note');
+
+ // Ereignisse
Route::post('/events/{event}/document', [NetworkController::class, 'documentEvent'])->name('document');
+
+ // Import
Route::get('/import', [NetworkController::class, 'showImport'])->name('import');
Route::post('/import', [NetworkController::class, 'import'])->name('import');
+
+ // Scan-Detail
Route::get('/scans/{scan}', [NetworkController::class, 'scan'])->name('scan');
});