function export() { global $config; /* count how many graphs are created */ $total_graphs_created = 0; if (!file_exists(read_config_option("path_html_export"))) { export_fatal("Export path '" . read_config_option("path_html_export") . "' does not exist! Export can not continue."); } export_log("Running graph export"); $cacti_root_path = $config["base_path"]; $cacti_export_path = read_config_option("path_html_export"); if (substr_count($cacti_root_path, $cacti_export_path) || (substr_count($cacti_export_path, $cacti_root_path))) { export_fatal("Export path '" . read_config_option("path_html_export") . "' is to closely related to the Cacti web root. You must be out of your mind."); } /* delete all files and directories in the cacti_export_path */ del_directory($cacti_export_path, false); /* test how will the export will be made */ if (read_config_option('export_presentation') == 'tree') { export_log("Running graph export with tree organization"); $total_graphs_created = tree_export(); }else { /* copy the css/images on the first time */ if (file_exists("$cacti_export_path/main.css") == false) { copy("$cacti_root_path/include/main.css", "$cacti_export_path/main.css"); copy("$cacti_root_path/images/tab_cacti.gif", "$cacti_export_path/tab_cacti.gif"); copy("$cacti_root_path/images/cacti_backdrop.gif", "$cacti_export_path/cacti_backdrop.gif"); copy("$cacti_root_path/images/transparent_line.gif", "$cacti_export_path/transparent_line.gif"); copy("$cacti_root_path/images/shadow.gif", "$cacti_export_path/shadow.gif"); } /* if the index file already exists, delete it */ check_remove($cacti_export_path . "/index.html"); /* open pointer to the new index file */ $fp_index = fopen($cacti_export_path . "/index.html", "w"); /* get a list of all graphs that need exported */ $graphs = db_fetch_assoc("select graph_templates_graph.id, graph_templates_graph.local_graph_id, graph_templates_graph.height, graph_templates_graph.width, graph_templates_graph.title_cache, graph_templates.name, graph_local.host_id from graph_templates_graph left join graph_templates on (graph_templates_graph.graph_template_id=graph_templates.id) left join graph_local on (graph_templates_graph.local_graph_id=graph_local.id) where graph_templates_graph.local_graph_id!=0 and graph_templates_graph.export='on' order by graph_templates_graph.title_cache"); $rras = db_fetch_assoc("select rra.id, rra.name from rra order by steps"); /* write the html header data to the index file */ fwrite($fp_index, HTML_HEADER); fwrite($fp_index, HTML_GRAPH_HEADER_ONE); fwrite($fp_index, "<strong>Displaying " . sizeof($graphs) . " Exported Graph" . ((sizeof($graphs) > 1) ? "s" : "") . "</strong>"); fwrite($fp_index, HTML_GRAPH_HEADER_TWO); /* open a pipe to rrdtool for writing */ $rrdtool_pipe = rrd_init(); /* for each graph... */ $i = 0; $k = 0; if ((sizeof($graphs) > 0) && (sizeof($rras) > 0)) { foreach ($graphs as $graph) { check_remove($cacti_export_path . "/thumb_" . $graph["local_graph_id"] . ".png"); check_remove($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html"); /* settings for preview graphs */ $graph_data_array["graph_height"] = "100"; $graph_data_array["graph_width"] = "300"; $graph_data_array["graph_nolegend"] = true; $graph_data_array["export"] = true; $graph_data_array["export_filename"] = "thumb_" . $graph["local_graph_id"] . ".png"; rrdtool_function_graph($graph["local_graph_id"], 0, $graph_data_array, $rrdtool_pipe); $total_graphs_created++; /* generate html files for each graph */ $fp_graph_index = fopen($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html", "w"); fwrite($fp_graph_index, HTML_HEADER); fwrite($fp_graph_index, HTML_GRAPH_HEADER_ONE); fwrite($fp_graph_index, "<strong>Graph - " . $graph["title_cache"] . "</strong>"); fwrite($fp_graph_index, HTML_GRAPH_HEADER_TWO); fwrite($fp_graph_index, "<td>"); /* reset vars for actual graph image creation */ reset($rras); unset($graph_data_array); /* generate graphs for each rra */ foreach ($rras as $rra) { $graph_data_array["export"] = true; $graph_data_array["export_filename"] = "graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png"; rrdtool_function_graph($graph["local_graph_id"], $rra["id"], $graph_data_array, $rrdtool_pipe); $total_graphs_created++; /* write image related html */ fwrite($fp_graph_index, "<div align=center><img src='graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png' border=0></div>\n <div align=center><strong>" . $rra["name"] . "</strong></div><br>"); } fwrite($fp_graph_index, "</td>"); fwrite($fp_graph_index, HTML_GRAPH_FOOTER); fwrite($fp_graph_index, HTML_FOOTER); fclose($fp_graph_index); /* main graph page html */ fwrite($fp_index, "<td align='center' width='" . (98 / 2) . "%'><a href='graph_" . $graph["local_graph_id"] . ".html'><img src='thumb_" . $graph["local_graph_id"] . ".png' border='0' alt='" . $graph["title_cache"] . "'></a></td>\n"); $i++; $k++; if (($i == 2) && ($k < count($graphs))) { $i = 0; fwrite($fp_index, "</tr><tr>"); } } }else{ fwrite($fp_index, "<td><em>No Graphs Found.</em></td>"); } /* close the rrdtool pipe */ rrd_close($rrdtool_pipe); fwrite($fp_index, HTML_GRAPH_FOOTER); fwrite($fp_index, HTML_FOOTER); fclose($fp_index); } return $total_graphs_created; }
function classical_export($cacti_root_path, $cacti_export_path) { global $config; $total_graphs_created = 0; /* copy the css/images on the first time */ if (file_exists("{$cacti_export_path}/main.css") == false) { copy("{$cacti_root_path}/include/main.css", "{$cacti_export_path}/main.css"); copy("{$cacti_root_path}/images/tab_cacti.gif", "{$cacti_export_path}/tab_cacti.gif"); copy("{$cacti_root_path}/images/cacti_backdrop.gif", "{$cacti_export_path}/cacti_backdrop.gif"); copy("{$cacti_root_path}/images/transparent_line.gif", "{$cacti_export_path}/transparent_line.gif"); copy("{$cacti_root_path}/images/shadow.gif", "{$cacti_export_path}/shadow.gif"); } /* create the base directory */ if (!mkdir("{$cacti_export_path}/graphs", 0755)) { export_fatal("Create directory '{$cacti_export_path}/graphs' failed. Can not continue"); } /* if the index file already exists, delete it */ check_remove($cacti_export_path . "/index.html"); /* open pointer to the new index file */ $fp_index = fopen($cacti_export_path . "/index.html", "w"); /* get a list of all graphs that need exported */ $graphs = db_fetch_assoc("SELECT\n\t\tgraph_templates_graph.id,\n\t\tgraph_templates_graph.local_graph_id,\n\t\tgraph_templates_graph.height,\n\t\tgraph_templates_graph.width,\n\t\tgraph_templates_graph.title_cache,\n\t\tgraph_templates.name,\n\t\tgraph_local.host_id\n\t\tFROM graph_templates_graph\n\t\tLEFT JOIN graph_templates\n\t\tON (graph_templates_graph.graph_template_id=graph_templates.id)\n\t\tLEFT JOIN graph_local\n\t\tON (graph_templates_graph.local_graph_id=graph_local.id)\n\t\tWHERE graph_templates_graph.local_graph_id!=0\n\t\tAND graph_templates_graph.export='on'\n\t\tORDER BY graph_templates_graph.title_cache"); $rras = db_fetch_assoc("SELECT\n\t\trra.id,\n\t\trra.name\n\t\tFROM rra\n\t\tORDER BY steps"); /* write the html header data to the index file */ fwrite($fp_index, HTML_HEADER_CLASSIC); fwrite($fp_index, HTML_GRAPH_HEADER_ONE_CLASSIC); fwrite($fp_index, "<strong>Displaying " . sizeof($graphs) . " Exported Graph" . (sizeof($graphs) > 1 ? "s" : "") . "</strong>"); fwrite($fp_index, HTML_GRAPH_HEADER_TWO_CLASSIC); /* open a pipe to rrdtool for writing */ $rrdtool_pipe = rrd_init(); /* for each graph... */ $i = 0; $k = 0; if (sizeof($graphs) > 0 && sizeof($rras) > 0) { foreach ($graphs as $graph) { check_remove($cacti_export_path . "graphs/thumb_" . $graph["local_graph_id"] . ".png"); check_remove($cacti_export_path . "graph_" . $graph["local_graph_id"] . ".html"); /* settings for preview graphs */ $graph_data_array["graph_height"] = read_config_option("export_default_height"); $graph_data_array["graph_width"] = read_config_option("export_default_width"); $graph_data_array["graph_nolegend"] = true; $graph_data_array["export"] = true; $graph_data_array["export_filename"] = "graphs/thumb_" . $graph["local_graph_id"] . ".png"; rrdtool_function_graph($graph["local_graph_id"], 0, $graph_data_array, $rrdtool_pipe); $total_graphs_created++; /* generate html files for each graph */ if (!file_exists($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html")) { $fp_graph_index = fopen($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html", "w"); fwrite($fp_graph_index, HTML_HEADER_CLASSIC); fwrite($fp_graph_index, HTML_GRAPH_HEADER_ONE_CLASSIC); fwrite($fp_graph_index, "<strong>Graph - " . $graph["title_cache"] . "</strong>"); fwrite($fp_graph_index, HTML_GRAPH_HEADER_TWO_CLASSIC); fwrite($fp_graph_index, "<td>"); } else { $fp_graph_index = NULL; } /* reset vars for actual graph image creation */ reset($rras); unset($graph_data_array); /* generate graphs for each rra */ foreach ($rras as $rra) { $graph_data_array["export"] = true; $graph_data_array["export_filename"] = "graphs/graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png"; rrdtool_function_graph($graph["local_graph_id"], $rra["id"], $graph_data_array, $rrdtool_pipe); $total_graphs_created++; /* write image related html */ fwrite($fp_graph_index, "<div align=center><img src='graphs/graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png' border=0></div>\n\n\t\t\t\t\t<div align=center><strong>" . $rra["name"] . "</strong></div><br>"); } fwrite($fp_graph_index, "</td></table>"); fwrite($fp_graph_index, HTML_GRAPH_FOOTER_CLASSIC); fwrite($fp_graph_index, HTML_FOOTER_CLASSIC); fclose($fp_graph_index); /* main graph page html */ fwrite($fp_index, "<tr><td align='center' width='42%'><a href='graph_" . $graph["local_graph_id"] . ".html'><img src='graphs/thumb_" . $graph["local_graph_id"] . ".png' border='0' alt='" . $graph["title_cache"] . "'></a></td>\n"); $i++; $k++; if ($i == 2 && $k < count($graphs)) { $i = 0; fwrite($fp_index, "</tr><tr>"); } } } else { fwrite($fp_index, "<td><em>No Graphs Found.</em></td>"); } /* close the rrdtool pipe */ rrd_close($rrdtool_pipe); fwrite($fp_index, HTML_GRAPH_FOOTER_CLASSIC); fwrite($fp_index, HTML_FOOTER_CLASSIC); fclose($fp_index); return $total_graphs_created; }
function classical_export($cacti_root_path, $cacti_export_path) { global $config; $total_graphs_created = 0; /* copy the css/images on the first time */ if (file_exists("{$cacti_export_path}/main.css") == false) { copy("{$cacti_root_path}/include/main.css", "{$cacti_export_path}/main.css"); copy("{$cacti_root_path}/images/tab_cacti.gif", "{$cacti_export_path}/tab_cacti.gif"); copy("{$cacti_root_path}/images/cacti_backdrop.gif", "{$cacti_export_path}/cacti_backdrop.gif"); copy("{$cacti_root_path}/images/transparent_line.gif", "{$cacti_export_path}/transparent_line.gif"); copy("{$cacti_root_path}/images/shadow.gif", "{$cacti_export_path}/shadow.gif"); } /* create the base directory */ if (!is_dir("{$cacti_export_path}/graphs")) { if (!mkdir("{$cacti_export_path}/graphs", 0755)) { export_fatal("Create directory '{$cacti_export_path}/graphs' failed. Can not continue"); } } /* determine the number of columns to write */ $classic_columns = read_config_option("export_num_columns"); /* if the index file already exists, delete it */ check_remove($cacti_export_path . "/index.html"); export_log("Creating File '" . $cacti_export_path . "/index.html'"); /* open pointer to the new index file */ $fp_index = fopen($cacti_export_path . "/index.html", "w"); /* get a list of all graphs that need exported */ $exportuser = read_config_option("export_user_id"); $current_user = db_fetch_row("SELECT * FROM user_auth WHERE id=" . read_config_option("export_user_id")); $sql_where = "WHERE " . get_graph_permissions_sql($current_user["policy_graphs"], $current_user["policy_hosts"], $current_user["policy_graph_templates"]); $sql_join = "LEFT JOIN host ON (host.id=graph_local.host_id)\n\t\tLEFT JOIN graph_templates ON (graph_templates.id=graph_local.graph_template_id)\n\t\tLEFT JOIN user_auth_perms ON ((graph_templates_graph.local_graph_id=user_auth_perms.item_id AND user_auth_perms.type=1 AND user_auth_perms.user_id={$exportuser})\n\t\t OR (host.id=user_auth_perms.item_id AND user_auth_perms.type=3 AND user_auth_perms.user_id={$exportuser})\n\t\t OR (graph_templates.id=user_auth_perms.item_id AND user_auth_perms.type=4 AND user_auth_perms.user_id={$exportuser}))"; $sql_base = "FROM (graph_templates_graph,graph_local)\n\t\t{$sql_join}\n\t\t{$sql_where}\n\t\t" . (empty($sql_where) ? "WHERE" : "AND") . " graph_templates_graph.local_graph_id > 0\n\t\tAND graph_templates_graph.export='on'\n\t\tAND graph_templates_graph.local_graph_id=graph_local.id"; $graphs = db_fetch_assoc("SELECT\n\t\tgraph_templates_graph.local_graph_id,\n\t\tgraph_templates_graph.title_cache,\n\t\tgraph_templates_graph.height,\n\t\tgraph_templates_graph.width\n\t\t{$sql_base}\n\t\tGROUP BY graph_templates_graph.local_graph_id"); $rras = db_fetch_assoc("SELECT\n\t\trra.id,\n\t\trra.name\n\t\tFROM rra\n\t\tORDER BY timespan"); /* write the html header data to the index file */ fwrite($fp_index, HTML_HEADER_CLASSIC); fwrite($fp_index, HTML_GRAPH_HEADER_ONE_CLASSIC); fwrite($fp_index, "<strong>Displaying " . sizeof($graphs) . " Exported Graph" . (sizeof($graphs) > 1 ? "s" : "") . "</strong>"); fwrite($fp_index, HTML_GRAPH_HEADER_TWO_CLASSIC); /* open a pipe to rrdtool for writing */ $rrdtool_pipe = rrd_init(); /* for each graph... */ $i = 0; $k = 0; if (sizeof($graphs) > 0 && sizeof($rras) > 0) { foreach ($graphs as $graph) { check_remove($cacti_export_path . "graphs/thumb_" . $graph["local_graph_id"] . ".png"); check_remove($cacti_export_path . "graph_" . $graph["local_graph_id"] . ".html"); /* settings for preview graphs */ $graph_data_array["graph_height"] = read_config_option("export_default_height"); $graph_data_array["graph_width"] = read_config_option("export_default_width"); $graph_data_array["graph_nolegend"] = true; $graph_data_array["export"] = true; $graph_data_array["export_filename"] = "graphs/thumb_" . $graph["local_graph_id"] . ".png"; export_log("Creating Graph '" . $cacti_export_path . $graph_data_array["export_filename"] . "'"); rrdtool_function_graph($graph["local_graph_id"], 0, $graph_data_array, $rrdtool_pipe); $total_graphs_created++; /* generate html files for each graph */ if (!file_exists($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html")) { export_log("Creating File '" . $cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html"); $fp_graph_index = fopen($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html", "w"); fwrite($fp_graph_index, HTML_HEADER_CLASSIC); fwrite($fp_graph_index, HTML_GRAPH_HEADER_ONE_CLASSIC); fwrite($fp_graph_index, "<strong>Graph - " . $graph["title_cache"] . "</strong>"); fwrite($fp_graph_index, HTML_GRAPH_HEADER_TWO_CLASSIC); fwrite($fp_graph_index, "<td>"); } else { $fp_graph_index = NULL; } /* reset vars for actual graph image creation */ reset($rras); unset($graph_data_array); /* generate graphs for each rra */ foreach ($rras as $rra) { $graph_data_array["export"] = true; $graph_data_array["export_filename"] = "graphs/graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png"; export_log("Creating Graph '" . $cacti_export_path . $graph_data_array["export_filename"] . "'"); rrdtool_function_graph($graph["local_graph_id"], $rra["id"], $graph_data_array, $rrdtool_pipe); $total_graphs_created++; /* write image related html */ fwrite($fp_graph_index, "<div align=center><img src='graphs/graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png' border=0></div>\n\n\t\t\t\t\t<div align=center><strong>" . $rra["name"] . "</strong></div><br>"); } fwrite($fp_graph_index, "</td></table>"); fwrite($fp_graph_index, HTML_GRAPH_FOOTER_CLASSIC); fwrite($fp_graph_index, HTML_FOOTER_CLASSIC); fclose($fp_graph_index); /* main graph page html */ fwrite($fp_index, "<td align='center' width='" . round(100 / $classic_columns, 0) . "%'><a href='graph_" . $graph["local_graph_id"] . ".html'><img src='graphs/thumb_" . $graph["local_graph_id"] . ".png' border='0' alt='" . $graph["title_cache"] . "'></a></td>\n"); $i++; $k++; if ($i % $classic_columns == 0 && $k < count($graphs)) { fwrite($fp_index, "</tr><tr>"); } } } else { fwrite($fp_index, "<td><em>No Graphs Found.</em></td>"); } /* close the rrdtool pipe */ rrd_close($rrdtool_pipe); fwrite($fp_index, HTML_GRAPH_FOOTER_CLASSIC); fwrite($fp_index, HTML_FOOTER_CLASSIC); fclose($fp_index); return $total_graphs_created; }
function export() { require_once(CACTI_BASE_PATH . "/lib/sys/rrd.php"); /* count how many graphs are created */ $total_graphs_created = 0; export_log(_("Running graph export")); $cacti_root_path = CACTI_BASE_PATH; $cacti_export_path = read_config_option("path_html_export"); /* copy the css/images on the first time */ if (file_exists("$cacti_export_path/main.css") == false) { copy("$cacti_root_path/" . html_get_theme_css(), "$cacti_export_path/main.css"); copy("$cacti_root_path/themes" . read_config_option("current_theme") . "/images/tab_cacti.gif", "$cacti_export_path/tab_cacti.gif"); copy("$cacti_root_path/themes" . read_config_option("current_theme") . "/images/cacti_backdrop.gif", "$cacti_export_path/cacti_backdrop.gif"); copy("$cacti_root_path/themes" . read_config_option("current_theme") . "/images/transparent_line.gif", "$cacti_export_path/transparent_line.gif"); copy("$cacti_root_path/themes" . read_config_option("current_theme") . "/images/shadow.gif", "$cacti_export_path/shadow.gif"); } /* if the index file already exists, delete it */ check_remove($cacti_export_path . "/index.html"); /* open pointer to the new index file */ $fp_index = fopen($cacti_export_path . "/index.html", "w"); /* get a list of all graphs that need exported */ $graphs = db_fetch_assoc("select graph_templates_graph.id, graph_templates_graph.local_graph_id, graph_templates_graph.height, graph_templates_graph.width, graph_templates_graph.title_cache, graph_templates.name, graph_local.host_id from graph_templates_graph left join graph_templates on (graph_templates_graph.graph_template_id=graph_templates.id) left join graph_local on (graph_templates_graph.local_graph_id=graph_local.id) where graph_templates_graph.local_graph_id!=0 and graph_templates_graph.export='on' order by graph_templates_graph.title_cache"); $rras = db_fetch_assoc("select rra.id, rra.name from rra order by timespan"); /* write the html header data to the index file */ fwrite($fp_index, HTML_HEADER); fwrite($fp_index, HTML_GRAPH_HEADER_ONE); fwrite($fp_index, "<strong>" . sprintf(_("Displaying '%i' Exported Graph%s"), sizeof($graphs), ((sizeof($graphs) > 1) ? "s" : "")) . "</strong>"); fwrite($fp_index, HTML_GRAPH_HEADER_TWO); /* open a pipe to rrdtool for writing */ $rrdtool_pipe = rrd_init(); /* for each graph... */ $i = 0; $k = 0; if ((sizeof($graphs) > 0) && (sizeof($rras) > 0)) { foreach ($graphs as $graph) { check_remove($cacti_export_path . "/thumb_" . $graph["local_graph_id"] . ".png"); check_remove($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html"); /* settings for preview graphs */ $graph_data_array["graph_height"] = "100"; $graph_data_array["graph_width"] = "300"; $graph_data_array["graph_nolegend"] = true; $graph_data_array["export"] = true; $graph_data_array["export_filename"] = "thumb_" . $graph["local_graph_id"] . ".png"; rrdtool_function_graph($graph["local_graph_id"], 0, $graph_data_array, $rrdtool_pipe); $total_graphs_created++; /* generate html files for each graph */ $fp_graph_index = fopen($cacti_export_path . "/graph_" . $graph["local_graph_id"] . ".html", "w"); fwrite($fp_graph_index, HTML_HEADER); fwrite($fp_graph_index, HTML_GRAPH_HEADER_ONE); fwrite($fp_graph_index, "<strong>" . _("Graph") . " - " . $graph["title_cache"] . "</strong>"); fwrite($fp_graph_index, HTML_GRAPH_HEADER_TWO); fwrite($fp_graph_index, "<td>"); /* reset vars for actual graph image creation */ reset($rras); unset($graph_data_array); /* generate graphs for each rra */ foreach ($rras as $rra) { $graph_data_array["export"] = true; $graph_data_array["export_filename"] = "graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png"; rrdtool_function_graph($graph["local_graph_id"], $rra["id"], $graph_data_array, $rrdtool_pipe); $total_graphs_created++; /* write image related html */ fwrite($fp_graph_index, "<div align=center><img src='graph_" . $graph["local_graph_id"] . "_" . $rra["id"] . ".png' border=0></div>\n <div align=center><strong>" . $rra["name"] . "</strong></div><br>"); } fwrite($fp_graph_index, "</td>"); fwrite($fp_graph_index, HTML_GRAPH_FOOTER); fwrite($fp_graph_index, HTML_FOOTER); fclose($fp_graph_index); /* main graph page html */ fwrite($fp_index, "<td align='center' width='" . (98 / 2) . "%'><a href='graph_" . $graph["local_graph_id"] . ".html'><img src='thumb_" . $graph["local_graph_id"] . ".png' border='0' alt='" . $graph["title_cache"] . "'></a></td>\n"); $i++; $k++; if (($i == 2) && ($k < count($graphs))) { $i = 0; fwrite($fp_index, "</tr><tr>"); } } }else{ fwrite($fp_index, "<td><em>" . _("No Graphs Found.") . "</em></td>"); } /* close the rrdtool pipe */ rrd_close($rrdtool_pipe); fwrite($fp_index, HTML_GRAPH_FOOTER); fwrite($fp_index, HTML_FOOTER); fclose($fp_index); return $total_graphs_created; }