From 6c86e172b960a7eab4425cd6e5b4aebdfe2d52e3 Mon Sep 17 00:00:00 2001 From: PTah Date: Thu, 28 May 2026 10:05:49 +1000 Subject: [PATCH] fix: SAC ingest UTF-8 JSON body for Cyrillic (1.2.8-SAC) Invoke-WebRequest now posts application/json; charset=utf-8 bytes Co-authored-by: Cursor --- Login_Monitor.ps1 | 2 +- Sac-Client.ps1 | 14 ++++++++++---- version.txt | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Login_Monitor.ps1 b/Login_Monitor.ps1 index b4bbe40..2f23c5c 100644 --- a/Login_Monitor.ps1 +++ b/Login_Monitor.ps1 @@ -80,7 +80,7 @@ $script:MonitorLoopInitialized = $false # строки ниже, если правки «мелкие» и вы не хотите менять отображаемую версию в логах). # Рекомендация: при значимых релизах меняйте и $ScriptVersion, и version.txt одинаково; при только # исправлениях на шаре — достаточно поднять patch в version.txt (например 1.3.0.1). -$ScriptVersion = "1.2.7-SAC" +$ScriptVersion = "1.2.8-SAC" # Логи (все под InstallRoot) $LogFile = Join-Path $script:InstallRoot "Logs\login_monitor.log" diff --git a/Sac-Client.ps1 b/Sac-Client.ps1 index 5fcb904..f519f23 100644 --- a/Sac-Client.ps1 +++ b/Sac-Client.ps1 @@ -4,9 +4,14 @@ .DESCRIPTION Dot-source после login_monitor.settings.ps1 и функции Write-Log. Ожидает: $UseSAC, $SacUrl, $SacApiKey, $ScriptVersion, $script:InstallRoot. - Release: 1.2.7-SAC (ingest HTTP 201/409/202). + Release: 1.2.8-SAC (ingest UTF-8 body for Cyrillic summary/details). #> +function Get-SacUtf8Bytes { + param([Parameter(Mandatory = $true)][string]$Text) + return (New-Object System.Text.UTF8Encoding $false).GetBytes($Text) +} + function Write-SacLog { param([string]$Message) if (Get-Command Write-Log -ErrorAction SilentlyContinue) { @@ -221,11 +226,12 @@ function Invoke-SacPostPayload { try { Invoke-SacTlsPrep $headers = @{ - Authorization = "Bearer $SacApiKey" - 'Content-Type' = 'application/json' + Authorization = "Bearer $SacApiKey" + 'Content-Type' = 'application/json; charset=utf-8' 'Idempotency-Key' = $eventId } - $resp = Invoke-WebRequest -Uri $ingest -Method Post -Headers $headers -Body $JsonBody -UseBasicParsing -TimeoutSec $timeout + $bodyBytes = Get-SacUtf8Bytes -Text $JsonBody + $resp = Invoke-WebRequest -Uri $ingest -Method Post -Headers $headers -Body $bodyBytes -UseBasicParsing -TimeoutSec $timeout if ($resp.StatusCode -in 201, 409, 202) { Remove-SacSpoolFile -EventId $eventId Reset-SacFailCount diff --git a/version.txt b/version.txt index 5d52c6a..65d1832 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.2.7-SAC +1.2.8-SAC