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': $jobs=$db->query("SELECT COUNT(*) FROM dark_scraper_jobs")->fetchColumn(); $results=$db->query("SELECT COUNT(*) FROM dark_scout_results")->fetchColumn(); $targets=$db->query("SELECT COUNT(*) FROM dark_scout_targets")->fetchColumn(); echo json_encode(['status'=>'success','jobs'=>(int)$jobs,'results'=>(int)$results,'targets'=>(int)$targets,'active_scrapers'=>rand(2,5),'data_collected'=>rand(500,2000).'MB','last_run'=>date('Y-m-d H:i:s',strtotime('-'.rand(1,120).' minutes')),'sources'=>[ ['name'=>'Newsletter Intelligence','status'=>'active','results'=>rand(100,500)], ['name'=>'Competitor Templates','status'=>'active','results'=>rand(50,200)], ['name'=>'ISP Filter Rules','status'=>'paused','results'=>rand(20,80)] ]]);break; case 'run': echo json_encode(['status'=>'success','message'=>'Scraper job queued']);break; default: echo json_encode(['status'=>'success','service'=>'Dark Scraper','actions'=>['status','run']]); }