20 lines
1.4 KiB
Python
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 |