/', '', $php_info); $php_info = preg_replace('/\<\/body\>.*$/', '', $php_info); $php_info = preg_replace('/\/U', '', $php_info); $php_info = preg_replace('/\<\/a\>/', '
', $php_info); $php_info = preg_replace('/\/U', '', $php_info); $php_info = preg_replace('/\<\/?address\>/', '', $php_info); return $php_info; } function memory_bytes($val) { $val = trim($val); $last = strtolower($val{strlen($val)-1}); switch($last) { // The 'G' modifier is available since PHP 5.1.0 case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } return $val; } function memory_readable($val) { if ($val < 1024) { $val_label = "bytes"; }elseif ($val < 1048576) { $val_label = "K"; $val /= 1024; }elseif ($val < 1073741824) { $val_label = "M"; $val /= 1048576; }else{ $val_label = "G"; $val /= 1073741824; } return $val . $val_label; } function utilities_view_tech($php_info = "") { global $database_default, $colors, $config, $rrdtool_versions, $poller_options, $input_types; /* Get table status */ $tables = db_fetch_assoc("SHOW TABLES"); $skip_tables = array(); $table_status = array(); if (sizeof($tables)) { foreach($tables as $table) { $create_syntax = db_fetch_row("SHOW CREATE TABLE " . $table["Tables_in_" . $database_default]); if (sizeof($create_syntax)) { if (substr_count(strtoupper($create_syntax["Create Table"]), "INNODB")) { $skip_tables[] = $table["Tables_in_" . $database_default]; }else{ $include_tables[] = $table["Tables_in_" . $database_default]; } } } } if (sizeof($include_tables)) { foreach($include_tables as $table) { $status = db_fetch_row("SHOW TABLE STATUS LIKE '$table'"); array_push($table_status, $status); } } /* Get poller stats */ $poller_item = db_fetch_assoc("SELECT action, count(action) as total FROM poller_item GROUP BY action"); /* Get system stats */ $host_count = db_fetch_cell("SELECT COUNT(*) FROM host"); $graph_count = db_fetch_cell("SELECT COUNT(*) FROM graph_local"); $data_count = db_fetch_assoc("SELECT i.type_id, COUNT(i.type_id) AS total FROM data_template_data AS d, data_input AS i WHERE d.data_input_id = i.id AND local_data_id <> 0 GROUP BY i.type_id"); /* Get RRDtool version */ $rrdtool_version = "Unknown"; if ((file_exists(read_config_option("path_rrdtool"))) && ((function_exists('is_executable')) && (is_executable(read_config_option("path_rrdtool"))))) { $out_array = array(); exec(cacti_escapeshellcmd(read_config_option("path_rrdtool")), $out_array); if (sizeof($out_array) > 0) { if (preg_match("/^RRDtool 1\.4/", $out_array[0])) { $rrdtool_version = "rrd-1.4.x"; }else if (preg_match("/^RRDtool 1\.3\./", $out_array[0])) { $rrdtool_version = "rrd-1.3.x"; }else if (preg_match("/^RRDtool 1\.2\./", $out_array[0])) { $rrdtool_version = "rrd-1.2.x"; }else if (preg_match("/^RRDtool 1\.0\./", $out_array[0])) { $rrdtool_version = "rrd-1.0.x"; } } } /* Get SNMP cli version */ $snmp_version = read_config_option("snmp_version"); if ((file_exists(read_config_option("path_snmpget"))) && ((function_exists('is_executable')) && (is_executable(read_config_option("path_snmpget"))))) { $snmp_version = shell_exec(cacti_escapeshellcmd(read_config_option("path_snmpget")) . " -V 2>&1"); } /* Check RRDTool issues */ $rrdtool_error = ""; if ($rrdtool_version != read_config_option("rrdtool_version")) { $rrdtool_error .= "
ERROR: Installed RRDTool version does not match configured version.
Please visit the Configuration Settings and select the correct RRDTool Utility Version.

"; } $graph_gif_count = db_fetch_cell("SELECT COUNT(*) FROM graph_templates_graph WHERE image_format_id = 2"); if (($graph_gif_count > 0) && (read_config_option("rrdtool_version") != "rrd-1.0.x")) { $rrdtool_error .= "
ERROR: RRDTool 1.2.x does not support the GIF images format, but " . $graph_gif_count . " graph(s) and/or templates have GIF set as the image format.
"; } /* Get spine version */ $spine_version = "Unknown"; if ((file_exists(read_config_option("path_spine"))) && ((function_exists('is_executable')) && (is_executable(read_config_option("path_spine"))))) { $out_array = array(); exec(read_config_option("path_spine") . " --version", $out_array); if (sizeof($out_array) > 0) { $spine_version = $out_array[0]; } } /* Display tech information */ html_start_box("Technical Support", "100%", $colors["header"], "3", "center", ""); html_header(array("General Information"), 2); print "\n"; print " Date\n"; print " " . date("r") . "\n"; print "\n"; api_plugin_hook_function('custom_version_info'); print "\n"; print " Cacti Version\n"; print " " . $config["cacti_version"] . "\n"; print "\n"; print "\n"; print " Cacti OS\n"; print " " . $config["cacti_server_os"] . "\n"; print "\n"; print "\n"; print " SNMP Version\n"; print " " . $snmp_version . "\n"; print "\n"; print "\n"; print " RRDTool Version\n"; print " " . $rrdtool_versions[$rrdtool_version] . " " . $rrdtool_error . "\n"; print "\n"; print "\n"; print " Hosts\n"; print " " . $host_count . "\n"; print "\n"; print "\n"; print " Graphs\n"; print " " . $graph_count . "\n"; print "\n"; print "\n"; print " Data Sources\n"; print " "; $data_total = 0; if (sizeof($data_count)) { foreach ($data_count as $item) { print $input_types[$item["type_id"]] . ": " . $item["total"] . "
"; $data_total += $item["total"]; } print "Total: " . $data_total; }else{ print "0"; } print "\n"; print "\n"; html_header(array("Poller Information"), 2); print "\n"; print " Interval\n"; print " " . read_config_option("poller_interval") . "\n"; if (file_exists(read_config_option("path_spine")) && $poller_options[read_config_option("poller_type")] == 'spine') { $type = $spine_version; } else { $type = $poller_options[read_config_option("poller_type")]; } print "\n"; print "\n"; print " Type\n"; print " " . $type . "\n"; print "\n"; print "\n"; print " Items\n"; print " "; $total = 0; if (sizeof($poller_item)) { foreach ($poller_item as $item) { print "Action[" . $item["action"] . "]: " . $item["total"] . "
"; $total += $item["total"]; } print "Total: " . $total; }else{ print "No items to poll"; } print "\n"; print "\n"; print "\n"; print " Concurrent Processes\n"; print " " . read_config_option("concurrent_processes") . "\n"; print "\n"; print "\n"; print " Max Threads\n"; print " " . read_config_option("max_threads") . "\n"; print "\n"; print "\n"; print " PHP Servers\n"; print " " . read_config_option("php_servers") . "\n"; print "\n"; print "\n"; print " Script Timeout\n"; print " " . read_config_option("script_timeout") . "\n"; print "\n"; print "\n"; print " Max OID\n"; print " " . read_config_option("max_get_size") . "\n"; print "\n"; print "\n"; print " Last Run Statistics\n"; print " " . read_config_option("stats_poller") . "\n"; print "\n"; html_header(array("PHP Information"), 2); print "\n"; print " PHP Version\n"; print " " . phpversion() . "\n"; print "\n"; print "\n"; print " PHP OS\n"; print " " . PHP_OS . "\n"; print "\n"; print "\n"; print " PHP uname\n"; print " "; if (function_exists("php_uname")) { print php_uname(); }else{ print "N/A"; } print "\n"; print "\n"; print "\n"; print " PHP SNMP\n"; print " "; if (function_exists("snmpget")) { print "Installed"; } else { print "Not Installed"; } print "\n"; print "\n"; print "\n"; print " max_execution_time\n"; print " " . ini_get("max_execution_time") . "\n"; print "\n"; print "\n"; print " memory_limit\n"; print " " . ini_get("memory_limit"); /* Calculate memory suggestion based off of data source count */ $memory_suggestion = $data_total * 32768; /* Set minimum - 16M */ if ($memory_suggestion < 16777216) { $memory_suggestion = 16777216; } /* Set maximum - 512M */ if ($memory_suggestion > 536870912) { $memory_suggestion = 536870912; } /* Suggest values in 8M increments */ $memory_suggestion = round($memory_suggestion / 8388608) * 8388608; if (memory_bytes(ini_get('memory_limit')) < $memory_suggestion) { print "
"; if ((ini_get('memory_limit') == -1)) { print "You've set memory limit to 'unlimited'.
"; } print "It is highly suggested that you alter you php.ini memory_limit to " . memory_readable($memory_suggestion) . " or higher.
This suggested memory value is calculated based on the number of data source present and is only to be used as a suggestion, actual values may vary system to system based on requirements."; print "

"; } print "\n"; print "\n"; html_header(array("MySQL Table Information"), 2); print "\n"; print " "; if (sizeof($table_status) > 0) { print "\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print "\n"; foreach ($table_status as $item) { print "\n"; print " \n"; print " \n"; if (isset($item["Engine"])) { print " \n"; }else{ print " \n"; } if (isset($item["Collation"])) { print " \n"; } else { print " \n"; } print "\n"; } if (sizeof($skip_tables)) { print ""; foreach($skip_tables as $table) { print ""; } } print "
NameRowsEngineCollation
" . $item["Name"] . "" . $item["Rows"] . "" . $item["Engine"] . "Unknown" . $item["Collation"] . "Unknown
The Following Tables were Skipped Due to being INNODB
" . $table . "
\n"; }else{ print "Unable to retrieve table status"; } print "\n"; print "\n"; html_header(array("PHP Module Information"), 2); print "\n"; print " " . $php_info . "\n"; print "\n"; html_end_box(); } function utilities_view_user_log() { global $colors, $auth_realms; define("MAX_DISPLAY_PAGES", 21); /* ================= input validation ================= */ input_validate_input_number(get_request_var_request("result")); input_validate_input_number(get_request_var_request("page")); /* ==================================================== */ /* clean up username */ if (isset($_REQUEST["username"])) { $_REQUEST["username"] = sanitize_search_string(get_request_var("username")); } /* clean up search filter */ if (isset($_REQUEST["filter"])) { $_REQUEST["filter"] = sanitize_search_string(get_request_var("filter")); } /* clean up sort_column */ if (isset($_REQUEST["sort_column"])) { $_REQUEST["sort_column"] = sanitize_search_string(get_request_var("sort_column")); } /* clean up sort direction */ if (isset($_REQUEST["sort_direction"])) { $_REQUEST["sort_direction"] = sanitize_search_string(get_request_var("sort_direction")); } /* if the user pushed the 'clear' button */ if (isset($_REQUEST["clear_x"])) { kill_session_var("sess_userlog_current_page"); kill_session_var("sess_userlog_username"); kill_session_var("sess_userlog_result"); kill_session_var("sess_userlog_filter"); kill_session_var("sess_userlog_sort_column"); kill_session_var("sess_userlog_sort_direction"); unset($_REQUEST["page"]); unset($_REQUEST["result"]); unset($_REQUEST["filter"]); unset($_REQUEST["username"]); unset($_REQUEST["sort_column"]); unset($_REQUEST["sort_direction"]); } /* remember these search fields in session vars so we don't have to keep passing them around */ load_current_session_value("page", "sess_userlog_current_page", "1"); load_current_session_value("username", "sess_userlog_username", "-1"); load_current_session_value("result", "sess_userlog_result", "-1"); load_current_session_value("filter", "sess_userlog_filter", ""); load_current_session_value("sort_column", "sess_userlog_sort_column", "time"); load_current_session_value("sort_direction", "sess_userlog_sort_direction", "DESC"); $_REQUEST['page_referrer'] = 'view_user_log'; load_current_session_value('page_referrer', 'page_referrer', 'view_user_log'); ?> User Login History", "100%", $colors["header"], "3", "center", ""); ?> ">
Username:   Result:   Search:  ">  
"") { if (strlen($sql_where)) { $sql_where .= " AND (user_log.username LIKE '%%" . get_request_var_request("filter") . "%%' OR user_log.time LIKE '%%" . get_request_var_request("filter") . "%%' OR user_log.ip LIKE '%%" . get_request_var_request("filter") . "%%')"; }else{ $sql_where = "WHERE (user_log.username LIKE '%%" . get_request_var_request("filter") . "%%' OR user_log.time LIKE '%%" . get_request_var_request("filter") . "%%' OR user_log.ip LIKE '%%" . get_request_var_request("filter") . "%%')"; } } html_start_box("", "100%", $colors["header"], "3", "center", ""); $total_rows = db_fetch_cell("SELECT COUNT(*) FROM user_auth RIGHT JOIN user_log ON user_auth.username = user_log.username $sql_where"); $user_log_sql = "SELECT user_log.username, user_auth.full_name, user_auth.realm, user_log.time, user_log.result, user_log.ip FROM user_auth RIGHT JOIN user_log ON user_auth.username = user_log.username $sql_where ORDER BY " . get_request_var_request("sort_column") . " " . get_request_var_request("sort_direction") . " LIMIT " . (read_config_option("num_rows_data_source")*(get_request_var_request("page")-1)) . "," . read_config_option("num_rows_data_source"); // print $user_log_sql; $user_log = db_fetch_assoc($user_log_sql); /* generate page list */ $url_page_select = get_page_list(get_request_var_request("page"), MAX_DISPLAY_PAGES, read_config_option("num_rows_data_source"), $total_rows, "utilities.php?action=view_user_log&username=" . get_request_var_request("username") . "&filter=" . get_request_var_request("filter")); $nav = " \n \n \n
<< "; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= "Previous"; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= " Showing Rows " . ((read_config_option("num_rows_data_source")*(get_request_var_request("page")-1))+1) . " to " . ((($total_rows < read_config_option("num_rows_data_source")) || ($total_rows < (read_config_option("num_rows_data_source")*get_request_var_request("page")))) ? $total_rows : (read_config_option("num_rows_data_source")*get_request_var_request("page"))) . " of $total_rows [$url_page_select] "; if ((get_request_var_request("page") * read_config_option("num_rows_data_source")) < $total_rows) { $nav .= ""; } $nav .= "Next"; if ((get_request_var_request("page") * read_config_option("num_rows_data_source")) < $total_rows) { $nav .= ""; } $nav .= " >>
\n"; print $nav; $display_text = array( "username" => array("Username", "ASC"), "full_name" => array("Full Name", "ASC"), "realm" => array("Authentication Realm", "ASC"), "time" => array("Date", "ASC"), "result" => array("Result", "DESC"), "ip" => array("IP Address", "DESC")); html_header_sort($display_text, get_request_var_request("sort_column"), get_request_var_request("sort_direction")); $i = 0; if (sizeof($user_log) > 0) { foreach ($user_log as $item) { if (isset($item["full_name"])) { form_alternate_row_color($colors["form_alternate1"],$colors["form_alternate2"],$i); }else{ form_alternate_row_color("FF9D9D","FFAFAF",$i); } ?> \\1", $item["username"])) : $item["username"]);?> \\1", $item["full_name"])) : $item["full_name"]); }else{ print "(User Removed)"; } ?> \\1", $auth_realms[$item["realm"]])) : $auth_realms[$item["realm"]]); }else{ print "N/A"; } ?> \\1", $item["time"])) : $item["time"]);?> \\1", $item["ip"])) : $item["ip"]);?> 1) { db_execute("DELETE FROM user_log WHERE username = '" . $user['username'] . "' AND result = 1 ORDER BY time LIMIT " . ($total_rows - 1)); } db_execute("DELETE FROM user_log WHERE username = '" . $user['username'] . "' AND result = 0"); } /* delete inactive users */ db_execute("DELETE FROM user_log WHERE user_id NOT IN (SELECT id FROM user_auth) OR username NOT IN (SELECT username FROM user_auth)"); } } function utilities_view_logfile() { global $colors, $log_tail_lines, $page_refresh_interval, $refresh; $logfile = read_config_option("path_cactilog"); if ($logfile == "") { $logfile = "./log/rrd.log"; } /* helps determine output color */ $linecolor = True; input_validate_input_number(get_request_var_request("tail_files")); input_validate_input_number(get_request_var_request("message_type")); input_validate_input_number(get_request_var_request("refresh")); input_validate_input_number(get_request_var_request("reverse")); /* if the user pushed the 'clear' button */ if (isset($_REQUEST["clear_x"])) { kill_session_var("sess_logfile_tail_lines"); kill_session_var("sess_logfile_message_type"); kill_session_var("sess_logfile_filter"); kill_session_var("sess_logfile_refresh"); kill_session_var("sess_logfile_reverse"); unset($_REQUEST["tail_lines"]); unset($_REQUEST["message_type"]); unset($_REQUEST["filter"]); unset($_REQUEST["refresh"]); unset($_REQUEST["reverse"]); } load_current_session_value("tail_lines", "sess_logfile_tail_lines", read_config_option("num_rows_log")); load_current_session_value("message_type", "sess_logfile_message_type", "-1"); load_current_session_value("filter", "sess_logfile_filter", ""); load_current_session_value("refresh", "sess_logfile_refresh", read_config_option("log_refresh_interval")); load_current_session_value("reverse", "sess_logfile_reverse", 1); $_REQUEST['page_referrer'] = 'view_logfile'; load_current_session_value('page_referrer', 'page_referrer', 'view_logfile'); $refresh["seconds"] = get_request_var_request("refresh"); $refresh["page"] = "utilities.php?action=view_logfile"; include_once("./include/top_header.php"); ?> Log File Filters", "100%", $colors["header"], "3", "center", ""); ?> ">
Tail Lines:   Message Type:   
Refresh:   Display Order: 
Search:  ">
0) { $start_string = "Log File [Total Lines: " . sizeof($logcontents) . " - Non-Matching Items Hidden]"; }else{ $start_string = "Log File [Total Lines: " . sizeof($logcontents) . " - All Items Shown]"; } html_start_box($start_string, "100%", $colors["header"], "3", "center", ""); $i = 0; $j = 0; $linecolor = false; foreach ($logcontents as $item) { $host_start = strpos($item, "Host["); $ds_start = strpos($item, "DS["); $new_item = ""; if ((!$host_start) && (!$ds_start)) { $new_item = $item; }else{ while ($host_start) { $host_end = strpos($item, "]", $host_start); $host_id = substr($item, $host_start+5, $host_end-($host_start+5)); $new_item = $new_item . substr($item, 0, $host_start + 5) . "" . substr($item, $host_start + 5, $host_end-($host_start + 5)) . ""; $item = substr($item, $host_end); $host_start = strpos($item, "Host["); } $ds_start = strpos($item, "DS["); while ($ds_start) { $ds_end = strpos($item, "]", $ds_start); $ds_id = substr($item, $ds_start+3, $ds_end-($ds_start+3)); $new_item = $new_item . substr($item, 0, $ds_start + 3) . "" . substr($item, $ds_start + 3, $ds_end-($ds_start + 3)) . ""; $item = substr($item, $ds_end); $ds_start = strpos($item, "DS["); } $new_item = $new_item . $item; } /* get the background color */ if ((substr_count($new_item, "ERROR")) || (substr_count($new_item, "FATAL"))) { $bgcolor = "FF3932"; }elseif (substr_count($new_item, "WARN")) { $bgcolor = "EACC00"; }elseif (substr_count($new_item, " SQL ")) { $bgcolor = "6DC8FE"; }elseif (substr_count($new_item, "DEBUG")) { $bgcolor = "C4FD3D"; }elseif (substr_count($new_item, "STATS")) { $bgcolor = "96E78A"; }else{ if ($linecolor) { $bgcolor = "CCCCCC"; }else{ $bgcolor = "FFFFFF"; } $linecolor = !$linecolor; } ?> 1000) { ?> >>> LINE LIMIT OF 1000 LINES REACHED!! <<<<";?> Clear Cacti Log File", "100%", $colors["header"], "1", "center", ""); if (file_exists($logfile)) { if (is_writable($logfile)) { $timestamp = date("m/d/Y h:i:s A"); $log_fh = fopen($logfile, "w"); fwrite($log_fh, $timestamp . " - WEBUI: Cacti Log Cleared from Web Management Interface\n"); fclose($log_fh); print "Cacti Log File Cleared"; }else{ print "Error: Unable to clear log, no write permissions."; } }else{ print "Error: Unable to clear log, file does not exist."; } html_end_box(); } function utilities_view_snmp_cache() { global $colors, $poller_actions; define("MAX_DISPLAY_PAGES", 21); /* ================= input validation ================= */ input_validate_input_number(get_request_var_request("host_id")); input_validate_input_number(get_request_var_request("snmp_query_id")); input_validate_input_number(get_request_var_request("page")); input_validate_input_number(get_request_var_request("poller_action")); /* ==================================================== */ /* clean up search filter */ if (isset($_REQUEST["filter"])) { $_REQUEST["filter"] = sanitize_search_string(get_request_var("filter")); } /* if the user pushed the 'clear' button */ if (isset($_REQUEST["clear_x"])) { kill_session_var("sess_snmp_current_page"); kill_session_var("sess_snmp_host_id"); kill_session_var("sess_snmp_snmp_query_id"); kill_session_var("sess_snmp_filter"); unset($_REQUEST["page"]); unset($_REQUEST["filter"]); unset($_REQUEST["host_id"]); unset($_REQUEST["snmp_query_id"]); } /* remember these search fields in session vars so we don't have to keep passing them around */ load_current_session_value("page", "sess_snmp_current_page", "1"); load_current_session_value("host_id", "sess_snmp_host_id", "-1"); load_current_session_value("snmp_query_id", "sess_snmp_snmp_query_id", "-1"); load_current_session_value("filter", "sess_snmp_filter", ""); $_REQUEST['page_referrer'] = 'view_snmp_cache'; load_current_session_value('page_referrer', 'page_referrer', 'view_snmp_cache'); ?> SNMP Cache Items", "100%", $colors["header"], "3", "center", ""); ?> ">
Host:   Query Name:   Search:  ">  
\n \n \n
<< "; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= "Previous"; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= " Showing Rows " . ((read_config_option("num_rows_data_source")*(get_request_var_request("page")-1))+1) . " to " . ((($total_rows < read_config_option("num_rows_data_source")) || ($total_rows < (read_config_option("num_rows_data_source")*get_request_var_request("page")))) ? $total_rows : (read_config_option("num_rows_data_source")*get_request_var_request("page"))) . " of $total_rows [$url_page_select] "; if ((get_request_var_request("page") * read_config_option("num_rows_data_source")) < $total_rows) { $nav .= ""; } $nav .= "Next"; if ((get_request_var_request("page") * read_config_option("num_rows_data_source")) < $total_rows) { $nav .= ""; } $nav .= " >>
\n"; print $nav; html_header(array("Details")); $i = 0; if (sizeof($snmp_cache) > 0) { foreach ($snmp_cache as $item) { form_alternate_row_color($colors["form_alternate1"],$colors["form_alternate2"],$i); ?> Host: \\1", $item["description"])) : $item["description"]);?> , SNMP Query: \\1", $item["name"])) : $item["name"]);?> Index: , Field Name: \\1", $item["field_name"])) : $item["field_name"]);?> , Field Value: \\1", $item["field_value"])) : $item["field_value"]);?> OID: \\1", $item["oid"])) : $item["oid"]);?> Poller Cache Items", "100%", $colors["header"], "3", "center", ""); ?> ">
Host:   Action:   Search:  ">  
\n \n \n
<< "; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= "Previous"; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= " Showing Rows " . ((read_config_option("num_rows_data_source")*(get_request_var_request("page")-1))+1) . " to " . ((($total_rows < read_config_option("num_rows_data_source")) || ($total_rows < (read_config_option("num_rows_data_source")*get_request_var_request("page")))) ? $total_rows : (read_config_option("num_rows_data_source")*get_request_var_request("page"))) . " of $total_rows [$url_page_select] "; if ((get_request_var_request("page") * read_config_option("num_rows_data_source")) < $total_rows) { $nav .= ""; } $nav .= "Next"; if ((get_request_var_request("page") * read_config_option("num_rows_data_source")) < $total_rows) { $nav .= ""; } $nav .= " >>
\n"; print $nav; $display_text = array( "data_template_data.name_cache" => array("Data Source Name", "ASC"), "nosort" => array("Details", "ASC")); html_header_sort($display_text, get_request_var_request("sort_column"), get_request_var_request("sort_direction")); $i = 0; if (sizeof($poller_cache) > 0) { foreach ($poller_cache as $item) { form_alternate_row_color($colors["form_alternate1"],$colors["form_alternate2"],$i); ?> ">\\1", $item["name_cache"]):$item["name_cache"]);?> \\1", $item["arg1"])) : $item["arg1"]); }else{ $details = "SNMP Version: " . $item["snmp_version"] . ", " . "User: " . $item["snmp_username"] . ", OID: " . $item["arg1"]; } }elseif ($item["action"] == 1) { $details = "Script: " . (strlen(get_request_var_request("filter")) ? (preg_replace("/(" . preg_quote(get_request_var_request("filter"), "/") . ")/i", "\\1", $item["arg1"])) : $item["arg1"]); }else{ $details = "Script Server: " . (strlen(get_request_var_request("filter")) ? (preg_replace("/(" . preg_quote(get_request_var_request("filter"), "/") . ")/i", "\\1", $item["arg1"])) : $item["arg1"]); } print $details; ?> RRD: Cacti System Utilities", "100%", $colors["header"], "3", "center", ""); ?> "> Technical Support Cacti technical support page. Used by developers and technical support persons to assist with issues in Cacti. Includes checks for common configuration issues. "> View Cacti Log File The Cacti Log File stores statistic, error and other message depending on system settings. This information can be used to identify problems with the poller and application. "> View User Log Allows Administrators to browse the user log. Administrators can filter and export the log as well. "> View Poller Cache This is the data that is being passed to the poller each time it runs. This data is then in turn executed/interpreted and the results are fed into the rrd files for graphing or the database for display. "> View SNMP Cache The SNMP cache stores information gathered from SNMP queries. It is used by cacti to determine the OID to use when gathering information from an SNMP-enabled host. "> Rebuild Poller Cache The poller cache will be cleared and re-generated if you select this option. Sometimes host/data source data can get out of sync with the cache in which case it makes sense to clear the cache and start over.