@extends('layouts.app') @section('title', 'Scan: '.$scan->name) @section('actions') @if ($scan->status->value === 'draft' || $scan->status->value === 'approved') @can('start', $scan)
@csrf
@endcan @endif @if ($scan->isCancellable()) @can('abort', $scan)
@csrf
@endcan @endif @can(\App\Enums\Permission::REPORT_CREATE) Bericht erstellen @endcan @endsection @section('content')
Status
{{ $scan->status->label() }}
{{ $scan->profile->name }}
Fortschritt
{{ (int) $scan->progress_percent }} %
Laufzeit
{{ $scan->runtimeSeconds() !== null ? gmdate('H:i:s', $scan->runtimeSeconds()) : '–' }}
Limit {{ gmdate('H:i:s', (int) $scan->max_runtime_seconds) }}
Ziele
{{ $scan->targets_completed }} / {{ $scan->targets_total }}
{{ $scan->open_ports_found }} offene Ports, {{ $scan->findings_count }} Findings
@if ($scan->abort_reason)
{{ $scan->status->label() }}: {{ $scan->abort_reason }} @if ($scan->post_observation_until)
Nachbeobachtung bis {{ $scan->post_observation_until->format('H:i:s') }}. Am Zielgerät wurden keinerlei Massnahmen ausgeführt. @endif
@endif
{{-- --------------------------------------------------- Zusammenfassung --}}

Zusammenfassung

Kunde / Projekt
{{ $scan->project->customer->name }} · {{ $scan->project->name }}
Scanprofil
{{ $scan->profile->name }} ({{ $scan->profile->intensityLabel() }})
Geplante Intensität
T{{ data_get($scan->effective_options, 'options.timing', '–') }}, {{ data_get($scan->effective_options, 'options.min_rate', '–') }}–{{ data_get($scan->effective_options, 'options.max_rate', '–') }} Pakete/s, Parallelität {{ data_get($scan->effective_options, 'options.max_parallelism', '–') }}
Erwartete Dauer
{{ $scan->profile->estimated_duration_seconds ? gmdate('H:i:s', $scan->profile->estimated_duration_seconds) : 'unbestimmt' }}
Ausführender Benutzer
{{ $scan->creator?->name }}
Genehmigt durch
{{ $scan->approver?->name ?? 'keine Freigabe erforderlich' }}
Wartungsfenster
@if ($scan->maintenanceWindow) {{ $scan->maintenanceWindow->name }} ({{ $scan->maintenanceWindow->starts_at->format('d.m. H:i') }}–{{ $scan->maintenanceWindow->ends_at->format('H:i') }}) @else – @endif
Autorisierung
{{ $scan->authorization_reference ?: '–' }} bestätigt
Profil-Prüfsumme
{{ substr($scan->profile_snapshot_hash, 0, 16) }}…
{{-- ------------------------------------------------ Schutzmechanismen --}}

Aktive Schutzmechanismen und Abbruchgrenzen

@foreach ($riskSummary['abort_thresholds'] as $key => $value)
{{ $key }}
{{ $value ?? '–' }}
@endforeach

Bei Überschreitung wird der Nmap-Prozess kontrolliert beendet (SIGTERM, danach SIGKILL), ein laufender Nessus-Scan gestoppt und die Nachbeobachtung fortgesetzt. Es erfolgen keine Neustarts oder Konfigurationsänderungen am Zielgerät.

{{-- ------------------------------------------------------------- Ziele --}}

Ziele

@foreach ($scan->targets as $target) @endforeach
GerätIPStatusAllowlistStartEnde
{{ $target->hostname ?: '–' }} {{ $target->ip_address }} {{ $target->status }} {{ $target->allowlistEntry?->cidr ?? '–' }} {{ $target->started_at?->format('H:i:s') ?? '–' }} {{ $target->finished_at?->format('H:i:s') ?? '–' }}
{{-- ----------------------------------------------- Zeitachse und Verlauf --}}

Zeitachse

    @foreach ($events as $event)
  • {{ $event->occurred_at->format('H:i:s') }}{{ $event->message }}
  • @endforeach

Gesundheitswerte

@forelse ($chartData as $series)

{{ $series['hostname'] }}

Blau: CPU (%) · Bernstein: Latenz (ms) · Rot: Paketverlust (%)

@empty
Noch keine Messwerte erfasst.
@endforelse
{{-- ------------------------------------------------------------ Ergebnisse --}} @if ($results->isNotEmpty())

Erkannte Ports und Dienste

@foreach ($results as $result) @foreach ($result->ports as $port) @endforeach @endforeach
ZielPortProtokollStatusDienstProdukt / VersionCPE
{{ $result->ip_address }} {{ $port->port }} {{ $port->protocol }} {{ $port->state }} {{ $port->service_name ?: '–' }} {{ trim($port->product.' '.$port->version) ?: '–' }} {{ implode(', ', (array) ($port->cpe ?? [])) ?: '–' }}
@foreach ($results as $result)

{{ $result->ip_address }}: {{ $result->commandLine() }} (Exit {{ $result->exit_code }}, {{ number_format((float) $result->duration_seconds, 1) }} s, SHA-256 {{ substr((string) $result->xml_sha256, 0, 16) }}…)

@endforeach
@endif @if ($scan->stages->isNotEmpty())

Laststufen

@foreach ($scan->stages as $stage) @endforeach
#StufeParameterStatusFreigabeDauer
{{ $stage->sequence }} {{ $stage->label }} {{ $stage->parameters ? json_encode($stage->parameters) : '– nur Beobachtung –' }} {{ $stage->status }} {{ $stage->approved_at?->format('d.m. H:i') ?? ($stage->requires_approval ? 'erforderlich' : '–') }} {{ $stage->planned_duration_seconds }} s
@endif @endsection @push('scripts') @endpush