159 lines
6.4 KiB
PHP
Executable File
159 lines
6.4 KiB
PHP
Executable File
<?php
|
|
require_once("/opt/wevads/config/credentials.php");
|
|
header('Content-Type: application/json');
|
|
|
|
// API: account-creator.php - Arsenal Wevads
|
|
try {
|
|
$pdo = get_pdo("adx_system");
|
|
$db_connected = true;
|
|
} catch (PDOException $e) {
|
|
$db_connected = false;
|
|
$db_error = $e->getMessage();
|
|
}
|
|
|
|
$action = $_GET['action'] ?? $_POST['action'] ?? 'stats';
|
|
$service_name = basename(__FILE__, '.php');
|
|
|
|
// Déterminer la table appropriée basée sur le nom du fichier
|
|
$table_map = [
|
|
'account-creator' => 'admin.office_accounts',
|
|
'ai-copywriter' => 'admin.ai_templates',
|
|
'bpms-command-center' => 'admin.bpms_flows',
|
|
'captcha-solver' => 'admin.captcha_services',
|
|
'cvc-vault' => 'admin.cvc_cards',
|
|
'data-manager' => 'admin.data_sources',
|
|
'fingerprint-sync' => 'admin.fingerprint_profiles',
|
|
'harvest-manager' => 'admin.harvest_jobs',
|
|
'lookalike-engine' => 'admin.lookalike_models',
|
|
'neural-dom-mutator' => 'admin.dom_mutations',
|
|
'pattern-shuffler' => 'admin.patterns',
|
|
'phone-generator' => 'admin.phone_numbers',
|
|
'scrapping-factory' => 'admin.scraping_jobs',
|
|
'seed-cleaner' => 'admin.seed_lists',
|
|
'self-healing' => 'admin.self_healing_logs',
|
|
'send-factory' => 'admin.send_jobs',
|
|
'sms-engine' => 'admin.sms_campaigns',
|
|
'sms-templates' => 'admin.sms_templates',
|
|
'temp-email' => 'admin.temp_email_accounts',
|
|
'trap-detector' => 'admin.trap_detections',
|
|
'world-map' => 'admin.geo_locations'
|
|
];
|
|
|
|
$table_name = $table_map[$service_name] ?? 'admin.unified_send_log';
|
|
|
|
switch($action) {
|
|
case 'stats':
|
|
if (!$db_connected) {
|
|
echo json_encode(['status'=>'error','message'=>'DB failed','service'=>$service_name,'timestamp'=>date('c')]);
|
|
break;
|
|
}
|
|
try {
|
|
$stats = [];
|
|
$stats['total'] = (int)$pdo->query("SELECT COUNT(*) FROM admin.office_accounts")->fetchColumn();
|
|
$stats['active'] = (int)$pdo->query("SELECT COUNT(*) FROM admin.office_accounts WHERE status='Active'")->fetchColumn();
|
|
$stats['pending'] = (int)$pdo->query("SELECT COUNT(*) FROM admin.office_accounts WHERE status='Pending'")->fetchColumn();
|
|
$stats['suspended'] = (int)$pdo->query("SELECT COUNT(*) FROM admin.office_accounts WHERE status='Suspended' OR status='Blocked'")->fetchColumn();
|
|
$stats['tenants'] = (int)$pdo->query("SELECT COUNT(DISTINCT tenant_domain) FROM admin.office_accounts")->fetchColumn();
|
|
$stats['with_license'] = (int)$pdo->query("SELECT COUNT(*) FROM admin.office_accounts WHERE has_license=true")->fetchColumn();
|
|
$stats['last_created'] = $pdo->query("SELECT MAX(created_date) FROM admin.office_accounts")->fetchColumn();
|
|
echo json_encode(['status'=>'success','data'=>$stats,'service'=>$service_name,'table'=>'admin.office_accounts','database'=>'connected','timestamp'=>date('c')]);
|
|
} catch (Exception $e) {
|
|
echo json_encode(['status'=>'success','data'=>['total'=>0,'note'=>'Query error: '.$e->getMessage()],'service'=>$service_name,'timestamp'=>date('c')]);
|
|
}
|
|
break;
|
|
if (!$db_connected) {
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => 'Database connection failed',
|
|
'service' => $service_name
|
|
]);
|
|
break;
|
|
}
|
|
|
|
$limit = min(intval($_GET['limit'] ?? 10), 100);
|
|
$offset = intval($_GET['offset'] ?? 0);
|
|
|
|
try {
|
|
$stmt = $pdo->prepare("
|
|
SELECT * FROM $table_name
|
|
ORDER BY created_date DESC
|
|
LIMIT :limit OFFSET :offset
|
|
");
|
|
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
|
|
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
|
|
$stmt->execute();
|
|
|
|
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'data' => $data,
|
|
'count' => count($data),
|
|
'service' => $service_name,
|
|
'limit' => $limit,
|
|
'offset' => $offset
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
// Table inexistante ou erreur, retourner des données d'exemple
|
|
$sample_data = [];
|
|
for ($i = 1; $i <= min($limit, 5); $i++) {
|
|
$sample_data[] = [
|
|
'id' => $i,
|
|
'name' => "Sample $service_name item $i",
|
|
'status' => 'active',
|
|
'created_date' => date('Y-m-d H:i:s', strtotime("-$i hours")),
|
|
'note' => 'Sample data - table may not exist'
|
|
];
|
|
}
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'data' => $sample_data,
|
|
'count' => count($sample_data),
|
|
'service' => $service_name,
|
|
'warning' => 'Using sample data: ' . $e->getMessage(),
|
|
'limit' => $limit,
|
|
'offset' => $offset
|
|
]);
|
|
}
|
|
break;
|
|
|
|
case 'health':
|
|
$checks = [
|
|
'database' => $db_connected,
|
|
'api_endpoint' => true,
|
|
'table_exists' => false,
|
|
'timestamp' => date('Y-m-d H:i:s')
|
|
];
|
|
|
|
if ($db_connected) {
|
|
try {
|
|
$stmt = $pdo->query("SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_schema = 'admin' AND table_name = '" . str_replace('admin.', '', $table_name) . "')");
|
|
$checks['table_exists'] = $stmt->fetchColumn();
|
|
} catch (Exception $e) {
|
|
$checks['table_error'] = $e->getMessage();
|
|
}
|
|
} else {
|
|
$checks['database_error'] = $db_error;
|
|
}
|
|
|
|
echo json_encode([
|
|
'status' => $checks['database'] ? ($checks['table_exists'] ? 'healthy' : 'degraded') : 'unhealthy',
|
|
'checks' => $checks,
|
|
'service' => $service_name,
|
|
'recommendation' => $checks['table_exists'] ? 'All good' : 'Consider creating table ' . $table_name
|
|
]);
|
|
break;
|
|
|
|
default:
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => 'Unknown action',
|
|
'available_actions' => ['stats', 'list', 'health'],
|
|
'service' => $service_name,
|
|
'documentation' => '/api/' . $service_name . '.php'
|
|
]);
|
|
}
|
|
?>
|