{{ __('Sessions') }}

{{ __('Network accounting records · sorted by recency') }}

{{ trans_choice(':count record|:count records', $this->connections->count(), ['count' => $this->connections->count()]) }}
@forelse ($this->connections as $c) @empty @endforelse
{{ __('Started') }} {{ __('Duration') }} {{ __('Down · up') }} {{ __('Device · IP') }} {{ __('Router') }} {{ __('Ended') }}
{{ $c->started_at?->format('M j, Y, h:i A') ?: '—' }} {{ $c->started_at?->format('h:i A') }} @if ($c->isLive()) {{ __('Live') }} · {{ $c->started_at?->diffForHumans(null, true, true) }} @else {{ $c->duration()?->forHumans(['short' => true, 'parts' => 2]) ?: '—' }} @endif {{ bytes_human($c->bytes_out) }} · {{ bytes_human($c->bytes_in) }} {{ bytes_human($c->total()) }} {{ __('total') }} {{ $c->mac_address ?: '—' }} {{ $c->ip_address }} {{ $c->router?->router_name ?: '—' }} {{ $c->router?->managementAddress() }} @if ($c->ended_at) {{ $c->ended_at->format('h:i A') }} {{-- Inferred, not reported: RouterOS does not say why somebody left. --}} {{ $c->terminate_cause ?: '—' }} @else @endif @if ($c->isLive()) @php // A row read live off the router has not been // written by the poller yet, so it has no id. // Passing null tells the action to act on // whatever session is currently up. $rowId = $c->exists ? $c->id : 'null'; @endphp @endif
@if ($search !== '') {{ __('Nothing matches that.') }} @else {{ __('No sessions recorded. Accounting starts collecting as soon as a device connects.') }} @endif