true, CURLOPT_TIMEOUT=>$t, CURLOPT_SSL_VERIFYPEER=>false]); $o = curl_exec($ch); curl_close($ch); $d = @json_decode($o, true); return $d['output'] ?? ''; } $period = $_GET['period'] ?? 'today'; $bouncelog = '/var/log/pmta/bounce.csv'; // Count bounces today $count = sc("test -f $bouncelog && grep -c \"$(date +%Y-%m-%d)\" $bouncelog 2>/dev/null || echo 0"); $hard = sc("test -f $bouncelog && grep \"$(date +%Y-%m-%d)\" $bouncelog 2>/dev/null | grep -c 'hard' || echo 0"); $soft = sc("test -f $bouncelog && grep \"$(date +%Y-%m-%d)\" $bouncelog 2>/dev/null | grep -c 'soft' || echo 0"); $top = sc("test -f $bouncelog && grep \"$(date +%Y-%m-%d)\" $bouncelog 2>/dev/null | awk -F, '{print \$4}' | sort | uniq -c | sort -rn | head -5 || echo 'no data'"); $result = [ 'intent' => 'scan_email_bounces', 'status' => 'OK', 'period' => $period, 'counts' => [ 'total' => (int)trim($count), 'hard' => (int)trim($hard), 'soft' => (int)trim($soft), ], 'top_domains' => trim($top), 'source' => "S95 PMTA $bouncelog via Sentinel", 'ts' => date('c'), ]; echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);