diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 37bd5d5e58..95def2dd17 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,12 @@ +2010-07-02 Sergio Martin + + * operation/events/events_rss.php + operation/events/events_marquee.php + operation/events/events.php: Fixed several bugs into + events viewer and events rss file. Apply Ip restriction + to API Ip's List to rss and marquee files. + Bugfix: 3017263 + 2010-07-01 Sergio Martin * include/functions_db.php: Fixed the notice when diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index a79dd17a03..401dbbf456 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -138,9 +138,7 @@ $pagination = (int) get_parameter ("pagination", $config["block_size"]); $groups = get_user_groups ($config["id_user"], "IR"); $event_view_hr = (int) get_parameter ("event_view_hr", $config["event_view_hr"]); $id_user_ack = get_parameter ("id_user_ack", 0); -$group_rep = (int) get_parameter ("group_rep", 1); -/* Show always the system events */ -$groups[0] = __('System'); +$group_rep = (int) get_parameter ("group_rep", 0); $delete = (bool) get_parameter ("delete"); $validate = (bool) get_parameter ("validate"); @@ -153,7 +151,6 @@ if ($ev_group > 0 && in_array ($ev_group, array_keys ($groups))) { if (is_user_admin ($config["id_user"])) { //Do nothing if you're admin, you get full access $sql_post = ""; - $groups[0] = __('System Events'); } else { //Otherwise select all groups the user has rights to. $sql_post = " AND id_grupo IN (".implode (",", array_keys ($groups)).")"; @@ -177,7 +174,7 @@ if ($event_type != ""){ $sql_post .= " AND event_type LIKE '%$event_type%' "; } elseif ($event_type == "not_normal"){ - $sql_post .= " AND event_type LIKE '%warning%' OR LIKE '%critical%' "; + $sql_post .= " AND event_type LIKE '%warning%' OR event_type LIKE '%critical%' OR event_type LIKE '%unknown%' "; } else $sql_post .= " AND event_type = '".$event_type."'"; @@ -207,11 +204,25 @@ $url = "index.php?sec=eventos&sec2=operation/events/events&search=" . $pagination . "&group_rep=" . $group_rep . "&event_view_hr=" . $event_view_hr . "&id_user_ack=" . $id_user_ack; - - // Header -if ($config["pure"] == 0) - print_page_header (__("Events"), "images/lightning_go.png", false, "eventview", false, ''); +if ($config["pure"] == 0) { + $buttons = array( + 'fullscreen' => array('active' => false, + 'text' => '' . + print_image("images/fullscreen.png", true, array ("title" => __('Full screen'))) .''), + 'rss' => array('active' => false, + 'text' => '' . + print_image("images/rss.png", true, array ("title" => __('RSS Events'))) .''), + 'marquee' => array('active' => false, + 'text' => '' . + print_image("images/heart.png", true, array ("title" => __('Marquee display'))) .''), + 'csv' => array('active' => false, + 'text' => '' . + print_image("images/disk.png", true, array ("title" => __('Export to CSV file'))) .'') + ); + + print_page_header (__("Events"), "images/lightning_go.png", false, "eventview", false,$buttons); +} else { // Fullscreen echo "

".__('Events')." » ".__('Main event view'). " "; @@ -265,9 +276,11 @@ echo ""; // Event type echo "".__('Event type').""; -print_select (get_event_types (), 'event_type', $event_type, '', __('All'), ''); +$types = get_event_types (); // Expand standard array to add not_normal (not exist in the array, used only for searches) -$event_type["not_normal"] = __("Not normal"); +$types["not_normal"] = __("Not normal"); +print_select ($types, 'event_type', $event_type, '', __('All'), ''); + echo ""; @@ -342,19 +355,6 @@ echo ''; //The buttons print_submit_button (__('Update'), '', false, 'class="sub upd"'); -// CSV -echo '   '; -print_image ("images/disk.png", false, array ("title" => __('Export to CSV file'))); -echo ''; -// Marquee -echo ' '; -print_image ("images/heart.png", false, array ("title" => __('Marquee display'))); -echo ''; -// RSS -echo ' '; -print_image ("images/rss.png", false, array ("title" => __('RSS Events'))); -echo ''; - echo ""; //This is the filter div echo '
'; if ($config['flash_charts']) { diff --git a/pandora_console/operation/events/events_marquee.php b/pandora_console/operation/events/events_marquee.php index 435e3573bf..b7a9ab8524 100644 --- a/pandora_console/operation/events/events_marquee.php +++ b/pandora_console/operation/events/events_marquee.php @@ -26,7 +26,11 @@ $output = ""; require_once "../../include/config.php"; require_once "../../include/functions.php"; require_once "../../include/functions_db.php"; +require_once "../../include/functions_api.php"; +if(!isInACL($_SERVER['REMOTE_ADDR'])) + exit; + $sql = "SELECT evento, timestamp, id_agente FROM tevento ORDER BY utimestamp DESC LIMIT 0 , $MAX_MARQUEE_EVENTS"; $result=mysql_query($sql); diff --git a/pandora_console/operation/events/events_rss.php b/pandora_console/operation/events/events_rss.php index d3d2901248..83d64cc062 100644 --- a/pandora_console/operation/events/events_rss.php +++ b/pandora_console/operation/events/events_rss.php @@ -20,14 +20,12 @@ require_once "../../include/functions.php"; require_once "../../include/functions_db.php"; require_once "../../include/functions_api.php"; + $ipOrigin = $_SERVER['REMOTE_ADDR']; // Uncoment this to activate ACL on RSS Events -/* -if (!isInACL($ipOrigin)) { +if (!isInACL($ipOrigin)) exit; -} -*/ header("Content-Type: application/xml; charset=UTF-8"); //Send header before starting to output @@ -61,33 +59,48 @@ $severity = (int) get_parameter ("severity", -1); // -1 all $status = (int) get_parameter ("status", 0); // -1 all, 0 only red, 1 only green $id_agent = (int) get_parameter ("id_agent", -1); $id_event = (int) get_parameter ("id_event", -1); //This will allow to select only 1 event (eg. RSS) +$event_view_hr = (int) get_parameter ("event_view_hr", 0); $sql_post = ""; + +if ($event_view_hr > 0) { + $unixtime = (int) (get_system_time () - ($event_view_hr * 3600)); //Put hours in seconds + $sql_post .= " AND `tevento`.`utimestamp` > ".$unixtime; +} if ($ev_group > 1) $sql_post .= " AND `tevento`.`id_grupo` = $ev_group"; -if ($status == 1) - $sql_post .= " AND `tevento`.`estado` = 1"; -if ($status == 0) - $sql_post .= " AND `tevento`.`estado` = 0"; +if ($status >= 0) + $sql_post .= " AND `tevento`.`estado` = ".$status; if ($search != "") $sql_post .= " AND `tevento`.`evento` LIKE '%$search%'"; -if ($event_type != "") - $sql_post .= " AND `tevento`.`event_type` = '$event_type'"; +if ($event_type != ""){ + // If normal, warning, could be several (going_up_warning, going_down_warning... too complex + // for the user so for him is presented only "warning, critical and normal" + if ($event_type == "warning" || $event_type == "critical" || $event_type == "normal"){ + $sql_post .= " AND `tevento`.`event_type` LIKE '%$event_type%' "; + } + elseif ($event_type == "not_normal"){ + $sql_post .= " AND `tevento`.`event_type` LIKE '%warning%' OR `tevento`.`event_type` LIKE '%critical%' OR `tevento`.`event_type` LIKE '%unknown%' "; + } + else + $sql_post .= " AND `tevento`.`event_type` = '".$event_type."'"; +} if ($severity != -1) $sql_post .= " AND `tevento`.`criticity` >= ".$severity; if ($id_agent != -1) $sql_post .= " AND `tevento`.`id_agente` = ".$id_agent; if ($id_event != -1) $sql_post .= " AND id_evento = ".$id_event; - + $sql="SELECT `tevento`.`id_evento` AS event_id, - `tagente`.`nombre` AS agent_name, + `tevento`.`id_agente` AS id_agent, `tevento`.`id_usuario` AS validated_by, `tevento`.`estado` AS validated, `tevento`.`evento` AS event_descr, - `tevento`.`utimestamp` AS unix_timestamp - FROM tevento, tagente - WHERE `tevento`.`id_agente` = `tagente`.`id_agente` ".$sql_post." + `tevento`.`utimestamp` AS unix_timestamp, + `tevento`.`event_type` AS event_type + FROM tevento + WHERE 1 = 1".$sql_post." ORDER BY utimestamp DESC LIMIT 0 , 30"; $result= get_db_all_rows_sql ($sql); @@ -117,15 +130,26 @@ if (empty ($result)) { } foreach ($result as $row) { + if ($row["event_type"] == "system") { + $agent_name = __('System'); + } + elseif ($row["id_agent"] > 0) { + // Agent name + $agent_name = get_agent_name ($row["id_agent"]); + } + else { + $agent_name = __('Alert').__('SNMP'); + } + //This is mandatory $rss_feed .= ''; $rss_feed .= safe_input ($url . "/index.php?sec=eventos&sec2=operation/events/events&id_event=" . $row['event_id']); $rss_feed .= ''; - $rss_feed .= safe_input ($row['agent_name']); + $rss_feed .= $agent_name; $rss_feed .= ''; $rss_feed .= safe_input ($row['event_descr']); if($row['validated'] == 1) { - $rss_feed .= '

Validated by ' . safe_input ($row['validated_by']); + $rss_feed .= safe_input ('

').'Validated by ' . safe_input ($row['validated_by']); } $rss_feed .= '
'; $rss_feed .= safe_input ($url . "/index.php?sec=eventos&sec2=operation/events/events&id_event=" . $row["event_id"]);