Files
html/api/wevia-security-fortress.php
opus d9dd9d7fff
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
auto-sync via WEVIA git_sync_all intent 2026-04-20T14:27:48+02:00
2026-04-20 14:27:48 +02:00

64 lines
2.9 KiB
PHP

<?php
// V88 hardened
@set_time_limit(30);
@ini_set("memory_limit", "128M");
header('Content-Type: application/json');
$action = $_GET['action'] ?? 'full';
$results = ['timestamp' => date('Y-m-d H:i:s'), 'agent' => 'security-fortress', 'checks' => []];
// === S204 PORTS ===
$s204_ports = [
['port'=>80,'name'=>'nginx HTTP'],['port'=>443,'name'=>'nginx HTTPS'],
['port'=>11434,'name'=>'Ollama'],['port'=>6333,'name'=>'Qdrant'],
['port'=>8888,'name'=>'SearXNG'],['port'=>9100,'name'=>'Authentik'],
['port'=>3900,'name'=>'ClawCode'],['port'=>4000,'name'=>'Workhorse'],
['port'=>4001,'name'=>'LiteLLM'],['port'=>3001,'name'=>'Uptime Kuma'],
['port'=>8065,'name'=>'Mattermost'],['port'=>3000,'name'=>'MiroFish'],
['port'=>5001,'name'=>'MiroFish API'],['port'=>2024,'name'=>'DeerFlow'],
];
foreach ($s204_ports as $p) {
$sock = @fsockopen('127.0.0.1', $p['port'], $errno, $errstr, 2);
$up = $sock ? true : false;
if ($sock) fclose($sock);
$results['checks'][] = ['server'=>'S204','port'=>$p['port'],'name'=>$p['name'],'status'=>$up?'UP':'DOWN'];
}
// === S95 PORTS (via Sentinel) ===
$s95_ports = [
['port'=>5890,'name'=>'Sentinel'],['port'=>5432,'name'=>'PostgreSQL'],
['port'=>25,'name'=>'PMTA'],['port'=>587,'name'=>'PMTA SMTP'],
['port'=>8010,'name'=>'KumoMTA'],['port'=>2525,'name'=>'Postfix'],
['port'=>5678,'name'=>'n8n'],['port'=>6333,'name'=>'Qdrant S95'],
['port'=>8222,'name'=>'Vaultwarden'],['port'=>6380,'name'=>'Redis'],
];
foreach ($s95_ports as $p) {
$sock = @fsockopen('10.1.0.3', $p['port'], $errno, $errstr, 2);
$up = $sock ? true : false;
if ($sock) fclose($sock);
$results['checks'][] = ['server'=>'S95','port'=>$p['port'],'name'=>$p['name'],'status'=>$up?'UP':'DOWN'];
}
// === S151 PORTS ===
$s151_check = @file_get_contents('http://151.80.235.110:11434/api/tags', false, stream_context_create(['http'=>['timeout'=>3]]));
$results['checks'][] = ['server'=>'S151','port'=>11434,'name'=>'Ollama S151','status'=>$s151_check?'UP':'DOWN'];
// === DOCKER CONTAINERS ===
$docker = trim(shell_exec("docker ps --format '{{.Names}}:{{.Status}}' 2>/dev/null"));
$containers = array_filter(explode("\n", $docker));
$results['docker'] = ['total' => count($containers), 'list' => []];
foreach ($containers as $c) {
$parts = explode(':', $c, 2);
$results['docker']['list'][] = ['name'=>$parts[0],'status'=>$parts[1]??'unknown'];
}
// === AUTH CHECK (Authentik) ===
$auth = @file_get_contents('https://auth.weval-consulting.com/', false, stream_context_create(['http'=>['timeout'=>3],'ssl'=>['verify_peer'=>false]]));
$results['auth'] = ['authentik' => $auth ? 'UP' : 'DOWN'];
// === SUMMARY ===
$up = count(array_filter($results['checks'], fn($c) => $c['status']==='UP'));
$down = count(array_filter($results['checks'], fn($c) => $c['status']==='DOWN'));
$results['summary'] = ['up'=>$up,'down'=>$down,'total'=>$up+$down,'docker'=>count($containers)];
echo json_encode($results, JSON_PRETTY_PRINT);