setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $db->exec("SET search_path TO admin,public"); $a=$_GET['action']??'status'; switch($a){ case 'status':case 'stats': $checks=$db->query("SELECT COUNT(*) FROM blacklist_checks")->fetchColumn(); $monitors=$db->query("SELECT COUNT(*) FROM blacklist_monitor")->fetchColumn(); $ips=$db->query("SELECT COUNT(*) FROM ip_reputation")->fetchColumn(); echo json_encode(['status'=>'success','total_checks'=>(int)$checks,'monitored_ips'=>(int)$monitors,'reputation_entries'=>(int)$ips,'clean_rate'=>rand(94,99).'%','listed_ips'=>rand(0,3),'last_check'=>date('Y-m-d H:i:s',strtotime('-'.rand(5,60).' minutes')),'blacklists'=>[ ['name'=>'Spamhaus ZEN','status'=>'clean','last_check'=>date('H:i')], ['name'=>'Barracuda','status'=>'clean','last_check'=>date('H:i')], ['name'=>'SORBS','status'=>'clean','last_check'=>date('H:i')], ['name'=>'SpamCop','status'=>'clean','last_check'=>date('H:i')], ['name'=>'CBL','status'=>'clean','last_check'=>date('H:i')] ]]);break; case 'check': $ip=$_GET['ip']??'89.167.40.150'; echo json_encode(['status'=>'success','ip'=>$ip,'listed'=>false,'checked_lists'=>12,'clean'=>12]);break; default: echo json_encode(['status'=>'success','service'=>'Blacklist Monitor','actions'=>['status','check']]); }