Files
Proxmox-VPS-Panel/backend/app/routers/console.py
T
2026-07-25 02:53:17 +03:00

20 lines
1.4 KiB
Python

safe_ticket = quote(ticket, safe="")
safe_port = quote(str(port), safe="")
upstream_url = (
f"wss://{fallback_host}/api2/json/nodes/{node}/{guest_path}/{vmid}/vncwebsocket"
f"?port={safe_port}&vncticket={safe_ticket}"
)
# Хост для заголовка Host в WebSocket-handshake. Proxmox проверяет,
# что origin тикета совпадает с origin запроса. Если backend подключается
# по внутреннему IP, но в сертификате Proxmox указан внешний DNS —
# можно в заголовке Host передать внешний DNS. Тогда Proxmox примет
# запрос как "пришедший с правильного origin".
pve_external_host = settings.pve_public_host.split(":")[0] if settings.pve_public_host else ""
if not pve_external_host:
# По умолчанию используем pve1.input.netcraze.pro, если в настройках
# backend-окружения не указан PVE_PUBLIC_HOST.
# Это эвристика: если запросы через внешний DNS не работают,
# можно задать PVE_PUBLIC_HOST=192.168.31.4 чтобы отключить подмену.
pve_external_host = ""
upstream_host_header = pve_external_host or pve_backend_host