@extends('layouts.app') @section('title','Routers — BlueBando v3') @section('content')

Routers

Manage hotspot routers, poll status and metrics.
+ Add Router
@forelse($routers as $r) @php // STATUS $status = $r->last_status ?: $r->status ?: 'unknown'; $statusClass = match ($status) { 'online' => 'paid', 'offline' => 'failed', 'warning' => 'pending', default => 'pending', }; // CPU – prefer last_cpu, fallback to cpu_load $cpuText = $r->last_cpu ?? ($r->cpu_load !== null ? $r->cpu_load.'%' : null); // RAM – from total/free memory $memPercent = null; if ($r->total_memory && $r->free_memory !== null) { $memPercent = round(($r->total_memory - $r->free_memory) / $r->total_memory * 100); } // Uptime – prefer last_uptime, fallback to uptime_seconds if ($r->last_uptime) { $uptimeText = $r->last_uptime; } elseif ($r->uptime_seconds) { $uptimeText = gmdate('j\d H\h i\m s\s', $r->uptime_seconds); } else { $uptimeText = null; } // Updated – prefer last_checked_at, then last_seen, then updated_at $updatedTs = $r->last_checked_at ?? $r->last_seen ?? $r->updated_at; @endphp {{-- Name + model --}} {{-- Host --}} {{-- Status + latency --}} {{-- CPU --}} {{-- RAM --}} {{-- Uptime --}} {{-- VPN --}} {{-- Updated --}} {{-- Actions --}} @empty @endforelse
Name Host Status CPU RAM Uptime VPN Updated
{{ $r->name }}
{{ $r->last_model ?? $r->model ?? $r->board_name ?? '—' }}
{{ $r->host }} {{ strtoupper($status) }} @if($r->last_latency_ms !== null)
{{ $r->last_latency_ms }} ms
@endif
{{ $cpuText ?? '—' }} {{ $memPercent !== null ? $memPercent.'% used' : '—' }} {{ $uptimeText ?? '—' }} @php $vpn = \App\Models\VpnClient::where('router_id', $r->id)->latest()->first(); @endphp @if($vpn && $vpn->status === 'active')
{{ $r->vpn_ip ?? '—' }}
@else Create @endif
@if($updatedTs) {{ $updatedTs->diffForHumans() }} @else — @endif Open Edit
@csrf @method('DELETE')
No routers yet.
{{ $routers->withQueryString()->links() }}
@endsection