setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $ispMapping = [ 'T-ONLINE' => ['T-ONLINE', 'TONLINE'], 'GMX' => ['GMX'], 'GMAIL' => ['GMAIL', 'GOOGLE'], 'OUTLOOK' => ['HOTMAIL', 'MICROSOFT', 'OUTLOOK'], 'HOTMAIL' => ['HOTMAIL', 'MICROSOFT'], 'ZIGGO' => ['ZIGGO'], 'ALICE' => ['ALICE', 'LIBERO'], 'VIDEOTRON' => ['VIDEOTRON'], 'SFR' => ['SFR'], 'ORANGE' => ['ORANGE'], 'YAHOO' => ['YAHOO'], 'FREENET' => ['FREENET'] ]; $configId = $argv[1] ?? null; if ($configId) { $config = $pdo->query("SELECT * FROM admin.brain_configs WHERE id = $configId")->fetch(PDO::FETCH_ASSOC); } else { $config = $pdo->query("SELECT c.* FROM admin.brain_configs c JOIN admin.brain_winners w ON w.config_id = c.id WHERE w.is_active = true ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC); } if (!$config) die("β Aucune config\n"); $ispTarget = strtoupper($config['isp_target']); echo "π§ͺ CONFIG #{$config['id']}: {$config['isp_target']} - {$config['send_method']}\n"; $seedIsps = $ispMapping[$ispTarget] ?? [$ispTarget]; $seedIspList = "'" . implode("','", $seedIsps) . "'"; $seed = $pdo->query("SELECT * FROM admin.brain_seeds WHERE UPPER(isp) IN ($seedIspList) AND password IS NOT NULL AND password != '' ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC); if (!$seed) $seed = $pdo->query("SELECT * FROM admin.brain_seeds WHERE password IS NOT NULL ORDER BY RANDOM() LIMIT 1")->fetch(PDO::FETCH_ASSOC); if (!$seed) die("β Aucun seed\n"); echo "π§ Seed: {$seed['email']} ({$seed['isp']})\n"; $domain = $config['domain_used'] ?: 'wevads.com'; $fromEmail = str_replace('[domain]', $domain, $config['from_email'] ?: "test@$domain"); $fromName = str_replace('[domain]', $domain, $config['from_name'] ?: 'Test'); $subject = 'Brain Test #' . rand(1000,9999) . ' - ' . date('H:i'); $returnPath = str_replace('[domain]', $domain, $config['return_path'] ?: "bounce@$domain"); $body = "
Test Config #{$config['id']} - {$config['isp_target']} - " . date('Y-m-d H:i:s') . "
"; $socket = @fsockopen('127.0.0.1', 25, $errno, $errstr, 10); if (!$socket) die("β PMTA fail\n"); fgets($socket); foreach(["EHLO $domain\r\n", "MAIL FROM:<$returnPath>\r\n", "RCPT TO:<{$seed['email']}>\r\n", "DATA\r\n"] as $cmd) { fwrite($socket, $cmd); fgets($socket); } $msg = "From: $fromName <$fromEmail>\r\nTo: {$seed['email']}\r\nSubject: $subject\r\nContent-Type: text/html\r\n\r\n$body\r\n.\r\n"; fwrite($socket, $msg); $response = fgets($socket); fwrite($socket, "QUIT\r\n"); fclose($socket); $success = strpos($response, '250') !== false; echo $success ? "β ENVOYΓ!\n" : "β FAIL: $response\n"; // Log sans foreign key $pdo->exec("INSERT INTO admin.brain_learning_log (event_type, data, lesson_learned, created_at) VALUES ('smart_test', '{\"config\":{$config['id']},\"seed\":{$seed['id']},\"status\":\"" . ($success ? 'sent' : 'failed') . "\"}', 'Test config {$config['id']} vers {$seed['isp']}', NOW())");