diff --git a/samy.ps1 b/samy.ps1 index a98b4af..c6b8892 100644 --- a/samy.ps1 +++ b/samy.ps1 @@ -1826,13 +1826,29 @@ function Invoke-GetPrinters { return } - $password = $body.password - if (-not $password) { + # Read JSON body: { "password": "..." } + $rawBody = (New-Object IO.StreamReader $Context.Request.InputStream).ReadToEnd() + if (-not $rawBody) { $Context.Response.StatusCode = 400 - Send-Text $Context 'Password is required.' + Send-Text $Context 'Missing request body.' return } + try { + $body = $rawBody | ConvertFrom-Json + } catch { + $Context.Response.StatusCode = 400 + Send-Text $Context 'Invalid JSON body.' + return + } + + # Allow blank password (IP allowlist handled server-side) + $password = [string]$body.password # $null -> '' + if ($password -eq '') { + Write-LogHybrid "Printer password is blank; relying on allowlisted IP (server-side)." Info Printers -LogToEvent + } + + $uri = 'https://bananas.svstools.ca/getprinters' Write-LogHybrid "Fetching printers from $uri" Info Printers -LogToEvent