Files
html/api/sentinel-agent-v2.3.ps1
2026-04-16 19:40:01 +02:00

48 lines
2.5 KiB
PowerShell

# WEVAL Sentinel v2.4 - Uses poll, PS5 compatible
$API = "https://weval-consulting.com/api/blade-api.php?k=BLADE2026"
$LOG = "C:\ProgramData\WEVAL\sentinel.log"
$myPid = $PID
Get-Process powershell -EA 0 | Where-Object { $_.Id -ne $myPid } | ForEach-Object {
try { Stop-Process -Id $_.Id -Force -EA 0; Write-Host "Killed: $($_.Id)" } catch {}
}
function Log($m) { Add-Content $LOG "$(Get-Date -f 'HH:mm:ss') $m" -EA 0 }
function Send-HB {
try {
$cpu = try{(Get-CimInstance Win32_Processor -EA 0).LoadPercentage}catch{0}
$os = Get-CimInstance Win32_OperatingSystem -EA 0
$ram = try{[math]::Round((1-$os.FreePhysicalMemory/$os.TotalVisibleMemorySize)*100)}catch{0}
$gb = try{[math]::Round($os.TotalVisibleMemorySize/1MB)}catch{16}
$up = (Get-Date)-$os.LastBootUpTime
$b = @{ts=(Get-Date -f o);hostname=$env:COMPUTERNAME;cpu="$cpu%";ram="$ram% (${gb}GB)";disk="?";uptime="$([math]::Floor($up.TotalDays))d$($up.Hours.ToString('D2'))h$($up.Minutes.ToString('D2'))m";user=$env:USERNAME;ip="?";agent_version="2.4"}|ConvertTo-Json
Invoke-RestMethod "$API&action=heartbeat" -Method POST -Body $b -ContentType "application/json" -TimeoutSec 10|Out-Null
} catch { Log "HB: $_" }
}
function Do-Task {
try {
$r = Invoke-RestMethod "$API&action=poll&agent=sentinel" -TimeoutSec 10
$tasks = if($r.task){@($r.task)}else{@()}
if (-not $tasks -or $tasks.Count -eq 0) { return }
$t = $tasks[0]
if (-not $t.id) { return }
$cmd = $t.command
if (-not $cmd) { $cmd = $t.cmd }
if (-not $cmd) { return }
Log "EXEC: $($t.id)"
Write-Host "Exec: $($t.id) - $($t.name)$($t.label)"
try {
$out = Invoke-Expression $cmd 2>&1 | Out-String
if ($out.Length -gt 4000) { $out = $out.Substring(0,4000) }
Invoke-RestMethod "$API&action=report&id=$($t.id)&status=done" -Method POST -Body (@{result=$out}|ConvertTo-Json -Depth 3) -ContentType "application/json" -TimeoutSec 15|Out-Null
Log "OK: $($t.id)"
Write-Host " OK"
} catch {
try{Invoke-RestMethod "$API&action=report&id=$($t.id)&status=failed" -Method POST -Body (@{result="$_"}|ConvertTo-Json) -ContentType "application/json" -TimeoutSec 10|Out-Null}catch{}
Log "FAIL: $($t.id) $_"
Write-Host " FAIL: $_"
}
} catch { Log "POLL: $_" }
}
Log "=== v2.4 ==="
Write-Host "WEVAL Sentinel v2.4 running..."
while($true){Send-HB;1..6|ForEach-Object{Do-Task;Start-Sleep 10}}