'servers', 'as' => 'proxmox.', 'middleware' => ['web', 'auth'], ], function () { Route::get('/', Index::class)->name('index'); Route::get('{server}', Overview::class)->name('server.overview'); Route::get('{server}/firewall', Firewall::class)->name('server.firewall'); Route::get('{server}/network', Network::class)->name('server.network'); Route::get('{server}/live-traffic', LiveTrafficController::class)->name('server.live-traffic'); Route::get('{server}/boot-order', BootOrder::class)->name('server.boot-order'); Route::get('{server}/system', System::class)->name('server.system'); Route::get('{server}/display', Display::class)->name('server.display'); Route::get('{server}/cloud-init', CloudInit::class)->name('server.cloud-init'); Route::get('{server}/subdomain', Subdomain::class)->name('server.subdomain'); Route::get('{server}/backups', BackupsIndex::class)->name('server.backups'); Route::get('{server}/statistics', Statistics::class)->name('server.statistics'); Route::get('{server}/storage', Storage::class)->name('server.storage'); Route::get('{server}/vnc', VNC::class)->name('server.vnc'); Route::get('{server}/xterm', XTerm::class)->name('server.xterm'); Route::get('{server}/help', Help::class)->name('server.help'); // Popup console routes (minimal layout for popup windows) Route::get('{server}/vnc-popup', function (Server $server) { if ((int) $server->user_id !== (int) auth()->id()) { abort(403); } if (!$server->node?->vnc_enabled) { abort(403, 'VNC is not enabled on this server node.'); } $proxmox = new Proxmox; return view('proxmox::vnc-popup', [ 'server' => $server, 'vnc' => $proxmox->vnc($server), ]); })->name('server.vnc-popup'); Route::get('{server}/xterm-popup', function (Server $server) { if ((int) $server->user_id !== (int) auth()->id()) { abort(403); } if (!$server->node?->vnc_enabled) { abort(403, 'Console access is not enabled on this server node.'); } $proxmox = new Proxmox; return view('proxmox::xterm-popup', [ 'server' => $server, 'xterm' => $proxmox->xterm($server), ]); })->name('server.xterm-popup'); });