"ANY(SELECT id_agente FROM tagente WHERE id_grupo = " . $group);
db_process_sql_update('tagente_modulo', array("flag" => 1), $where);
}
else {
db_pandora_audit("ACL Violation", "Trying to set flag for groups");
require ("general/noaccess.php");
exit;
}
}
if ($config["realtimestats"] == 0) {
$updated_info = __('Last update'). " : ". ui_print_timestamp (db_get_sql ("SELECT min(utimestamp) FROM tgroup_stat"), true);
}
else {
// $updated_info = __("Updated at realtime");
$updated_info = "";
}
$updated_time = $updated_info;
$create_alert = (int)get_parameter ("create_alert",0);
if($create_alert){
$template2 = get_parameter("template");
$module_action_threshold = get_parameter("module_action_threshold");
$id_alert = alerts_create_alert_agent_module ($create_alert, $template2);
if ($id_alert !== false) {
$action_select = get_parameter("action_select",0);
if ($action_select != 0) {
$values = array();
$values['fires_min'] = 0;
$values['fires_max'] = 0;
$values['module_action_threshold'] =
(int)get_parameter ('module_action_threshold');
alerts_add_alert_agent_module_action ($id_alert, $action_select, $values);
}
}
}
$refr = get_parameter('refr', 30); // By default 30 seconds
$show_modules = (bool) get_parameter ("show_modules",0);
$group_id = get_parameter('group_id', 0);
$offset = get_parameter('offset', 0);
$hor_offset = get_parameter('hor_offset', 0);
$block = 20;
$groups = users_get_groups ();
$filter_groups .= ''.__('Group').'';
$filter_groups .= html_print_select_groups(false, "AR", true, 'group_id', $group_id, false, '', '', true, false, true, '', false , 'margin-right: 10px; margin-top: 5px;');
$check = ''.__('Show modules without alerts').'';
$check .= html_print_checkbox('slides_ids[]', $d['id'], $show_modules, true, false, '', true);
$comborefr = '
";
if ($config["pure"] == 0) {
$fullscreen['text'] = ''
. html_print_image ("images/full_screen.png", true, array ("title" => __('Full screen mode')))
. "";
}
else {
$fullscreen['text'] = ''
. html_print_image ("images/normal_screen.png", true, array ("title" => __('Back to normal mode')))
. "";
$config['refr'] = $refr;
}
$onheader = array('updated_time' => $updated_time, 'fullscreen' => $fullscreen,
'combo_groups' => $filter_groups);
if ($config['pure'] == 1) {
$onheader['combo_refr'] = $comborefr;
}
// Header
ui_print_page_header (__("Agents/Alerts"), "images/op_alerts.png", false, "", false, $updated_time);
// Old style table, we need a lot of special formatting,don't use table function
// Prepare old-style table
echo '';
echo "";
echo "" . $filter_groups . " | ";
echo "" . $check . " | ";
if ($config['pure'] == 1)
echo "" . $comborefr . " | ";
echo " " . __("Full screen") . "" . $fullscreen['text'] . " | ";
echo "
";
echo "
";
if($show_modules){
if($group_id > 0){
$grupo = " AND tagente.id_grupo = $group_id";
} else {
$grupo ='';
}
$offset_modules = get_parameter ("offset",0);
$sql_count = "SELECT COUNT(tagente_modulo.nombre) FROM tagente_modulo
INNER JOIN tagente ON tagente.id_agente = tagente_modulo.id_agente
WHERE id_agente_modulo NOT IN (SELECT id_agent_module FROM talert_template_modules)
$grupo";
$count_agent_module = db_get_all_rows_sql($sql_count);
$sql = "SELECT tagente.alias, tagente_modulo.nombre,
tagente_modulo.id_agente_modulo FROM tagente_modulo
INNER JOIN tagente ON tagente.id_agente = tagente_modulo.id_agente
WHERE id_agente_modulo NOT IN (SELECT id_agent_module FROM talert_template_modules)
$grupo LIMIT 20 OFFSET $offset_modules";
$agent_modules = db_get_all_rows_sql($sql);
ui_pagination ($count_agent_module[0]['COUNT(tagente_modulo.nombre)'],
ui_get_url_refresh(),0,0,false,'offset',true,'',
'',false,'alerts_modules');
$table->width = '100%';
$table->class = "databox data";
$table->id = "table_agent_module";
$table->data = array ();
$table->head[0] = __('Agents');
$table->head[1] = __('Modules');
$table->head[2] = __('Actions');
$table->style[0]= 'width: 25%;';
$table->style[1]= 'width: 33%;';
$table->style[2]= 'width: 33%;';
foreach($agent_modules as $agent_module) {
$data[0] = io_safe_output($agent_module['alias']);
$data[1] = io_safe_output($agent_module['nombre']);
$uniqid = $agent_module['id_agente_modulo'];
$data[2] = "".html_print_image('images/add_mc.png', true)."";
array_push ($table->data, $data);
$table2->width = '100%';
$table2->id = "table_add_alert";
$table2->class = 'databox filters';
$table2->data = array ();
// $data[0] =
$table2->data[0][0] = __('Actions');
$groups_user = users_get_groups($config["id_user"]);
if (!empty($groups_user)) {
$groups = implode(',', array_keys($groups_user));
$sql = "SELECT id, name FROM talert_actions WHERE id_group IN ($groups)";
$actions = db_get_all_rows_sql($sql);
}
$table2->data[0][1] = html_print_select(
index_array($actions, 'id', 'name'), 'action_select', '', '',
__('Default action'), '0', true, '', true, '', false,
'width: 250px;');
$table2->data[0][1] .= '
';
$table2->data[0][1] .= __('Number of alerts match from').' ';
$table2->data[0][1] .= html_print_input_text ('fires_min', '', '', 4, 10, true);
$table2->data[0][1] .= ' ' . __('to') . ' ';
$table2->data[0][1] .= html_print_input_text ('fires_max', '', '', 4, 10, true);
$table2->data[0][1] .= ui_print_help_icon ("alert-matches", true,
ui_get_full_url(false, false, false, false));
$table2->data[0][1] .= '';
if (check_acl ($config['id_user'], 0, "LM")) {
$table2->data[0][1] .= '';
$table2->data[0][1] .= html_print_image ('images/add.png', true);
$table2->data[0][1] .= ''.__('Create Action').'';
$table2->data[0][1] .= '';
}
$table2->data[1][0] = __('Template');
$own_info = get_user_info ($config['id_user']);
if ($own_info['is_admin'] || check_acl ($config['id_user'], 0, "PM"))
$templates = alerts_get_alert_templates (false, array ('id', 'name'));
else {
$usr_groups = users_get_groups($config['id_user'], 'LW', true);
$filter_groups = '';
$filter_groups = implode(',', array_keys($usr_groups));
$templates = alerts_get_alert_templates (array ('id_group IN (' . $filter_groups . ')'), array ('id', 'name'));
}
$table2->data[1][1] = html_print_select (index_array ($templates, 'id', 'name'),
'template', '', '', __('Select'), 0, true, false, true, '', false, 'width: 250px;');
$table2->data[1][1] .= ' ' .
html_print_image("images/zoom.png", true, array("class" => 'img_help')) . '';
if (check_acl ($config['id_user'], 0, "LM")) {
$table2->data[1][1] .= '';
$table2->data[1][1] .= html_print_image ('images/add.png', true);
$table2->data[1][1] .= ''.__('Create Template').'';
$table2->data[1][1] .= '';
}
$table2->data[2][0] = __('Threshold');
$table2->data[2][1] = html_print_input_text ('module_action_threshold', '0', '', 5, 7, true);
$table2->data[2][1] .= ' ' . __('seconds') . ui_print_help_icon ('action_threshold', true);
$content2 = '';
$module_name = ui_print_truncate_text(io_safe_output($agent_module['nombre']), 40, false, true, false, '…', false);
echo ''.$content2.'
';
}
html_print_table($table);
} else {
$filter = array ('offset' => (int) $offset,
'limit' => (int) $config['block_size']);
$filter_count = array();
if ($group_id > 0) {
$filter['id_grupo'] = $group_id;
$filter_count['id_grupo'] = $group_id;
}
// Get the id of all agents with alerts
$sql = 'SELECT DISTINCT(id_agente)
FROM tagente_modulo
WHERE id_agente_modulo IN
(SELECT id_agent_module
FROM talert_template_modules)';
$agents_with_alerts_raw = db_get_all_rows_sql($sql);
if ($agents_with_alerts_raw === false) {
$agents_with_alerts_raw = array();
}
$agents_with_alerts = array();
foreach ($agents_with_alerts_raw as $awar) {
$agents_with_alerts[] = $awar['id_agente'];
}
$filter['id_agente'] = $agents_with_alerts;
$filter_count['id_agente'] = $agents_with_alerts;
$agents = agents_get_agents ($filter);
$nagents = count(agents_get_agents ($filter_count));
if ($agents == false) {
ui_print_info_message ( array('no_close'=>true, 'message'=> __('There are no agents with alerts') ) );
return;
}
$all_alerts = agents_get_alerts_simple ();
if($config["pure"] == 1) {
$block = count($all_alerts);
}
$templates = array();
$agent_alerts = array();
foreach ($all_alerts as $alert) {
$templates[$alert['id_alert_template']] = '';
$agent_alerts[$alert['agent_name']][$alert['id_alert_template']][] = $alert;
}
// Prepare pagination
ui_pagination ($nagents,false,0,0,false,'offset',true,'',
'',array('count' => '', 'offset' => 'offset_param'),'alerts_agents');
echo '';
echo "".__("Agents")." / ".__("Alert templates")." | ";
if ($hor_offset > 0) {
$new_hor_offset = $hor_offset-$block;
echo "
".
html_print_image("images/darrowleft.png",true, array('title' => __('Previous templates')))." | ";
}
$templates_raw = array();
if (!empty($templates)) {
$sql = sprintf('SELECT id, name
FROM talert_templates
WHERE id IN (%s)',implode(',',array_keys($templates)));
$templates_raw = db_get_all_rows_sql($sql);
}
if (empty($templates_raw))
$templates_raw = array();
$alerts = array();
$ntemplates = 0;
foreach ($templates_raw as $temp) {
if (isset($templates[$temp['id']]) && $templates[$temp['id']] == '') {
$ntemplates++;
if ($ntemplates <= $hor_offset || $ntemplates > ($hor_offset+$block)) {
continue;
}
$templates[$temp['id']] = $temp['name'];
}
}
foreach ($templates as $tid => $tname) {
if ($tname == '') {
continue;
}
echo ''. io_safe_output($tname) . html_print_image('images/information_alerts.png', true, array('title' => io_safe_output($tname),'style' => 'margin-left:5px' )) ." | ";
}
if (($hor_offset + $block) < $ntemplates) {
$new_hor_offset = $hor_offset+$block;
echo "
".html_print_image("images/darrowright.png",true, array('title' => __('More templates')))." | ";
}
foreach ($agents as $agent) {
$alias = db_get_row ('tagente', 'id_agente', $agent['id_agente']);
echo '';
// Name of the agent
echo ''.$alias['alias'].' | ';
// Alerts of the agent
$anyfired = false;
foreach ($templates as $tid => $tname) {
if ($tname == '') {
continue;
}
if (isset($agent_alerts[$agent['nombre']][$tid])) {
foreach($agent_alerts[$agent['nombre']][$tid] as $alert) {
if($alert["times_fired"] > 0) {
$anyfired = true;
}
}
$cellstyle = '';
if($anyfired) {
$cellstyle = 'background:'.COL_ALERTFIRED.';';
}
echo ' ';
$uniqid = uniqid();
echo "";
print_alerts_summary_modal_window($uniqid, $agent_alerts[$agent['nombre']][$tid]);
}
else {
echo ' | ';
}
echo ' | ';
}
echo '
';
}
echo '
';
}
}
// Print the modal window for the summary of each alerts group
function print_alerts_summary_modal_window($id, $alerts) {
$table->width = '98%';
$table->class = "databox";
$table->data = array ();
$table->head[0] = __('Module');
$table->head[1] = __('Action');
$table->head[2] = __('Last fired');
$table->head[3] = __('Status');
foreach($alerts as $alert) {
$data[0] = modules_get_agentmodule_name ($alert['id_agent_module']);
$actions = alerts_get_alert_agent_module_actions ($alert['id']);
$actionDefault = db_get_value_sql("
SELECT id_alert_action
FROM talert_templates
WHERE id = " . $alert['id_alert_template']);
$actionText = '';
if (!empty($actions)) {
$actionText = '';
foreach ($actions as $action) {
$actionText .= '- ' . $action['name'];
if ($action["fires_min"] != $action["fires_max"]) {
$actionText .= " (".$action["fires_min"] . " / ". $action["fires_max"] . ")";
}
$actionText .= '
';
}
$actionText .= '
';
}
else {
if (!empty($actionDefault)) {
$actionText = db_get_sql ("SELECT name
FROM talert_actions
WHERE id = $actionDefault") .
" (" . __("Default") . ")";
}
}
$data[1] = $actionText;
$data[2] = ui_print_timestamp ($alert["last_fired"], true);
$status = STATUS_ALERT_NOT_FIRED;
if ($alert["times_fired"] > 0) {
$status = STATUS_ALERT_FIRED;
$title = __('Alert fired').' '.$alert["times_fired"].' '.__('times');
}
elseif ($alert["disabled"] > 0) {
$status = STATUS_ALERT_DISABLED;
$title = __('Alert disabled');
}
else {
$status = STATUS_ALERT_NOT_FIRED;
$title = __('Alert not fired');
}
$data[3] = ui_print_status_image($status, $title, true);
array_push ($table->data, $data);
}
$content = html_print_table($table,true);
$agent = modules_get_agentmodule_agent_alias($alerts[0]['id_agent_module']);
$template = alerts_get_alert_template_name($alerts[0]['id_alert_template']);
echo ''.$content.'
';
}
extensions_add_operation_menu_option(__("Agents/Alerts view"), 'estado', null, "v1r1","view");
extensions_add_main_function('mainAgentsAlerts');
ui_require_jquery_file('pandora');
?>