processConfigForm(); // Initialisation de l'affichage Html::header( PluginSiemWazuhConfig::getTypeName(1), $_SERVER['PHP_SELF'], 'tools', 'PluginSiemWazuhConfig' ); echo "
"; // Affichage des onglets de configuration $tabs = [ 'config' => __('Configuration', 'siem-wazuh'), 'mapping' => __('Asset Mapping', 'siem-wazuh'), 'notifications' => __('Notifications', 'siem-wazuh'), 'debug' => __('Debug & Logs', 'siem-wazuh') ]; $active_tab = $_GET['tab'] ?? 'config'; echo "
"; echo ""; echo "
"; echo "
"; switch ($active_tab) { case 'config': // Configuration générale $config->showConfigForm(); break; case 'mapping': // Configuration du mapping des assets echo "
"; echo "

" . __('Asset Mapping Configuration', 'siem-wazuh') . "

"; showMappingConfiguration($config); echo "
"; break; case 'notifications': // Configuration des notifications echo "
"; echo "

" . __('Notification Configuration', 'siem-wazuh') . "

"; showNotificationConfiguration($config); echo "
"; break; case 'debug': // Configuration de debug et logs echo "
"; echo "

" . __('Debug & Logs Configuration', 'siem-wazuh') . "

"; showDebugConfiguration($config); showRecentLogs(); echo "
"; break; } echo "
"; echo "
"; /** * Show mapping configuration */ function showMappingConfiguration($config) { echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
" . __('Asset Detection Rules', 'siem-wazuh') . "
" . __('Match computers by hostname', 'siem-wazuh') . ""; Dropdown::showYesNo("match_computers_hostname", $config->getConfiguration('match_computers_hostname', 1)); echo "" . __('Match network equipment by hostname', 'siem-wazuh') . ""; Dropdown::showYesNo("match_netequip_hostname", $config->getConfiguration('match_netequip_hostname', 1)); echo "
" . __('Match by IP address', 'siem-wazuh') . ""; Dropdown::showYesNo("match_by_ip", $config->getConfiguration('match_by_ip', 1)); echo "" . __('Case sensitive matching', 'siem-wazuh') . ""; Dropdown::showYesNo("case_sensitive_matching", $config->getConfiguration('case_sensitive_matching', 0)); echo "
" . __('Hostname patterns to ignore', 'siem-wazuh') . ""; echo ""; echo "
" . __('One pattern per line. Use * as wildcard.', 'siem-wazuh') . ""; echo "
"; echo ""; echo "
"; echo Html::closeForm(); // Test de correspondance echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
" . __('Test Asset Mapping', 'siem-wazuh') . "
" . __('Agent name or IP', 'siem-wazuh') . ""; echo ""; echo " "; echo "
"; echo "
"; } /** * Show notification configuration */ function showNotificationConfiguration($config) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
" . __('Email Notifications', 'siem-wazuh') . "
" . __('Enable email notifications', 'siem-wazuh') . ""; Dropdown::showYesNo("email_notifications", $config->getConfiguration('email_notifications', 1)); echo "" . __('Notification for critical alerts only', 'siem-wazuh') . ""; Dropdown::showYesNo("notify_critical_only", $config->getConfiguration('notify_critical_only', 0)); echo "
" . __('Default notification recipients', 'siem-wazuh') . ""; echo ""; echo "
" . __('Comma-separated email addresses', 'siem-wazuh') . ""; echo "
"; echo ""; echo "
"; echo Html::closeForm(); } /** * Show debug configuration */ function showDebugConfiguration($config) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
" . __('Debug Configuration', 'siem-wazuh') . "
" . __('Enable debug mode', 'siem-wazuh') . ""; Dropdown::showYesNo("debug_mode", $config->getConfiguration('debug_mode', 0)); echo "" . __('Log API requests', 'siem-wazuh') . ""; Dropdown::showYesNo("log_api_requests", $config->getConfiguration('log_api_requests', 0)); echo "
" . __('Log level', 'siem-wazuh') . ""; $log_levels = [ 'error' => __('Error only', 'siem-wazuh'), 'warning' => __('Warning and above', 'siem-wazuh'), 'info' => __('Info and above', 'siem-wazuh'), 'debug' => __('All messages', 'siem-wazuh') ]; Dropdown::showFromArray('log_level', $log_levels, [ 'value' => $config->getConfiguration('log_level', 'info') ]); echo "" . __('Keep logs for (days)', 'siem-wazuh') . ""; Dropdown::showNumber("log_retention_days", [ 'value' => $config->getConfiguration('log_retention_days', 30), 'min' => 1, 'max' => 365 ]); echo "
"; echo ""; echo ""; echo ""; echo "
"; echo Html::closeForm(); } /** * Show recent logs */ function showRecentLogs() { global $DB; echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; $iterator = $DB->request([ 'SELECT' => [ 'glpi_plugin_siem_wazuh_logs.*', 'glpi_plugin_siem_wazuh_servers.name AS server_name' ], 'FROM' => 'glpi_plugin_siem_wazuh_logs', 'LEFT JOIN' => [ 'glpi_plugin_siem_wazuh_servers' => [ 'ON' => [ 'glpi_plugin_siem_wazuh_logs' => 'wazuh_server_id', 'glpi_plugin_siem_wazuh_servers' => 'id' ] ] ], 'ORDER' => 'date_creation DESC', 'LIMIT' => 100 ]); if (count($iterator) == 0) { echo ""; echo ""; echo ""; } else { foreach ($iterator as $log) { $level_class = 'log-' . $log['level']; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } } echo "
" . __('Recent Logs', 'siem-wazuh') . " (100 dernières entrées)
" . __('Date') . "" . __('Level') . "" . __('Server') . "" . __('Message') . "
" . __('No logs found', 'siem-wazuh') . "
" . Html::convDateTime($log['date_creation']) . "" . ucfirst($log['level']) . "" . ($log['server_name'] ?: __('System', 'siem-wazuh')) . "" . Html::clean($log['message']) . "
"; } // JavaScript pour les fonctionnalités interactives echo ""; // CSS pour les logs et badges echo ""; Html::footer();