55 lines
1.6 KiB
PowerShell
55 lines
1.6 KiB
PowerShell
. (Join-Path $PSScriptRoot "Common.ps1")
|
|
|
|
$lockFile = Get-RalphStateFile -Name "inbox_daemon.lock.json"
|
|
$daemonStateFile = Get-RalphStateFile -Name "inbox_daemon_state.json"
|
|
|
|
if (-not (Test-Path $lockFile)) {
|
|
@{
|
|
stopped = $false
|
|
message = "No inbox daemon lock file found."
|
|
} | ConvertTo-Json -Depth 20
|
|
return
|
|
}
|
|
|
|
$lock = Read-JsonFile -Path $lockFile
|
|
$daemonPid = 0
|
|
try { $daemonPid = [int]$lock.pid } catch { $daemonPid = 0 }
|
|
|
|
if ($daemonPid -le 0) {
|
|
Remove-Item -LiteralPath $lockFile -Force -ErrorAction SilentlyContinue
|
|
@{
|
|
stopped = $false
|
|
message = "Lock file was invalid and has been removed."
|
|
} | ConvertTo-Json -Depth 20
|
|
return
|
|
}
|
|
|
|
$proc = Get-Process -Id $daemonPid -ErrorAction SilentlyContinue
|
|
if ($null -ne $proc) {
|
|
Stop-Process -Id $daemonPid -Force
|
|
}
|
|
|
|
Remove-Item -LiteralPath $lockFile -Force -ErrorAction SilentlyContinue
|
|
Write-JsonFile -Path $daemonStateFile -Object ([ordered]@{
|
|
pid = $daemonPid
|
|
status = "stopped"
|
|
message = "Inbox daemon stopped manually."
|
|
updated_at = (Get-Date).ToString("o")
|
|
})
|
|
|
|
Add-RalphEvent -RunId ("inbox-daemon-stop-" + (Get-Date -Format "yyyyMMdd-HHmmss")) -Stage "daemon" -Status "stopped" -Actor "stop" -Message "Inbox daemon stopped manually" -Data @{
|
|
pid = $daemonPid
|
|
}
|
|
Send-TelegramNotification `
|
|
-EventName "daemon_stopped" `
|
|
-Title "Ralph daemon stopped manually" `
|
|
-Message ("PID " + $daemonPid) `
|
|
-RunId ("inbox-daemon-stop-" + (Get-Date -Format "yyyyMMdd-HHmmss")) `
|
|
-Stage "daemon" `
|
|
-Status "stopped" | Out-Null
|
|
|
|
@{
|
|
stopped = $true
|
|
pid = $daemonPid
|
|
} | ConvertTo-Json -Depth 20
|