26 lines
2.4 KiB
PHP
Executable File
26 lines
2.4 KiB
PHP
Executable File
<?php
|
|
header('Content-Type: application/json');
|
|
$input=json_decode(file_get_contents('php://input'),true)?:($_POST?:$_GET);$action=$input['action']??'list';
|
|
try{$db=new PDO("pgsql:host=127.0.0.1;dbname=adx_system",'postgres','');$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);}
|
|
catch(Exception $e){die(json_encode(['error'=>$e->getMessage()]));}
|
|
$isp_map=['gmail.com'=>'GMAIL','outlook.com'=>'OUTLOOK','hotmail.com'=>'OUTLOOK','gmx.de'=>'GMX','t-online.de'=>'T-ONLINE','yahoo.com'=>'YAHOO','orange.fr'=>'ORANGE','free.fr'=>'FREE','ziggo.nl'=>'ZIGGO','web.de'=>'WEB.DE'];
|
|
switch($action){
|
|
case 'list': echo json_encode($db->query("SELECT * FROM admin.seed_addresses WHERE active=true ORDER BY isp")->fetchAll(PDO::FETCH_ASSOC)); break;
|
|
case 'add': $e=$input['email']??'';$d=strtolower(substr($e,strrpos($e,'@')+1));$isp=$isp_map[$d]??strtoupper(explode('.',$d)[0]);
|
|
$db->prepare("INSERT INTO admin.seed_addresses(email,isp)VALUES(?,?) ON CONFLICT DO NOTHING")->execute([$e,$isp]);
|
|
echo json_encode(['added'=>true,'email'=>$e,'isp'=>$isp]); break;
|
|
case 'test': $seeds=$db->query("SELECT * FROM admin.seed_addresses WHERE active=true")->fetchAll(PDO::FETCH_ASSOC);
|
|
if(empty($seeds)){echo json_encode(['error'=>'No seeds']);break;}
|
|
$results=[];foreach($seeds as $s){
|
|
$p=json_encode(['action'=>'send','to'=>$s['email'],'subject'=>'[SEED] '.date('Y-m-d H:i'),'html'=>'<html><body><p>Seed test '.date('c').'</p></body></html>','method'=>'auto']);
|
|
$ch=curl_init('http://127.0.0.1:5890/api/brain-unified-send.php');curl_setopt_array($ch,[CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$p,CURLOPT_HTTPHEADER=>['Content-Type: application/json'],CURLOPT_RETURNTRANSFER=>true,CURLOPT_TIMEOUT=>30]);
|
|
$r=json_decode(curl_exec($ch),true);curl_close($ch);$r['isp']=$s['isp'];$results[]=$r;
|
|
$db->prepare("UPDATE admin.seed_addresses SET last_test=NOW(),total_tests=total_tests+1 WHERE id=?")->execute([$s['id']]);
|
|
}
|
|
echo json_encode(['count'=>count($results),'results'=>$results]); break;
|
|
case 'report': $s=$db->query("SELECT email,isp,inbox_rate,total_tests,last_test FROM admin.seed_addresses WHERE active=true ORDER BY isp")->fetchAll(PDO::FETCH_ASSOC);
|
|
echo json_encode(['seeds'=>$s,'avg_inbox'=>count($s)>0?round(array_sum(array_column($s,'inbox_rate'))/count($s),1):0]); break;
|
|
default: echo json_encode(['actions'=>['list','add','test','report']]);
|
|
}
|
|
?>
|