Files
wevads-platform/scripts/api_seed-manager.php
2026-02-26 04:53:11 +01:00

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']]);
}
?>