@php $router = $this->router; $state = $this->state(); $reading = $this->reading; $figures = $this->figures; @endphp {{ $router->router_name }} {{ __('All routers') }} @if ($flash)
{{ $flash }}
@endif {{-- Identity line: the facts you would read out on a support call. --}}
@if ($state === 'online') {{ __('Online') }} @elseif ($state === 'provisioning') {{ __('Provisioning') }} @else {{ __('Offline') }} @endif {{ $router->managementAddress() ?: '—' }} @if ($router->model) {{ $router->model }} @endif @if ($router->os_version) RouterOS {{ $router->os_version }}{{ $router->os_channel ? ' ('.$router->os_channel.')' : '' }} @endif @if ($figures['uptime']) {{ __('Up') }} {{ $figures['uptime'] }} @endif @if ($router->identity) {{ $router->identity }} @endif
@if (! $reading['ok'] && $reading['error'])
{{ __('Live readings unavailable: :why', ['why' => $reading['error']]) }} {{ __('The figures below come from our own records and are still accurate.') }}
@endif {{-- Numbers we can stand behind. Live readings are marked absent rather than shown as zero when the box is not answering. --}}
{{-- Recorded history. Every one of these reads router_metrics rather than the router: a box that is down cannot be asked how long it has been down. --}} @php $series = $this->series; $avail = $this->availability; @endphp
{{ __('History') }}
@foreach (\App\Livewire\Network\RouterShow::RANGES as $option) @endforeach
@if ($series['empty'])
{{ __('Nothing recorded in this window yet. router:poll-metrics writes a reading a minute; the charts fill in from its next sweep.') }}
@else
{{ __('Bandwidth') }}{{ __('Mbps') }}
{{ __('CPU, memory & disk') }}%
{{ __('Latency') }}{{ __('ms, ICMP round trip') }}
{{ __('Packet loss') }}%
@endif
{{ __('Reachability') }}
@if ($avail['known']) {{ $avail['uptime'] }}% @endif
@if (! $avail['known'])

{{ __('No sweeps recorded in this window.') }}

@else

{{ __('Answered :up of :total recorded sweeps. Availability is counted over sweeps that actually ran, not over wall-clock time — minutes nobody measured are not claimed as uptime.', [ 'up' => round($avail['uptime'] / 100 * $avail['samples']), 'total' => $avail['samples'], ]) }}

@forelse ($avail['incidents'] as $incident)
{{ $incident['from']->format('d M H:i') }} — {{ $incident['to']->format('H:i') }}
{{ trans_choice('Unreachable for :count sweep|Unreachable for :count sweeps', $incident['sweeps'], ['count' => $incident['sweeps']]) }}
@empty
{{ __('No incidents in this window.') }}
@endforelse @endif
{{ __('Connection') }}
{{ __('Tunnel address') }}
{{ $router->wg_address ?: '—' }}
{{ __('API port') }}
{{ $router->api_port ?: 8728 }}
{{ __('Username') }}
{{ $router->username ?: '—' }}
{{ __('Password') }}
@if ($revealPassword) {{ $router->password }} @else •••••••• @endif
{{ __('Winbox port') }}
{{ $router->winbox_port ? ':'.$router->winbox_port : '—' }}
@foreach (['winbox' => __('Winbox service'), 'www' => __('Web service'), 'api' => __('API service')] as $name => $label) @php $svc = $this->service($name); @endphp
{{ $label }}
@if ($svc === null) {{ __('not reported') }} @else {{ $svc['enabled'] ? __('enabled') : __('disabled') }} @if ($svc['port']) :{{ $svc['port'] }} @endif @endif
@endforeach
@if (($this->service('www')['enabled'] ?? false) === false)

{{ __('The web console needs this router\'s web service on, and the hub allowed through its firewall. Provisioning closes both by design.') }}

@endif
@php $health = $this->health; @endphp
{{ __('Health') }}
@if ($health) {{ $health['score'] }}/100 @endif
@if (! $health)

{{ __('No readings recorded yet, so there is no score to give. A number invented from no evidence would be worse than this blank.') }}

@else
@forelse ($health['reasons'] as $reason)
{{ $reason }}
@empty
{{ __('Nothing wrong in the recorded window.') }}
@endforelse @if ($health['as_of'])
{{ __('As of :when', ['when' => $health['as_of']->diffForHumans()]) }}
@endif @endif
{{ __('Services') }}
{{ __('PPPoE') }}
{{ $router->service_pppoe ? __('Selling') : __('Off') }} · {{ trans_choice(':count secret|:count secrets', $reading['ppp'], ['count' => $reading['ppp']]) }}
{{ __('Hotspot') }}
{{ $router->service_hotspot ? __('Selling') : __('Off') }} · {{ count($reading['hotspot']) }} {{ __('server(s)') }}
{{ __('Anti-sharing') }}
{{ $router->hotspot_anti_sharing ? __('Enabled') : __('Off') }}
{{ __('Subnet') }}
{{ $router->subnet ?: '—' }}
{{ __('Bridge ports') }}
{{ is_array($router->bridge_ports) && $router->bridge_ports ? count($router->bridge_ports).' '.__('ports') : '—' }}
{{ __('Walled garden') }}
{{ $reading['walled'] }} {{ __('entries') }}
{{ __('Provisioning') }}
{{ ucfirst($router->provision_status ?: __('not started')) }}
@foreach ($this->provisioning as $step)
{{ $step['label'] }}
@endforeach @if ($router->provisioned_at)
{{ __('Configured :when', ['when' => $router->provisioned_at->diffForHumans()]) }}
@endif
@if ($showDiagnosis) @endif
@push('scripts') @endpush