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

214 lines
7.9 KiB
PHP
Executable File

<?php
/**
* DATA INJECTOR
* Import real data: emails, domains, offers, accounts
*/
header('Content-Type: application/json');
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123", [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
class DataInjector {
private $pdo;
public function __construct($pdo) { $this->pdo = $pdo; }
// Import Email List (CSV: email,first_name,last_name,country)
public function importEmails($csvData, $listName = 'imported') {
$lines = explode("\n", trim($csvData));
$imported = 0;
$duplicates = 0;
foreach ($lines as $line) {
$parts = str_getcsv($line);
if (count($parts) < 1 || !filter_var($parts[0], FILTER_VALIDATE_EMAIL)) continue;
try {
$this->pdo->prepare("INSERT INTO admin.data_profiles (email, first_name, last_name, country) VALUES (?, ?, ?, ?) ON CONFLICT (email) DO NOTHING")
->execute([
strtolower(trim($parts[0])),
$parts[1] ?? '',
$parts[2] ?? '',
$parts[3] ?? ''
]);
$imported++;
} catch (Exception $e) {
$duplicates++;
}
}
return ['success' => true, 'imported' => $imported, 'duplicates' => $duplicates];
}
// Import Domains
public function importDomains($domains, $pool = 'main') {
$imported = 0;
$domainList = is_array($domains) ? $domains : explode("\n", trim($domains));
foreach ($domainList as $domain) {
$domain = trim($domain);
if (empty($domain)) continue;
$this->pdo->prepare("INSERT INTO admin.rotation_domains (domain, pool, status) VALUES (?, ?, 'active') ON CONFLICT DO NOTHING")
->execute([$domain, $pool]);
$imported++;
}
return ['success' => true, 'imported' => $imported];
}
// Import IPs
public function importIPs($ips, $provider = 'huawei') {
$imported = 0;
$ipList = is_array($ips) ? $ips : explode("\n", trim($ips));
foreach ($ipList as $ip) {
$ip = trim($ip);
if (!filter_var($ip, FILTER_VALIDATE_IP)) continue;
$this->pdo->prepare("INSERT INTO admin.ip_pool (ip_address, provider, status) VALUES (?, ?, 'active') ON CONFLICT DO NOTHING")
->execute([$ip, $provider]);
$imported++;
}
return ['success' => true, 'imported' => $imported];
}
// Import O365 Accounts (CSV: email,password,tenant)
public function importO365($csvData) {
$lines = explode("\n", trim($csvData));
$imported = 0;
foreach ($lines as $line) {
$parts = str_getcsv($line);
if (count($parts) < 2) continue;
$this->pdo->prepare("INSERT INTO admin.o365_accounts (email, password, tenant_id, status) VALUES (?, ?, ?, 'active') ON CONFLICT DO NOTHING")
->execute([$parts[0], $parts[1], $parts[2] ?? '']);
$imported++;
}
return ['success' => true, 'imported' => $imported];
}
// Import Offers
public function importOffer($data) {
$this->pdo->prepare("INSERT INTO admin.offers (external_id, name, vertical, payout, geo_targets, tracking_url, preview_url, status) VALUES (?, ?, ?, ?, ?, ?, ?, 'active')")
->execute([
$data['offer_id'] ?? uniqid(),
$data['name'],
$data['vertical'] ?? 'general',
$data['payout'] ?? 0,
json_encode($data['geo'] ?? []),
$data['tracking_url'] ?? '',
$data['preview_url'] ?? ''
]);
return ['success' => true, 'id' => $this->pdo->lastInsertId()];
}
// Import PMTA Servers
public function importServers($servers) {
$imported = 0;
foreach ($servers as $server) {
$this->pdo->prepare("INSERT INTO admin.server_monitor (ip_address, provider, cloud_instance_id, status, cost_per_hour) VALUES (?, ?, ?, 'active', ?) ON CONFLICT DO NOTHING")
->execute([
$server['ip'],
$server['provider'] ?? 'huawei',
$server['instance_id'] ?? '',
$server['cost'] ?? 0.05
]);
$imported++;
}
return ['success' => true, 'imported' => $imported];
}
// Import Seed Inboxes
public function importSeeds($csvData) {
$lines = explode("\n", trim($csvData));
$imported = 0;
foreach ($lines as $line) {
$parts = str_getcsv($line);
if (count($parts) < 4) continue;
$this->pdo->prepare("INSERT INTO admin.seed_inboxes (email, password, imap_host, isp, is_active) VALUES (?, ?, ?, ?, true) ON CONFLICT DO NOTHING")
->execute([$parts[0], $parts[1], $parts[2], $parts[3]]);
$imported++;
}
return ['success' => true, 'imported' => $imported];
}
// Bulk Import from JSON
public function bulkImport($jsonData) {
$data = is_array($jsonData) ? $jsonData : json_decode($jsonData, true);
$results = [];
if (!empty($data['emails'])) {
$results['emails'] = $this->importEmails(implode("\n", $data['emails']));
}
if (!empty($data['domains'])) {
$results['domains'] = $this->importDomains($data['domains']);
}
if (!empty($data['ips'])) {
$results['ips'] = $this->importIPs($data['ips']);
}
if (!empty($data['offers'])) {
foreach ($data['offers'] as $offer) {
$results['offers'][] = $this->importOffer($offer);
}
}
return $results;
}
public function getStats() {
return [
'emails' => $this->pdo->query("SELECT COUNT(*) FROM admin.data_profiles")->fetchColumn(),
'domains' => $this->pdo->query("SELECT COUNT(*) FROM admin.rotation_domains")->fetchColumn(),
'ips' => $this->pdo->query("SELECT COUNT(*) FROM admin.ip_pool")->fetchColumn(),
'o365_accounts' => $this->pdo->query("SELECT COUNT(*) FROM admin.o365_accounts")->fetchColumn(),
'offers' => $this->pdo->query("SELECT COUNT(*) FROM admin.offers")->fetchColumn(),
'servers' => $this->pdo->query("SELECT COUNT(*) FROM admin.server_monitor")->fetchColumn(),
'seeds' => $this->pdo->query("SELECT COUNT(*) FROM admin.seed_inboxes")->fetchColumn()
];
}
}
$injector = new DataInjector($pdo);
$action = $_POST['action'] ?? $_GET['action'] ?? '';
switch ($action) {
case 'emails':
echo json_encode($injector->importEmails($_POST['data'], $_POST['list_name'] ?? 'imported'));
break;
case 'domains':
echo json_encode($injector->importDomains($_POST['data'], $_POST['pool'] ?? 'main'));
break;
case 'ips':
echo json_encode($injector->importIPs($_POST['data'], $_POST['provider'] ?? 'huawei'));
break;
case 'o365':
echo json_encode($injector->importO365($_POST['data']));
break;
case 'offer':
echo json_encode($injector->importOffer($_POST));
break;
case 'servers':
echo json_encode($injector->importServers(json_decode($_POST['data'], true)));
break;
case 'seeds':
echo json_encode($injector->importSeeds($_POST['data']));
break;
case 'bulk':
echo json_encode($injector->bulkImport($_POST['data']));
break;
case 'stats':
echo json_encode($injector->getStats());
break;
default:
echo json_encode(['name' => 'Data Injector', 'actions' => ['emails','domains','ips','o365','offer','servers','seeds','bulk','stats']]);
}