/dev/null | xargs -n1 basename | sort"); $s204_php = shell_exec("ls /var/www/html/*.php 2>/dev/null | xargs -n1 basename | sort"); $s95_ars = shell_exec("sudo ssh -p 49222 -o StrictHostKeyChecking=no -i /var/www/.ssh/wevads_key root@10.1.0.3 \"ls /opt/wevads-arsenal/public/*.html 2>/dev/null | xargs -n1 basename | sort\" 2>/dev/null"); $s95_wv = shell_exec("sudo ssh -p 49222 -o StrictHostKeyChecking=no -i /var/www/.ssh/wevads_key root@10.1.0.3 \"ls /var/www/html/*.html 2>/dev/null | xargs -n1 basename | sort\" 2>/dev/null"); $s204_html_arr = array_filter(explode("\n", trim($s204_html ?: ""))); $s204_php_arr = array_filter(explode("\n", trim($s204_php ?: ""))); $s95_ars_arr = array_filter(explode("\n", trim($s95_ars ?: ""))); $s95_wv_arr = array_filter(explode("\n", trim($s95_wv ?: ""))); $total = count($s204_html_arr) + count($s204_php_arr) + count($s95_ars_arr) + count($s95_wv_arr); // --- Categorisation auto par prefix/keyword --- function categorize($name) { $n = strtolower($name); if (preg_match('/^api[-_]|api\./', $n) || strpos($n, 'api') === 0) return 'API'; if (strpos($n, 'brain') !== false || strpos($n, 'hamid') !== false) return 'Brain/IA'; if (strpos($n, 'account') !== false || strpos($n, 'factory') !== false) return 'Accounts'; if (strpos($n, 'email') !== false || strpos($n, 'send') !== false || strpos($n, 'pmta') !== false || strpos($n, 'mta') !== false) return 'Email/Send'; if (strpos($n, 'scrap') !== false || strpos($n, 'scout') !== false || strpos($n, 'harvest') !== false) return 'Scraping'; if (strpos($n, 'dashboard') !== false || strpos($n, 'monitor') !== false || strpos($n, 'health') !== false) return 'Monitoring'; if (strpos($n, 'offer') !== false || strpos($n, 'affiliate') !== false || strpos($n, 'conversion') !== false) return 'Offers/Conv'; if (strpos($n, 'admin') !== false || strpos($n, 'config') !== false || strpos($n, 'setting') !== false) return 'Admin'; if (strpos($n, 'wevia') !== false) return 'WEVIA'; if (strpos($n, 'claude') !== false || strpos($n, 'opus') !== false) return 'Claude'; return 'Autres'; } $all_items = []; foreach ($s95_ars_arr as $f) $all_items[] = ['name'=>$f, 'server'=>'S95-Arsenal', 'url'=>'https://wevads.weval-consulting.com/'.$f, 'cat'=>categorize($f)]; foreach ($s95_wv_arr as $f) $all_items[] = ['name'=>$f, 'server'=>'S95-WEVADS', 'url'=>'https://wevads.weval-consulting.com/wv/'.$f, 'cat'=>categorize($f)]; foreach ($s204_html_arr as $f) $all_items[] = ['name'=>$f, 'server'=>'S204', 'url'=>'https://weval-consulting.com/'.$f, 'cat'=>categorize($f)]; foreach ($s204_php_arr as $f) $all_items[] = ['name'=>$f, 'server'=>'S204-PHP', 'url'=>'https://weval-consulting.com/'.$f, 'cat'=>categorize($f)]; // --- Stats --- $stats = ['S95-Arsenal'=>count($s95_ars_arr), 'S95-WEVADS'=>count($s95_wv_arr), 'S204'=>count($s204_html_arr), 'S204-PHP'=>count($s204_php_arr)]; $cat_stats = []; foreach ($all_items as $it) { $cat_stats[$it['cat']] = ($cat_stats[$it['cat']] ?? 0) + 1; } arsort($cat_stats); $items_json = json_encode($all_items, JSON_UNESCAPED_SLASHES); $cat_json = json_encode($cat_stats); $ts = date('Y-m-d H:i'); // --- HTML --- $html = <<