Files
html/api/wevia-supervisor.php
2026-04-12 22:57:03 +02:00

55 lines
2.2 KiB
PHP

<?php
// WEVIA Supervisor v2 — every 5 min via cron
$log = "/var/log/wevia-supervisor.log";
$ts = date("Y-m-d H:i:s");
function master($msg) {
$ch = curl_init("https://weval-consulting.com/api/wevia-master-api.php");
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>1, CURLOPT_POST=>1,
CURLOPT_POSTFIELDS=>json_encode(["message"=>$msg]),
CURLOPT_HTTPHEADER=>["Content-Type: application/json"],
CURLOPT_TIMEOUT=>20, CURLOPT_SSL_VERIFYPEER=>0]);
$r = json_decode(curl_exec($ch), true);
return $r["content"] ?? $r["response"] ?? "ERR";
}
$r = [];
// 1. Reconciliation
$rc = master("reconciliation");
$r["reconcile"] = (strpos($rc,"153/153")!==false||strpos($rc,"WAVE")!==false) ? "OK" : substr($rc,0,40);
// 2. NonReg
$nrc = master("nonreg run");
$r["nonreg"] = substr($nrc, 0, 30);
// 3. L99
$nr = json_decode(@file_get_contents("/var/www/html/api/l99-state.json"), true);
$r["l99"] = ($nr["pass"]??0) . "/" . ($nr["total"]??0);
// 4. Infra
$r["docker"] = intval(trim(shell_exec("docker ps -q|wc -l")));
$r["disk"] = intval(trim(shell_exec("df / --output=pcent|tail -1|tr -d ' %'")));
$r["hubs"] = intval(trim(shell_exec("ls /var/www/html/*-hub.html 2>/dev/null|wc -l")));
// 5. Git auto-push
$dirty = intval(trim(shell_exec("cd /var/www/html && git status --porcelain|wc -l")));
$r["dirty"] = $dirty;
if ($dirty > 0) {
shell_exec("cd /var/www/html && git add -A && git commit -m 'supervisor-".date("Hi")."' 2>/dev/null");
shell_exec("cd /var/www/html && git push origin main 2>/dev/null && git push github main 2>/dev/null");
$r["pushed"] = true;
}
// 6. Auto-heal
$alerts = [];
if ($r["disk"] > 88) { shell_exec("find /tmp -name 'playwright*' -mmin +30 -exec rm -rf {} + 2>/dev/null"); $alerts[] = "DISK_CLEAN"; }
if ($r["docker"] < 15) { master("auto heal"); $alerts[] = "DOCKER_HEAL"; }
$r["alerts"] = $alerts ?: ["CLEAR"];
// Log + state
$line = "$ts | L99:{$r['l99']} | NR:{$r['nonreg']} | D:{$r['docker']} | disk:{$r['disk']}% | hubs:{$r['hubs']} | " . implode(",", $r["alerts"]);
file_put_contents($log, $line . "\n", FILE_APPEND);
file_put_contents("/var/www/html/api/supervisor-state.json", json_encode(["ts"=>$ts,"r"=>$r], JSON_PRETTY_PRINT));
echo $line;