25 lines
1.2 KiB
Python
25 lines
1.2 KiB
Python
# Определяем способ аутентификации.
|
|
# Cookie-вариант приоритетнее — Proxmox 8.x/9.x часто отказывает API-токену
|
|
# на WebSocket-эндпоинте vncwebsocket. Но если cookie-аутентификация не
|
|
# задана — используем API-токен.
|
|
use_cookie = bool(settings.pve_username and settings.pve_password)
|
|
headers: dict = {}
|
|
csrf_token: Optional[str] = None
|
|
auth = None
|
|
if use_cookie:
|
|
auth = await _get_pve_auth_cookie()
|
|
if auth:
|
|
cookie_header, csrf_token = auth
|
|
headers["Cookie"] = cookie_header
|
|
if csrf_token:
|
|
headers["CSRFPreventionToken"] = csrf_token
|
|
auth_kind = "cookie"
|
|
else:
|
|
headers["Authorization"] = (
|
|
f"PVEAPIToken={settings.pve_token_name}={settings.pve_token_value}"
|
|
)
|
|
auth_kind = "api-token"
|
|
logger.warning(
|
|
"console_ws: cookie-аутентификация отключена или не настроена, "
|
|
"используем API-токен. Proxmox 8.x/9.x может его не принимать."
|
|
) |