diff --git a/backend/tests/test_ingest.py b/backend/tests/test_ingest.py index d3e8ba2..5da81b4 100644 --- a/backend/tests/test_ingest.py +++ b/backend/tests/test_ingest.py @@ -53,6 +53,23 @@ def test_ingest_duplicate_409(client, auth_headers): assert data["event_id"] == event_id +def test_ingest_rdp_lifecycle_201(client, auth_headers): + event_id = str(uuid.uuid4()) + payload = { + **VALID_EVENT, + "event_id": event_id, + "source": {"product": "rdp-login-monitor", "product_version": "1.2.11-SAC"}, + "host": {"hostname": "K6A-DC3", "os_family": "windows"}, + "type": "agent.lifecycle", + "title": "RDP login monitor started", + "summary": "Мониторинг запущен на K6A-DC3, версия 1.2.11-SAC", + "details": {"lifecycle": "started"}, + } + r = client.post("/api/v1/events", json=payload, headers=auth_headers) + assert r.status_code == 201 + assert r.json()["event_id"] == event_id + + def test_ingest_invalid_payload_422(client, auth_headers): r = client.post( "/api/v1/events", diff --git a/docs/agent-integration.md b/docs/agent-integration.md index 745e4a9..e82b58a 100644 --- a/docs/agent-integration.md +++ b/docs/agent-integration.md @@ -61,6 +61,8 @@ $SacSpoolDir = "D:\Soft\Logs\sac-spool" **HTTP 409 и spool (RDP):** в PowerShell `Invoke-WebRequest` часто **бросает исключение** на 409 (и иногда на 201), хотя событие уже в SAC. До **1.2.10-SAC** клиент считал это ошибкой и снова слал тот же `event_id` из spool каждые ~5 с (лог `WARN: SAC POST HTTP 409`). С **1.2.10-SAC** коды **201/409/202** обрабатываются как успех и файл spool удаляется. +**HTTP 422 на `agent.lifecycle` (RDP):** часто из‑за битого JSON с кириллицей в `summary` (`ConvertTo-Json` + неверная кодировка POST). С **1.2.11-SAC** — сериализация через `JavaScriptSerializer` (Unicode `\uXXXX`), в лог пишется тело ответа SAC (`schema_errors`). Файлы в `sac-spool/rejected/` после 422 можно удалить. + Только правки `Sac-Client.ps1` / `sac-client.sh`: для RDP достаточно поднять patch в `version.txt` (и при необходимости `$ScriptVersion`); для Linux `sac-client.sh` обновится по checksum даже без смены `SSH_MONITOR_VERSION`, но **рекомендуется** поднимать обе метки для логов. ### 1.5. Правила Problems v1 (SAC backend)