Files
Virtnet.bond/extensions/Servers/Proxmox/routes.php
Joseph.Rawlings f394483daa feat: Update Proxmox extension with various improvements and bug fixes
- Change listStates method to accept nullable integer for limit parameter.
- Modify TechnitiumDns class to return structured error messages on failure.
- Enhance VNC and xterm popup routes with user authorization checks.
- Update backups view to improve loading states and add unique keys for dynamic elements.
- Refactor cloud-init view to ensure proper data binding and improve user experience.
- Add wire:key attributes to various elements in views for better Livewire performance.
- Improve error handling and user feedback in the firewall view.
- Update server overview and statistics views to handle potential null values gracefully.
- Add new migration files to extend database schema with user-set icons and notes for Proxmox nodes.
2026-02-23 17:23:01 -05:00

74 lines
3.5 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Backups\Index as BackupsIndex;
use Paymenter\Extensions\Servers\Proxmox\Livewire\BootOrder;
use Paymenter\Extensions\Servers\Proxmox\Livewire\CloudInit;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Display;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Index;
use Paymenter\Extensions\Servers\Proxmox\Http\Controllers\LiveTrafficController;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Firewall;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Network;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Overview;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Storage;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Subdomain;
use Paymenter\Extensions\Servers\Proxmox\Livewire\System;
use Paymenter\Extensions\Servers\Proxmox\Livewire\VNC;
use Paymenter\Extensions\Servers\Proxmox\Livewire\XTerm;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Help;
use Paymenter\Extensions\Servers\Proxmox\Livewire\Statistics;
use Paymenter\Extensions\Servers\Proxmox\Models\Server;
use Paymenter\Extensions\Servers\Proxmox\Proxmox;
Route::group([
'prefix' => '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');
});