def get_vnc_ticket(guest_type: str, vmid: int, node: str = None) -> dict: """Запрашивает у Proxmox одноразовый тикет для VNC/websocket-консоли. Возвращаемый тикет привязан к origin (схема+хост+порт), через который был сделан запрос к Proxmox. В Proxmox 8.x+ нет параметра host= для vncproxy — тикет привязывается автоматически к тому origin, через который backend подключён к Proxmox (т.е. к PVE_HOST). """ node = node or settings.pve_node px = _client() endpoint = px.nodes(node).qemu(vmid) if guest_type == "vm" else px.nodes(node).lxc(vmid) result = endpoint.vncproxy.post(websocket=1) return { "ticket": result["ticket"], "port": result["port"], "node": node, "vmid": vmid, "guest_type": guest_type, "pve_host": settings.pve_host, }