import { NextResponse } from 'next/server'; import { getNodes, getVMs } from '@/lib/proxmox'; const PROXMOX_WEB_URL = process.env.PROXMOX_WEB_URL || process.env.PROXMOX_API_URL?.replace('/api2/json', ''); const PROXMOX_CONSOLE_TOKEN = process.env.PROXMOX_CONSOLE_TOKEN || process.env.PROXMOX_TOKEN_ID; /** @param {import('next').Request} _req */ export async function GET(_req) { try { const nodes = await getNodes(); const allVMs = []; for (const node of nodes) { try { const vms = await getVMs(node.name); allVMs.push( ...vms.map((vm) => ({ ...vm, node: node.name, consoleUrl: `${PROXMOX_WEB_URL}/?console=qemu&novnc=1&node=${encodeURIComponent(node.name)}&vmid=${vm.vmid}&token=${encodeURIComponent(PROXMOX_CONSOLE_TOKEN)}`, })), ); } catch { /* skip node */ } } return NextResponse.json({ data: allVMs, timestamp: Date.now() }); } catch (error) { return NextResponse.json({ error: error.message, data: null }, { status: 502 }); } }