query($sql)->fetchAll(PDO::FETCH_COLUMN); echo json_encode(['success' => true, 'triggered' => count($accounts)]); break; case 'create_campaign': $stmt = $pdo->prepare("INSERT INTO admin.campaigns (name, isp, sponsor, offer, servers_count, region, status) VALUES (?, ?, ?, ?, ?, ?, 'pending') RETURNING id"); $stmt->execute([$input['name'], $input['isp'] ?? 'videotron', $input['sponsor'] ?? '', $input['offer'] ?? '', $input['servers_count'] ?? 5, $input['region'] ?? 'af-south-1']); echo json_encode(['success' => true, 'campaign_id' => $stmt->fetchColumn()]); break; case 'start_campaign': $pdo->exec("UPDATE admin.campaigns SET status = 'running', started_at = NOW() WHERE id = " . intval($input['campaign_id'])); echo json_encode(['success' => true]); break; case 'send_alert': $config = $pdo->query("SELECT * FROM admin.telegram_config WHERE is_active = true LIMIT 1")->fetch(PDO::FETCH_ASSOC); if ($config) { $msg = "🔔 {$input['title']}\n\n{$input['message']}"; $ch = curl_init("https://api.telegram.org/bot{$config['bot_token']}/sendMessage"); curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => ['chat_id' => $config['chat_id'], 'text' => $msg, 'parse_mode' => 'HTML']]); curl_exec($ch); curl_close($ch); } echo json_encode(['success' => true]); break; case 'check_inbox': $stmt = $pdo->prepare("SELECT * FROM admin.imap_checkers WHERE id = ?"); $stmt->execute([$input['checker_id']]); $acc = $stmt->fetch(PDO::FETCH_ASSOC); if ($acc) { $mailbox = "{" . $acc['imap_host'] . ":" . $acc['imap_port'] . "/imap/ssl/novalidate-cert}INBOX"; $imap = @imap_open($mailbox, $acc['email'], $acc['password'], 0, 1); if ($imap) { $info = imap_check($imap); $inbox = $info->Nmsgs ?? 0; imap_close($imap); $pdo->exec("UPDATE admin.imap_checkers SET inbox_count = $inbox, last_check = NOW() WHERE id = {$acc['id']}"); echo json_encode(['success' => true, 'inbox' => $inbox]); } else { echo json_encode(['success' => false, 'error' => imap_last_error()]); } } break; case 'get_stats': echo json_encode(['success' => true, 'stats' => [ 'campaigns_running' => $pdo->query("SELECT COUNT(*) FROM admin.campaigns WHERE status = 'running'")->fetchColumn(), 'warmup_active' => $pdo->query("SELECT COUNT(*) FROM admin.warmup_accounts WHERE status = 'active'")->fetchColumn(), 'pmta_queued' => $pdo->query("SELECT COALESCE(SUM(queued_emails), 0) FROM admin.pmta_servers")->fetchColumn(), ]]); break; default: echo json_encode(['success' => false, 'error' => 'Unknown action', 'available' => ['trigger_warmup', 'create_campaign', 'start_campaign', 'send_alert', 'check_inbox', 'get_stats']]); }