76 lines
9.7 KiB
PHP
Executable File
76 lines
9.7 KiB
PHP
Executable File
<?php
|
|
$pdo=new PDO("pgsql:host=localhost;dbname=adx_system","admin","admin123");
|
|
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
|
|
$pdo->exec("DROP TABLE IF EXISTS email_warmup CASCADE");
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS email_warmup(id SERIAL PRIMARY KEY,email VARCHAR(255),account_type VARCHAR(50),smtp_host VARCHAR(255),smtp_port INT DEFAULT 587,smtp_user VARCHAR(255),smtp_pass TEXT,daily_target INT DEFAULT 50,current_day INT DEFAULT 1,emails_sent_today INT DEFAULT 0,total_sent INT DEFAULT 0,status VARCHAR(50) DEFAULT 'active',schedule VARCHAR(50) DEFAULT 'moderate',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
|
|
$msg='';
|
|
if($_POST){
|
|
$act=$_POST['action']??'';
|
|
if($act=='add'){$pdo->prepare("INSERT INTO email_warmup(email,account_type,smtp_host,smtp_port,smtp_user,smtp_pass,daily_target,schedule) VALUES(?,?,?,?,?,?,?,?)")->execute([$_POST['email'],$_POST['type'],$_POST['smtp_host'],$_POST['smtp_port'],$_POST['smtp_user'],$_POST['smtp_pass'],$_POST['daily_target'],$_POST['schedule']]);$msg='Account added!';}
|
|
if($act=='pause'){$pdo->prepare("UPDATE email_warmup SET status='paused' WHERE id=?")->execute([$_POST['id']]);$msg='Paused!';}
|
|
if($act=='start'){$pdo->prepare("UPDATE email_warmup SET status='active' WHERE id=?")->execute([$_POST['id']]);$msg='Started!';}
|
|
if($act=='delete'){$pdo->prepare("DELETE FROM email_warmup WHERE id=?")->execute([$_POST['id']]);$msg='Deleted!';}
|
|
if($act=='reset'){$pdo->prepare("UPDATE email_warmup SET current_day=1,emails_sent_today=0,total_sent=0 WHERE id=?")->execute([$_POST['id']]);$msg='Reset!';}
|
|
}
|
|
$accounts=$pdo->query("SELECT * FROM email_warmup ORDER BY id DESC")->fetchAll(PDO::FETCH_ASSOC);
|
|
$total=count($accounts);$active=count(array_filter($accounts,fn($a)=>$a['status']=='active'));
|
|
$sent=array_sum(array_column($accounts,'emails_sent_today'));
|
|
?><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Email Warmup</title>
|
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
|
<style>*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui;background:#f0f4f8;min-height:100vh}.header{background:linear-gradient(135deg,#dc2626,#f97316);padding:20px;color:#fff}.container{max-width:1400px;margin:0 auto;padding:20px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:20px}.stat{background:#fff;border-radius:12px;padding:20px;text-align:center;box-shadow:0 2px 10px rgba(0,0,0,.05)}.stat i{font-size:24px;margin-bottom:10px}.stat.orange i{color:#f97316}.stat.green i{color:#10b981}.stat.blue i{color:#3b82f6}.stat.red i{color:#ef4444}.stat-val{font-size:28px;font-weight:700}.stat-lbl{color:#64748b;font-size:13px}.grid{display:grid;grid-template-columns:350px 1fr;gap:20px}.card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 10px rgba(0,0,0,.08);margin-bottom:20px}.card h3{margin-bottom:15px;display:flex;align-items:center;gap:10px}.form-group{margin-bottom:12px}.form-group label{display:block;font-size:12px;font-weight:600;margin-bottom:4px;color:#475569}.form-group input,.form-group select{width:100%;padding:10px;border:2px solid #e2e8f0;border-radius:8px}.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn{padding:10px 16px;border:none;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px}.btn-primary{background:linear-gradient(135deg,#dc2626,#f97316);color:#fff}.btn-success{background:#10b981;color:#fff}.btn-warning{background:#f59e0b;color:#fff}.btn-danger{background:#ef4444;color:#fff}.btn-secondary{background:#e2e8f0;color:#475569}.btn-sm{padding:6px 10px}table{width:100%;border-collapse:collapse}th,td{padding:12px;text-align:left;border-bottom:1px solid #f1f5f9}th{background:#f8fafc;font-size:11px;text-transform:uppercase;color:#64748b}.badge{padding:5px 12px;border-radius:20px;font-size:11px;font-weight:600}.badge-active{background:#d1fae5;color:#065f46}.badge-paused{background:#fef3c7;color:#92400e}.badge-gmail{background:#fee2e2;color:#dc2626}.badge-office365{background:#dbeafe;color:#1d4ed8}.progress{height:8px;background:#e2e8f0;border-radius:4px;overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,#f97316,#dc2626);border-radius:4px}.alert{padding:12px;border-radius:8px;margin-bottom:15px;background:#d1fae5;color:#065f46}.actions{display:flex;gap:4px}.schedule-card{background:#fef7f0;border:2px solid #fed7aa;border-radius:12px;padding:15px;margin-bottom:10px}.schedule-card h4{color:#c2410c}.schedule-card p{font-size:12px;color:#64748b}</style>
|
|
</head>
|
|
<body><div class="header" style="display:flex;justify-content:space-between;align-items:center"><div><h1><i class="fas fa-fire"></i> Email Warmup Tool</h1><p style="opacity:.8;margin-top:5px">Automated warmup for Office 365 & Gmail</p></div><div style="display:flex;gap:10px"><a href="warmup-dashboard.php" class="btn btn-secondary" style="background:rgba(255,255,255,0.2);color:white;text-decoration:none"><i class="fas fa-chart-bar"></i> Dashboard</a><button onclick="showHelp()" class="btn" style="background:rgba(255,255,255,0.2);color:white"><i class="fas fa-question-circle"></i> Aide</button></div></div>
|
|
<div class="container">
|
|
<?php if($msg):?><div class="alert"><?=$msg?></div><?php endif;?>
|
|
<div class="stats">
|
|
<div class="stat orange"><i class="fas fa-envelope"></i><div class="stat-val"><?=$total?></div><div class="stat-lbl">Total Accounts</div></div>
|
|
<div class="stat green"><i class="fas fa-play-circle"></i><div class="stat-val"><?=$active?></div><div class="stat-lbl">Active</div></div>
|
|
<div class="stat blue"><i class="fas fa-paper-plane"></i><div class="stat-val"><?=$sent?></div><div class="stat-lbl">Sent Today</div></div>
|
|
<div class="stat red"><i class="fas fa-pause-circle"></i><div class="stat-val"><?=$total-$active?></div><div class="stat-lbl">Paused</div></div>
|
|
</div>
|
|
<div class="grid">
|
|
<div>
|
|
<div class="card"><h3><i class="fas fa-plus" style="color:#f97316"></i> Add Account</h3>
|
|
<form method="POST"><input type="hidden" name="action" value="add">
|
|
<div class="form-group"><label>Email Address</label><input name="email" type="email" placeholder="account@domain.com" required></div>
|
|
<div class="form-group"><label>Account Type</label><select name="type"><option value="gmail">Gmail / Google Workspace</option><option value="office365">Office 365</option></select></div>
|
|
<div class="row">
|
|
<div class="form-group"><label>SMTP Host</label><input name="smtp_host" placeholder="smtp.gmail.com"></div>
|
|
<div class="form-group"><label>SMTP Port</label><input name="smtp_port" type="number" value="587"></div>
|
|
</div>
|
|
<div class="form-group"><label>SMTP User</label><input name="smtp_user" placeholder="username"></div>
|
|
<div class="form-group"><label>SMTP Password</label><input name="smtp_pass" type="password"></div>
|
|
<div class="row">
|
|
<div class="form-group"><label>Daily Target</label><input name="daily_target" type="number" value="50"></div>
|
|
<div class="form-group"><label>Schedule</label><select name="schedule"><option value="conservative">Conservative (6 weeks)</option><option value="moderate" selected>Moderate (4 weeks)</option><option value="aggressive">Aggressive (2 weeks)</option></select></div>
|
|
</div>
|
|
<button class="btn btn-primary" style="width:100%"><i class="fas fa-plus"></i> Add Account</button>
|
|
</form></div>
|
|
<div class="card"><h3><i class="fas fa-calendar" style="color:#f97316"></i> Schedules</h3>
|
|
<div class="schedule-card"><h4>Conservative</h4><p>6 weeks - 10→200 emails/day</p></div>
|
|
<div class="schedule-card"><h4>Moderate</h4><p>4 weeks - 20→400 emails/day</p></div>
|
|
<div class="schedule-card"><h4>Aggressive</h4><p>2 weeks - 50→1000 emails/day</p></div>
|
|
</div></div>
|
|
<div class="card"><h3><i class="fas fa-list" style="color:#f97316"></i> Warmup Accounts</h3>
|
|
<table><tr><th>Account</th><th>Type</th><th>Progress</th><th>Today</th><th>Status</th><th>Actions</th></tr>
|
|
<?php foreach($accounts as $a):$pct=min(100,($a['current_day']/30)*100);?>
|
|
<tr>
|
|
<td><strong><?=$a['email']?></strong><br><small style="color:#64748b">Day <?=$a['current_day']?> • <?=$a['schedule']?></small></td>
|
|
<td><span class="badge badge-<?=$a['account_type']?>"><?=ucfirst($a['account_type'])?></span></td>
|
|
<td style="min-width:120px"><div class="progress"><div class="progress-bar" style="width:<?=$pct?>%"></div></div><small style="color:#64748b"><?=round($pct)?>%</small></td>
|
|
<td><?=$a['emails_sent_today']?>/<?=$a['daily_target']?></td>
|
|
<td><span class="badge badge-<?=$a['status']?>"><?=ucfirst($a['status'])?></span></td>
|
|
<td class="actions">
|
|
<?php if($a['status']=='active'):?><form method="POST" style="display:inline"><input type="hidden" name="action" value="pause"><input type="hidden" name="id" value="<?=$a['id']?>"><button class="btn btn-warning btn-sm" title="Pause"><i class="fas fa-pause"></i></button></form>
|
|
<?php else:?><form method="POST" style="display:inline"><input type="hidden" name="action" value="start"><input type="hidden" name="id" value="<?=$a['id']?>"><button class="btn btn-success btn-sm" title="Start"><i class="fas fa-play"></i></button></form><?php endif;?>
|
|
<form method="POST" style="display:inline"><input type="hidden" name="action" value="reset"><input type="hidden" name="id" value="<?=$a['id']?>"><button class="btn btn-secondary btn-sm" title="Reset"><i class="fas fa-redo"></i></button></form>
|
|
<form method="POST" style="display:inline" onsubmit="return confirm('Delete?')"><input type="hidden" name="action" value="delete"><input type="hidden" name="id" value="<?=$a['id']?>"><button class="btn btn-danger btn-sm" title="Delete"><i class="fas fa-trash"></i></button></form>
|
|
</td></tr>
|
|
<?php endforeach;?>
|
|
<?php if(empty($accounts)):?><tr><td colspan="6" style="text-align:center;padding:40px;color:#999">No warmup accounts yet. Add one to get started!</td></tr><?php endif;?>
|
|
</table></div>
|
|
</div></div><?php include("includes/warmup-help-modal.php"); ?>
|
|
<?php include("includes/chatbot-widget.php"); ?>
|
|
|
|
</body></html>
|