Make Raven Muninn serve a real daemon

This commit is contained in:
Meta Vens 2026-06-19 23:48:35 +01:00
commit b70bd02ee5
3 changed files with 26 additions and 9 deletions

View file

@ -244,7 +244,7 @@ New-Item -ItemType Directory -Force -Path (Split-Path -Parent `$target) | Out-Nu
Get-CimInstance Win32_Process |
Where-Object { `$_.Name -ieq "muninn.exe" } |
ForEach-Object {
& taskkill.exe /PID `$_.ProcessId /T /F | Out-Null
& cmd.exe /c ("taskkill /PID {0} /T /F >nul 2>&1" -f `$_.ProcessId) | Out-Null
}
if (Test-Path -LiteralPath `$target) {

View file

@ -172,9 +172,25 @@ foreach (`$expectation in `$taskExpectations) {
throw "`$(`$expectation.Vbs) does not reference a PowerShell launcher"
}
}
`$process = Get-CimInstance Win32_Process |
Where-Object { `$_.Name -ieq "muninn.exe" -and `$_.CommandLine -like "*serve*" } |
Select-Object -First 1
`$servePidPath = Join-Path "$LogRoot" "muninn-serve.pid"
`$servePid = `$null
if (Test-Path -LiteralPath `$servePidPath) {
`$servePidText = (Get-Content -LiteralPath `$servePidPath -Raw).Trim()
if (`$servePidText -match '^\d+$') {
`$servePid = [int] `$servePidText
}
}
`$process = `$null
if (`$null -ne `$servePid) {
`$process = Get-CimInstance Win32_Process -Filter ("ProcessId = {0}" -f `$servePid) -ErrorAction SilentlyContinue |
Where-Object { `$_.Name -ieq "muninn.exe" -and `$_.CommandLine -like "*serve*" } |
Select-Object -First 1
}
if (`$null -eq `$process) {
`$process = Get-CimInstance Win32_Process |
Where-Object { `$_.Name -ieq "muninn.exe" -and `$_.CommandLine -like "*serve*" } |
Select-Object -First 1
}
if (`$null -eq `$process) {
throw "Muninn serve process is not running"
}
@ -209,10 +225,12 @@ if (-not (Test-Path -LiteralPath "$StorePath")) {
if (`$storeAgeSeconds -gt $MaxStoreAgeSeconds) {
throw "Muninn telemetry store is stale (`$([math]::Round(`$storeAgeSeconds))s old)"
}
`$servePidPath = Join-Path "$LogRoot" "muninn-serve.pid"
if (-not (Test-Path -LiteralPath `$servePidPath)) {
throw "Muninn serve PID file is missing at `$servePidPath"
}
if (`$null -ne `$servePid -and `$process.ProcessId -ne `$servePid) {
throw "Muninn serve PID file references `$servePid but live Muninn serve process is `$(`$process.ProcessId)"
}
"@
Invoke-RavenUploadedPowerShell -RavenHost $RavenHost -RemoteScriptContent $remoteScript -TempPrefix "odin-raven-muninn-health"

View file

@ -541,8 +541,7 @@ $servePsContent = New-HiddenNativeLauncherPowerShellContent `
-StdoutPath (Join-Path $LogRoot "muninn-serve.out.log") `
-StderrPath (Join-Path $LogRoot "muninn-serve.err.log") `
-PidPath (Join-Path $LogRoot "muninn-serve.pid") `
-DynamicArgumentsScript $serveDynamicArgumentsScript `
-WaitForExit
-DynamicArgumentsScript $serveDynamicArgumentsScript
$activatePsContent = New-HiddenNativeLauncherPowerShellContent `
-StorePath $ActivateStorePath `
@ -578,7 +577,7 @@ try {
$localVideoProofCmd = Join-Path $uploadRoot "muninn-raven-video-to-starfire-obs.cmd"
Set-AsciiFile -Path $localServePs -Content $servePsContent
Set-AsciiFile -Path $localServeVbs -Content (New-HiddenPowerShellVbsLauncherContent -PsPath $servePsPath -WaitForExit)
Set-AsciiFile -Path $localServeVbs -Content (New-HiddenPowerShellVbsLauncherContent -PsPath $servePsPath)
Set-AsciiFile -Path $localServeCmd -Content (New-WscriptCmdLauncherContent -WorkingDirectory $muninnDir -VbsPath $serveVbsPath)
Set-AsciiFile -Path $localActivatePs -Content $activatePsContent
Set-AsciiFile -Path $localActivateVbs -Content (New-HiddenPowerShellVbsLauncherContent -PsPath $activatePsPath)
@ -616,7 +615,7 @@ foreach (`$path in @(
Get-CimInstance Win32_Process |
Where-Object { `$_.Name -like "muninn*.exe" } |
ForEach-Object {
& taskkill.exe /PID `$_.ProcessId /T /F | Out-Null
& cmd.exe /c ("taskkill /PID {0} /T /F >nul 2>&1" -f `$_.ProcessId) | Out-Null
}
New-Item -ItemType Directory -Force -Path "$LogRoot" | Out-Null