/** function syslog_statistics() * This function paints a table of summary statistics for syslog * messages by host, facility, priority, and time range. */ function syslog_statistics() { global $title, $colors, $rows, $config; include dirname(__FILE__) . "/config.php"; /* ================= input validation ================= */ input_validate_input_number(get_request_var_request("rows")); input_validate_input_number(get_request_var_request("refresh")); input_validate_input_number(get_request_var_request("page")); input_validate_input_number(get_request_var_request("timespan")); /* ==================================================== */ /* clean up filter string */ if (isset($_REQUEST["filter"])) { $_REQUEST["filter"] = sanitize_search_string(get_request_var_request("filter")); } /* clean up facility string */ if (isset($_REQUEST["facility"])) { $_REQUEST["facility"] = sanitize_search_string(get_request_var_request("facility")); } /* clean up priority string */ if (isset($_REQUEST["priority"])) { $_REQUEST["priority"] = sanitize_search_string(get_request_var_request("priority")); } /* clean up sort solumn */ if (isset($_REQUEST["sort_column"])) { $_REQUEST["sort_column"] = sanitize_search_string(get_request_var_request("sort_column")); } /* clean up sort direction */ if (isset($_REQUEST["sort_direction"])) { $_REQUEST["sort_direction"] = sanitize_search_string(get_request_var_request("sort_direction")); } /* if the user pushed the 'clear' button */ if (isset($_REQUEST["clear"])) { kill_session_var("sess_syslog_stats_timespan"); kill_session_var("sess_syslog_stats_rows"); kill_session_var("sess_syslog_stats_refresh"); kill_session_var("sess_syslog_stats_page"); kill_session_var("sess_syslog_stats_filter"); kill_session_var("sess_syslog_stats_facility"); kill_session_var("sess_syslog_stats_priority"); kill_session_var("sess_syslog_stats_sort_column"); kill_session_var("sess_syslog_stats_sort_direction"); $_REQUEST["page"] = 1; unset($_REQUEST["rows"]); unset($_REQUEST["timespan"]); unset($_REQUEST["refresh"]); unset($_REQUEST["page"]); unset($_REQUEST["filter"]); unset($_REQUEST["facility"]); unset($_REQUEST["priority"]); unset($_REQUEST["sort_column"]); unset($_REQUEST["sort_direction"]); $reset_multi = true; } else { /* if any of the settings changed, reset the page number */ $changed = 0; $changed += syslog_check_changed("timespan", "sess_syslog_stats_timespan"); $changed += syslog_check_changed("rows", "sess_syslog_stats_rows"); $changed += syslog_check_changed("refresh", "sess_syslog_stats_refresh"); $changed += syslog_check_changed("filter", "sess_syslog_stats_filter"); $changed += syslog_check_changed("facility", "sess_syslog_stats_facility"); $changed += syslog_check_changed("priority", "sess_syslog_stats_priority"); $changed += syslog_check_changed("sort_column", "sess_syslog_stats_sort_column"); $changed += syslog_check_changed("sort_direction", "sess_syslog_stats_sort_direction"); if ($changed) { $_REQUEST["page"] = "1"; } $reset_multi = false; } /* remember search fields in session vars */ load_current_session_value("page", "sess_syslog_stats_page", "1"); load_current_session_value("rows", "sess_syslog_stats_rows", read_config_option("num_rows_syslog")); load_current_session_value("refresh", "sess_syslog_stats_refresh", read_config_option("syslog_refresh")); load_current_session_value("filter", "sess_syslog_stats_filter", ""); load_current_session_value("facility", "sess_syslog_stats_facility", "-1"); load_current_session_value("priority", "sess_syslog_stats_priority", "-1"); load_current_session_value("sort_column", "sess_syslog_stats_sort_column", "host"); load_current_session_value("sort_direction", "sess_syslog_stats_sort_direction", "DESC"); html_start_box("<strong>Syslog Statistics Filter</strong>", "100%", $colors["header"], "3", "center", ""); syslog_stats_filter(); html_end_box(); html_start_box("", "100%", $colors["header"], "3", "center", ""); $sql_where = ""; $sql_groupby = ""; if ($_REQUEST["rows"] == -1) { $row_limit = read_config_option("num_rows_syslog"); } elseif ($_REQUEST["rows"] == -2) { $row_limit = 999999; } else { $row_limit = $_REQUEST["rows"]; } $records = get_stats_records($sql_where, $sql_groupby, $row_limit); $rows_query_string = "SELECT COUNT(*)\n\t\tFROM `" . $syslogdb_default . "`.`syslog_statistics` AS ss\n\t\tLEFT JOIN `" . $syslogdb_default . "`.`syslog_facilities` AS sf\n\t\tON ss.facility_id=sf.facility_id\n\t\tLEFT JOIN `" . $syslogdb_default . "`.`syslog_priorities` AS sp\n\t\tON ss.priority_id=sp.priority_id\n\t\tLEFT JOIN `" . $syslogdb_default . "`.`syslog_hosts` AS sh\n\t\tON ss.host_id=sh.host_id\n\t\t{$sql_where}\n\t\t{$sql_groupby}"; $total_rows = sizeof(syslog_db_fetch_cell($rows_query_string)); ?> <script type="text/javascript"> <!-- function applyChange(objForm) { strURL = '?facility=' + objForm.facility.value; strURL = strURL + '&priority=' + objForm.priority.value; strURL = strURL + '&filter=' + objForm.filter.value; strURL = strURL + '&rows=' + objForm.rows.value; document.location = strURL; } --> </script> <?php /* generate page list */ $url_page_select = get_page_list($_REQUEST["page"], MAX_DISPLAY_PAGES, $row_limit, $total_rows, "syslog.php?tab=stats&filter=" . $_REQUEST["filter"]); if ($total_rows > 0) { $nav = "<tr bgcolor='#" . $colors["header"] . "'>\n\t\t\t\t\t<td colspan='13'>\n\t\t\t\t\t\t<table width='100%' cellspacing='0' cellpadding='0' border='0'>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td align='left' class='textHeaderDark'>\n\t\t\t\t\t\t\t\t\t<strong><< "; if ($_REQUEST["page"] > 1) { $nav .= "<a class='linkOverDark' href='syslog.php?tab=stats&page=" . ($_REQUEST["page"] - 1) . "'>"; } $nav .= "Previous"; if ($_REQUEST["page"] > 1) { $nav .= "</a>"; } $nav .= "</strong>\n\t\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t\t\t<td align='center' class='textHeaderDark'>\n\t\t\t\t\t\t\t\t\tShowing Rows " . ($total_rows == 0 ? "None" : $row_limit * ($_REQUEST["page"] - 1) + 1 . " to " . ($total_rows < $row_limit || $total_rows < $row_limit * $_REQUEST["page"] ? $total_rows : $row_limit * $_REQUEST["page"]) . " of {$total_rows} [{$url_page_select}]") . "\n\t\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t\t\t<td align='right' class='textHeaderDark'>\n\t\t\t\t\t\t\t\t\t<strong>"; if ($_REQUEST["page"] * $row_limit < $total_rows) { $nav .= "<a class='linkOverDark' href='syslog.php?tab=stats&page=" . ($_REQUEST["page"] + 1) . "'>"; } $nav .= "Next"; if ($_REQUEST["page"] * $row_limit < $total_rows) { $nav .= "</a>"; } $nav .= " >></strong>\n\t\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n"; } else { $nav = "<tr bgcolor='#" . $colors["header"] . "' class='noprint'>\n\t\t\t\t\t<td colspan='22'>\n\t\t\t\t\t\t<table width='100%' cellspacing='0' cellpadding='0' border='0'>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td align='center' class='textHeaderDark'>\n\t\t\t\t\t\t\t\t\tNo Rows Found\n\t\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n"; } print $nav; $display_text = array("host" => array("Host Name", "ASC"), "facility" => array("Facility", "ASC"), "priority" => array("Priority", "ASC"), "records" => array("Records", "DESC")); html_header_sort($display_text, $_REQUEST["sort_column"], $_REQUEST["sort_direction"]); $i = 0; if (sizeof($records)) { foreach ($records as $r) { form_alternate_row_color($colors["alternate"], $colors["light"], $i); $i++; echo "<td>" . $r["host"] . "</td>"; echo "<td>" . ($_REQUEST["facility"] != "-2" ? ucfirst($r["facility"]) : "-") . "</td>"; echo "<td>" . ($_REQUEST["priority"] != "-2" ? ucfirst($r["priority"]) : "-") . "</td>"; echo "<td>" . $r["records"] . "</td>"; form_end_row(); } } else { print "<tr><td colspan='4'><em>No Syslog Statistics Found</em></td></tr>"; } html_end_box(false); }
/** function syslog_statistics() * This function paints a table of summary statistics for syslog * messages by host, facility, priority, and time range. */ function syslog_statistics() { global $title, $rows, $config, $refresh; $refresh['seconds'] = read_config_option('syslog_refresh'); include dirname(__FILE__) . '/config.php'; /* ================= input validation and session storage ================= */ $filters = array('rows' => array('filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1'), 'refresh' => array('filter' => FILTER_VALIDATE_INT, 'default' => read_config_option('syslog_refresh')), 'timespan' => array('filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1'), 'page' => array('filter' => FILTER_VALIDATE_INT, 'default' => '1'), 'filter' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string')), 'efacility' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string')), 'epriority' => array('filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string')), 'sort_column' => array('filter' => FILTER_CALLBACK, 'default' => 'host', 'options' => array('options' => 'sanitize_search_string')), 'sort_direction' => array('filter' => FILTER_CALLBACK, 'default' => 'ASC', 'options' => array('options' => 'sanitize_search_string'))); validate_store_request_vars($filters, 'sess_syslogs'); /* ================= input validation ================= */ html_start_box(__('Syslog Statistics Filter'), '100%', '', '3', 'center', ''); syslog_stats_filter(); html_end_box(); $sql_where = ''; $sql_groupby = ''; if (get_request_var('rows') == -1) { $row_limit = read_config_option('num_rows_table'); } elseif (get_request_var('rows') == -2) { $row_limit = 999999; } else { $row_limit = get_request_var('rows'); } $records = get_stats_records($sql_where, $sql_groupby, $row_limit); $rows_query_string = "SELECT COUNT(*)\n\t\tFROM `" . $syslogdb_default . "`.`syslog_statistics` AS ss\n\t\tLEFT JOIN `" . $syslogdb_default . "`.`syslog_facilities` AS sf\n\t\tON ss.facility_id=sf.facility_id\n\t\tLEFT JOIN `" . $syslogdb_default . "`.`syslog_priorities` AS sp\n\t\tON ss.priority_id=sp.priority_id\n\t\tLEFT JOIN `" . $syslogdb_default . "`.`syslog_hosts` AS sh\n\t\tON ss.host_id=sh.host_id\n\t\t{$sql_where}\n\t\t{$sql_groupby}"; $total_rows = syslog_db_fetch_cell('SELECT COUNT(*) FROM (' . $rows_query_string . ') as temp'); $nav = html_nav_bar('syslog.php?tab=stats&filter=' . get_request_var_request('filter'), MAX_DISPLAY_PAGES, get_request_var_request('page'), $row_limit, $total_rows, 4, __('Messages'), 'page', 'main'); print $nav; html_start_box('', '100%', '', '3', 'center', ''); $display_text = array('host' => array(__('Host Name'), 'ASC'), 'facility' => array(__('Facility'), 'ASC'), 'priority' => array(__('Priority'), 'ASC'), 'records' => array(__('Records'), 'DESC')); html_header_sort($display_text, get_request_var('sort_column'), get_request_var('sort_direction')); if (sizeof($records)) { foreach ($records as $r) { form_alternate_row(); echo '<td>' . $r['host'] . '</td>'; echo '<td>' . (get_request_var('facility') != '-2' ? ucfirst($r['facility']) : '-') . '</td>'; echo '<td>' . (get_request_var('priority') != '-2' ? ucfirst($r['priority']) : '-') . '</td>'; echo '<td>' . $r['records'] . '</td>'; form_end_row(); } } else { print "<tr><td colspan='4'><em>" . __('No Syslog Statistics Found') . "</em></td></tr>"; } html_end_box(false); if (sizeof($records)) { print $nav; } }