summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/status_rrd_graph.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/local/www/status_rrd_graph.php')
-rw-r--r--src/usr/local/www/status_rrd_graph.php834
1 files changed, 834 insertions, 0 deletions
diff --git a/src/usr/local/www/status_rrd_graph.php b/src/usr/local/www/status_rrd_graph.php
new file mode 100644
index 0000000..ae9c709
--- /dev/null
+++ b/src/usr/local/www/status_rrd_graph.php
@@ -0,0 +1,834 @@
+<?php
+/* $Id$ */
+/*
+ status_rrd_graph.php
+ Part of pfSense
+ Copyright (C) 2007 Seth Mos <seth.mos@dds.nl>
+ Copyright (C) 2013-2015 Electric Sheep Fencing, LP
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+/*
+ pfSense_MODULE: system
+*/
+
+##|+PRIV
+##|*IDENT=page-status-rrdgraphs
+##|*NAME=Status: RRD Graphs page
+##|*DESCR=Allow access to the 'Status: RRD Graphs' page.
+##|*MATCH=status_rrd_graph.php*
+##|-PRIV
+
+require("guiconfig.inc");
+require_once("filter.inc");
+require("shaper.inc");
+require_once("rrd.inc");
+
+unset($input_errors);
+
+/* if the rrd graphs are not enabled redirect to settings page */
+if (!isset($config['rrd']['enable'])) {
+ header("Location: status_rrd_graph_settings.php");
+}
+
+$rrddbpath = "/var/db/rrd/";
+chdir($rrddbpath);
+$databases = glob("*.rrd");
+
+
+if ($_GET['cat']) {
+ $curcat = htmlspecialchars($_GET['cat']);
+} else {
+ if (!empty($config['rrd']['category'])) {
+ $curcat = $config['rrd']['category'];
+ } else {
+ $curcat = "system";
+ }
+}
+
+if ($_GET['zone']) {
+ $curzone = $_GET['zone'];
+} else {
+ $curzone = '';
+}
+
+if ($_GET['period']) {
+ $curperiod = $_GET['period'];
+} else {
+ if (!empty($config['rrd']['period'])) {
+ $curperiod = $config['rrd']['period'];
+ } else {
+ $curperiod = "absolute";
+ }
+}
+
+if ($_GET['option']) {
+ $curoption = $_GET['option'];
+} else {
+ switch ($curcat) {
+ case "system":
+ $curoption = "processor";
+ break;
+ case "queues":
+ $curoption = "queues";
+ break;
+ case "queuedrops":
+ $curoption = "queuedrops";
+ break;
+ case "quality":
+ foreach ($databases as $database) {
+ if (preg_match("/[-]quality\.rrd/i", $database)) {
+ /* pick off the 1st database we find that matches the quality graph */
+ $name = explode("-", $database);
+ $curoption = "$name[0]";
+ continue 2;
+ }
+ }
+ case "wireless":
+ foreach ($databases as $database) {
+ if (preg_match("/[-]wireless\.rrd/i", $database)) {
+ /* pick off the 1st database we find that matches the wireless graph */
+ $name = explode("-", $database);
+ $curoption = "$name[0]";
+ continue 2;
+ }
+ }
+ case "cellular":
+ foreach ($databases as $database) {
+ if (preg_match("/[-]cellular\.rrd/i", $database)) {
+ /* pick off the 1st database we find that matches the celullar graph */
+ $name = explode("-", $database);
+ $curoption = "$name[0]";
+ continue 2;
+ }
+ }
+ case "vpnusers":
+ foreach ($databases as $database) {
+ if (preg_match("/[-]vpnusers\.rrd/i", $database)) {
+ /* pick off the 1st database we find that matches the VPN graphs */
+ $name = explode("-", $database);
+ $curoption = "$name[0]";
+ continue 2;
+ }
+ }
+ case "captiveportal":
+ $curoption = "allgraphs";
+ break;
+ case "ntpd":
+ if (isset($config['ntpd']['statsgraph'])) {
+ $curoption = "allgraphs";
+ } else {
+ $curoption = "processor";
+ $curcat = "system";
+ }
+ break;
+ default:
+ $curoption = "wan";
+ break;
+ }
+}
+
+$now = time();
+if ($curcat == "custom") {
+ if (is_numeric($_GET['start'])) {
+ if ($start < ($now - (3600 * 24 * 365 * 5))) {
+ $start = $now - (8 * 3600);
+ }
+ $start = $_GET['start'];
+ } else if ($_GET['start']) {
+ $start = strtotime($_GET['start']);
+ if ($start === FALSE || $start === -1) {
+ $input_errors[] = gettext("Invalid start date/time:") . " '{$_GET['start']}'";
+ $start = $now - (8 * 3600);
+ }
+ } else {
+ $start = $now - (8 * 3600);
+ }
+}
+
+if (is_numeric($_GET['end'])) {
+ $end = $_GET['end'];
+} else if ($_GET['end']) {
+ $end = strtotime($_GET['end']);
+ if ($end === FALSE || $end === -1) {
+ $input_errors[] = gettext("Invalid end date/time:") . " '{$_GET['end']}'";
+ $end = $now;
+ }
+} else {
+ $end = $now;
+}
+
+/* this should never happen */
+if ($end < $start) {
+ log_error("start $start is smaller than end $end");
+ $end = $now;
+}
+
+$seconds = $end - $start;
+
+$styles = array('inverse' => gettext('Inverse'),
+ 'absolute' => gettext('Absolute'));
+
+// Set default and override later
+$curstyle = "inverse";
+
+if ($_GET['style']) {
+ foreach ($styles as $style) {
+ if (strtoupper($style) == strtoupper($_GET['style'])) {
+ $curstyle = $_GET['style'];
+ }
+ }
+} else {
+ if (!empty($config['rrd']['style'])) {
+ $curstyle = $config['rrd']['style'];
+ } else {
+ $curstyle = "inverse";
+ }
+}
+
+/* sort names reverse so WAN comes first */
+rsort($databases);
+
+/* these boilerplate databases are required for the other menu choices */
+$dbheader = array("allgraphs-traffic.rrd",
+ "allgraphs-quality.rrd",
+ "allgraphs-wireless.rrd",
+ "allgraphs-cellular.rrd",
+ "allgraphs-vpnusers.rrd",
+ "allgraphs-packets.rrd",
+ "system-allgraphs.rrd",
+ "system-throughput.rrd",
+ "outbound-quality.rrd",
+ "outbound-packets.rrd",
+ "outbound-traffic.rrd");
+
+/* additional menu choices for the custom tab */
+$dbheader_custom = array("system-throughput.rrd");
+
+foreach ($databases as $database) {
+ if (stristr($database, "-wireless")) {
+ $wireless = true;
+ }
+ if (stristr($database, "-queues")) {
+ $queues = true;
+ }
+ if (stristr($database, "-cellular") && !empty($config['ppps'])) {
+ $cellular = true;
+ }
+ if (stristr($database, "-vpnusers")) {
+ $vpnusers = true;
+ }
+ if (stristr($database, "captiveportal-") && is_array($config['captiveportal'])) {
+ $captiveportal = true;
+ }
+ if (stristr($database, "ntpd") && isset($config['ntpd']['statsgraph'])) {
+ $ntpd = true;
+ }
+}
+/* append the existing array to the header */
+$ui_databases = array_merge($dbheader, $databases);
+$custom_databases = array_merge($dbheader_custom, $databases);
+
+$graphs = array("eighthour", "day", "week", "month", "quarter", "year", "fouryear");
+$periods = array("absolute" => gettext("Absolute Timespans"), "current" => gettext("Current Period"), "previous" => gettext("Previous Period"));
+$graph_length = array(
+ "eighthour" => 28800,
+ "day" => 86400,
+ "week" => 604800,
+ "month" => 2678400,
+ "quarter" => 7948800,
+ "year" => 31622400,
+ "fouryear" => 126230400);
+
+$pgtitle = array(gettext("Status"), gettext("RRD Graphs"));
+
+$closehead = false;
+
+/* Load all CP zones */
+if ($captiveportal && is_array($config['captiveportal'])) {
+ $cp_zones_tab_array = array();
+ foreach ($config['captiveportal'] as $cpkey => $cp) {
+ if (!isset($cp['enable'])) {
+ continue;
+ }
+
+ if ($curzone == '') {
+ $tabactive = true;
+ $curzone = $cpkey;
+ } elseif ($curzone == $cpkey) {
+ $tabactive = true;
+ } else {
+ $tabactive = false;
+ }
+
+ $cp_zones_tab_array[] = array($cp['zone'], $tabactive, "status_rrd_graph.php?cat=captiveportal&zone=$cpkey");
+ }
+}
+
+include("head.inc");
+?>
+
+<?php if ($curcat === "custom") { ?>
+ <link rel="stylesheet" type="text/css" href="/javascript/jquery-ui-timepicker-addon/css/jquery-ui-timepicker-addon.css" />
+ <?php if (file_exists("{$g['www_path']}/themes/{$g['theme']}/jquery-ui-1.11.1.css")) { ?>
+ <link rel="stylesheet" type="text/css" href="/themes/<?= $g['theme'] ?>/jquery-ui-1.11.1.css" />
+ <?php } else { ?>
+ <link rel="stylesheet" type="text/css" href="/javascript/jquery/jquery-ui-1.11.1.css" />
+ <?php } ?>
+ <script type="text/javascript" src="/javascript/jquery-ui-timepicker-addon/js/jquery-ui-timepicker-addon.js"></script>
+ <script type="text/javascript">
+ //<![CDATA[
+ jQuery(function ($) {
+ var options = {
+ dateFormat: 'mm/dd/yy',
+ timeFormat: 'hh:mm:ss',
+ showSecond: true
+ };
+ $("#startDateTime").datetimepicker(options);
+ $("#endDateTime").datetimepicker(options);
+ });
+ //]]>
+ </script>
+<?php } ?>
+
+<?php
+
+function get_dates($curperiod, $graph) {
+ global $graph_length;
+ $now = time();
+ $end = $now;
+
+ if ($curperiod == "absolute") {
+ $start = $end - $graph_length[$graph];
+ } else {
+ $curyear = date('Y', $now);
+ $curmonth = date('m', $now);
+ $curweek = date('W', $now);
+ $curweekday = date('N', $now) - 1; // We want to start on monday
+ $curday = date('d', $now);
+ $curhour = date('G', $now);
+
+ switch ($curperiod) {
+ case "previous":
+ $offset = -1;
+ break;
+ default:
+ $offset = 0;
+ }
+ switch ($graph) {
+ case "eighthour":
+ if ($curhour < 24) {
+ $starthour = 16;
+ }
+ if ($curhour < 16) {
+ $starthour = 8;
+ }
+ if ($curhour < 8) {
+ $starthour = 0;
+ }
+
+ switch ($offset) {
+ case 0:
+ $houroffset = $starthour;
+ break;
+ default:
+ $houroffset = $starthour + ($offset * 8);
+ break;
+ }
+ $start = mktime($houroffset, 0, 0, $curmonth, $curday, $curyear);
+ if ($offset != 0) {
+ $end = mktime(($houroffset + 8), 0, 0, $curmonth, $curday, $curyear);
+ }
+ break;
+ case "day":
+ $start = mktime(0, 0, 0, $curmonth, ($curday + $offset), $curyear);
+ if ($offset != 0) {
+ $end = mktime(0, 0, 0, $curmonth, (($curday + $offset) + 1), $curyear);
+ }
+ break;
+ case "week":
+ switch ($offset) {
+ case 0:
+ $weekoffset = 0;
+ break;
+ default:
+ $weekoffset = ($offset * 7) - 7;
+ break;
+ }
+ $start = mktime(0, 0, 0, $curmonth, (($curday - $curweekday) + $weekoffset), $curyear);
+ if ($offset != 0) {
+ $end = mktime(0, 0, 0, $curmonth, (($curday - $curweekday) + $weekoffset + 7), $curyear);
+ }
+ break;
+ case "month":
+ $start = mktime(0, 0, 0, ($curmonth + $offset), 0, $curyear);
+ if ($offset != 0) {
+ $end = mktime(0, 0, 0, (($curmonth + $offset) + 1), 0, $curyear);
+ }
+ break;
+ case "quarter":
+ $start = mktime(0, 0, 0, (($curmonth - 2) + $offset), 0, $curyear);
+ if ($offset != 0) {
+ $end = mktime(0, 0, 0, (($curmonth + $offset) + 1), 0, $curyear);
+ }
+ break;
+ case "year":
+ $start = mktime(0, 0, 0, 1, 0, ($curyear + $offset));
+ if ($offset != 0) {
+ $end = mktime(0, 0, 0, 1, 0, (($curyear + $offset) +1));
+ }
+ break;
+ case "fouryear":
+ $start = mktime(0, 0, 0, 1, 0, (($curyear - 3) + $offset));
+ if ($offset != 0) {
+ $end = mktime(0, 0, 0, 1, 0, (($curyear + $offset) +1));
+ }
+ break;
+ }
+ }
+ // echo "start $start ". date('l jS \of F Y h:i:s A', $start) .", end $end ". date('l jS \of F Y h:i:s A', $end) ."<br />";
+ $dates = array();
+ $dates['start'] = $start;
+ $dates['end'] = $end;
+ return $dates;
+}
+
+?>
+</head>
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+<?php include("fbegin.inc"); ?>
+<?php if ($input_errors && count($input_errors)) { print_input_errors($input_errors); } ?>
+<form name="form1" action="status_rrd_graph.php" method="get">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="rrd graphs">
+ <tr>
+ <td>
+ <input type="hidden" name="cat" value="<?php echo "$curcat"; ?>" />
+ <?php
+ $tab_array = array();
+ if ($curcat == "system") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("System"), $tabactive, "status_rrd_graph.php?cat=system");
+ if ($curcat == "traffic") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("Traffic"), $tabactive, "status_rrd_graph.php?cat=traffic");
+ if ($curcat == "packets") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("Packets"), $tabactive, "status_rrd_graph.php?cat=packets");
+ if ($curcat == "quality") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("Quality"), $tabactive, "status_rrd_graph.php?cat=quality");
+ if ($queues) {
+ if ($curcat == "queues") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("Queues"), $tabactive, "status_rrd_graph.php?cat=queues");
+ if ($curcat == "queuedrops") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("QueueDrops"), $tabactive, "status_rrd_graph.php?cat=queuedrops");
+ }
+ if ($wireless) {
+ if ($curcat == "wireless") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("Wireless"), $tabactive, "status_rrd_graph.php?cat=wireless");
+ }
+ if ($cellular) {
+ if ($curcat == "cellular") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("Cellular"), $tabactive, "status_rrd_graph.php?cat=cellular");
+ }
+ if ($vpnusers) {
+ if ($curcat == "vpnusers") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array("VPN", $tabactive, "status_rrd_graph.php?cat=vpnusers");
+ }
+ if ($captiveportal) {
+ if ($curcat == "captiveportal") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array("Captive Portal", $tabactive, "status_rrd_graph.php?cat=captiveportal");
+ }
+ if ($ntpd) {
+ if ($curcat == "ntpd") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array("NTP", $tabactive, "status_rrd_graph.php?cat=ntpd");
+ }
+ if ($curcat == "custom") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("Custom"), $tabactive, "status_rrd_graph.php?cat=custom");
+ if ($curcat == "settings") {
+ $tabactive = True;
+ } else {
+ $tabactive = False;
+ }
+ $tab_array[] = array(gettext("Settings"), $tabactive, "status_rrd_graph_settings.php");
+ display_top_tabs($tab_array);
+ ?>
+ </td>
+ </tr>
+<?php if ($curcat == "captiveportal") : ?>
+ <tr>
+ <td class="tabnavtbl">
+ <?php display_top_tabs($cp_zones_tab_array); ?>
+ </td>
+ </tr>
+<?php endif; ?>
+ <tr>
+ <td>
+ <div id="mainarea">
+ <table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="0" summary="main area">
+ <tr>
+ <td colspan="2" class="list"><p><b><?=gettext("Note: Change of color and/or style may not take effect until the next refresh");?></b></p></td>
+ </tr>
+ <tr>
+ <td colspan="2" class="list">
+ <?=gettext("Graphs:");?>
+ <?php if (!empty($curzone)): ?>
+ <input type="hidden" name="zone" value="<?= htmlspecialchars($curzone) ?>" />
+ <?php endif; ?>
+ <select name="option" class="formselect" style="z-index: -10;" onchange="document.form1.submit()">
+ <?php
+ if ($curcat == "custom") {
+ foreach ($custom_databases as $db => $database) {
+ $optionc = explode("-", $database);
+ $friendly = convert_friendly_interface_to_friendly_descr(strtolower($optionc[0]));
+ if (empty($friendly)) {
+ $friendly = $optionc[0];
+ }
+ $search = array("-", ".rrd", $optionc[0]);
+ $replace = array(" :: ", "", $friendly);
+ echo "<option value=\"{$database}\"";
+ $prettyprint = ucwords(str_replace($search, $replace, $database));
+ if ($curoption == $database) {
+ echo " selected=\"selected\"";
+ }
+ echo ">" . htmlspecialchars($prettyprint) . "</option>\n";
+ }
+ }
+ foreach ($ui_databases as $db => $database) {
+ if (!preg_match("/($curcat)/i", $database)) {
+ continue;
+ }
+
+ if (($curcat == "captiveportal") && !empty($curzone) && !preg_match("/captiveportal-{$curzone}/i", $database)) {
+ continue;
+ }
+
+ $optionc = explode("-", $database);
+ $search = array("-", ".rrd", $optionc);
+ $replace = array(" :: ", "", $friendly);
+
+ switch ($curcat) {
+ case "captiveportal":
+ $optionc = str_replace($search, $replace, $optionc[2]);
+ echo "<option value=\"$optionc\"";
+ $prettyprint = ucwords(str_replace($search, $replace, $optionc));
+ break;
+ case "system":
+ $optionc = str_replace($search, $replace, $optionc[1]);
+ echo "<option value=\"$optionc\"";
+ $prettyprint = ucwords(str_replace($search, $replace, $optionc));
+ break;
+ default:
+ /* Deduce a interface if possible and use the description */
+ $optionc = "$optionc[0]";
+ $friendly = convert_friendly_interface_to_friendly_descr(strtolower($optionc));
+ if (empty($friendly)) {
+ $friendly = $optionc;
+ }
+ $search = array("-", ".rrd", $optionc);
+ $replace = array(" :: ", "", $friendly);
+ echo "<option value=\"$optionc\"";
+ $prettyprint = ucwords(str_replace($search, $replace, $friendly));
+ }
+ if ($curoption == $optionc) {
+ echo " selected=\"selected\"";
+ }
+ echo ">" . htmlspecialchars($prettyprint) . "</option>\n";
+ }
+ ?>
+ </select>
+
+ <?=gettext("Style:");?>
+ <select name="style" class="formselect" style="z-index: -10;" onchange="document.form1.submit()">
+ <?php
+ foreach ($styles as $style => $styled) {
+ echo "<option value=\"$style\"";
+ if ($style == $curstyle) {
+ echo " selected=\"selected\"";
+ }
+ echo ">" . htmlspecialchars($styled) . "</option>\n";
+ }
+ ?>
+ </select>
+
+<?php
+ if ($curcat == "custom") {
+ // Custom tab displays start and end time selectors.
+ $tz = date_default_timezone_get();
+ $tz_msg = gettext("Enter date and/or time. Current timezone:") . " $tz";
+ $start_fmt = strftime("%m/%d/%Y %H:%M:%S", $start);
+ $end_fmt = strftime("%m/%d/%Y %H:%M:%S", $end);
+?>
+ <?=gettext("Start:");?>
+ <input id="startDateTime" title="<?= htmlentities($tz_msg); ?>." type="text" name="start" class="formfld unknown" size="24" value="<?= htmlentities($start_fmt); ?>" />
+ <?=gettext("End:");?>
+ <input id="endDateTime" title="<?= htmlentities($tz_msg); ?>." type="text" name="end" class="formfld unknown" size="24" value="<?= htmlentities($end_fmt); ?>" />
+ <input type="submit" name="Submit" value="<?=gettext("Go"); ?>" />
+<?php
+ } else {
+ // Not on the custom tab - show the Period selector
+?>
+ <?=gettext("Period:");?>
+ <select name="period" class="formselect" style="z-index: -10;" onchange="document.form1.submit()">
+ <?php
+ foreach ($periods as $period => $value) {
+ echo "<option value=\"$period\"";
+ if ($period == $curperiod) {
+ echo " selected=\"selected\"";
+ }
+ echo ">" . htmlspecialchars($value) . "</option>\n";
+ }
+ ?>
+ </select>
+<?php
+ }
+?>
+ </td>
+ </tr>
+<?php
+ if ($curcat == "custom") {
+ // Insert the chosen graph
+ $curdatabase = $curoption;
+ $graph = "custom-$curdatabase";
+ if (in_array($curdatabase, $custom_databases)) {
+ $id = "{$graph}-{$curoption}-{$curdatabase}";
+ $id = preg_replace('/\./', '_', $id);
+
+ echo "<tr><td colspan=\"2\" class=\"list\">\n";
+ echo "<img border=\"0\" name=\"{$id}\" ";
+ echo "id=\"{$id}\" alt=\"$prettydb Graph\" ";
+ echo "src=\"status_rrd_graph_img.php?start={$start}&amp;end={$end}&amp;database={$curdatabase}&amp;style={$curstyle}&amp;graph={$graph}\" />\n";
+ echo "<br /><hr /><br />\n";
+ echo "</td></tr>\n";
+ }
+ } else {
+ // Insert each of the graphs for the various set time periods
+ foreach ($graphs as $graph) {
+ /* check which databases are valid for our category */
+ foreach ($ui_databases as $curdatabase) {
+ if (!preg_match("/($curcat)/i", $curdatabase)) {
+ continue;
+ }
+
+ if (($curcat == "captiveportal") && !empty($curzone) && !preg_match("/captiveportal-{$curzone}/i", $curdatabase)) {
+ continue;
+ }
+
+ $optionc = explode("-", $curdatabase);
+ $search = array("-", ".rrd", $optionc);
+ $replace = array(" :: ", "", $friendly);
+ switch ($curoption) {
+ case "outbound":
+ /* make sure we do not show the placeholder databases in the outbound view */
+ if ((stristr($curdatabase, "outbound")) || (stristr($curdatabase, "allgraphs"))) {
+ continue 2;
+ }
+ /* only show interfaces with a gateway */
+ $optionc = "$optionc[0]";
+ if (!interface_has_gateway($optionc)) {
+ if (!isset($gateways_arr)) {
+ if (preg_match("/quality/i", $curdatabase)) {
+ $gateways_arr = return_gateways_array();
+ } else {
+ $gateways_arr = array();
+ }
+ }
+ $found_gateway = false;
+ foreach ($gateways_arr as $gw) {
+ if ($gw['name'] == $optionc) {
+ $found_gateway = true;
+ break;
+ }
+ }
+ if (!$found_gateway) {
+ continue 2;
+ }
+ }
+ if (!preg_match("/(^$optionc-|-$optionc\\.)/i", $curdatabase)) {
+ continue 2;
+ }
+ break;
+ case "allgraphs":
+ /* make sure we do not show the placeholder databases in the all view */
+ if ((stristr($curdatabase, "outbound")) || (stristr($curdatabase, "allgraphs"))) {
+ continue 2;
+ }
+ break;
+ default:
+ /* just use the name here */
+ if (!preg_match("/(^$curoption-|-$curoption\\.)/i", $curdatabase)) {
+ continue 2;
+ }
+ }
+ if (in_array($curdatabase, $ui_databases)) {
+ $id = "{$graph}-{$curoption}-{$curdatabase}";
+ $id = preg_replace('/\./', '_', $id);
+
+ $dates = get_dates($curperiod, $graph);
+ $start = $dates['start'];
+ $end = $dates['end'];
+ echo "<tr><td colspan=\"2\" class=\"list\">\n";
+ echo "<img border=\"0\" name=\"{$id}\" ";
+ echo "id=\"{$id}\" alt=\"$prettydb Graph\" ";
+ echo "src=\"status_rrd_graph_img.php?start={$start}&amp;end={$end}&amp;database={$curdatabase}&amp;style={$curstyle}&amp;graph={$graph}\" />\n";
+ echo "<br /><hr /><br />\n";
+ echo "</td></tr>\n";
+ }
+ }
+ }
+ }
+?>
+ <tr>
+ <td colspan="2" class="list">
+ <script type="text/javascript">
+ //<![CDATA[
+ function update_graph_images() {
+ //alert('updating');
+ var randomid = Math.floor(Math.random()*11);
+ <?php
+ foreach ($graphs as $graph) {
+ /* check which databases are valid for our category */
+ foreach ($ui_databases as $curdatabase) {
+ if (!stristr($curdatabase, $curcat)) {
+ continue;
+ }
+ $optionc = explode("-", $curdatabase);
+ $search = array("-", ".rrd", $optionc);
+ $replace = array(" :: ", "", $friendly);
+ switch ($curoption) {
+ case "outbound":
+ /* make sure we do not show the placeholder databases in the outbound view */
+ if ((stristr($curdatabase, "outbound")) || (stristr($curdatabase, "allgraphs"))) {
+ continue 2;
+ }
+ /* only show interfaces with a gateway */
+ $optionc = "$optionc[0]";
+ if (!interface_has_gateway($optionc)) {
+ if (!isset($gateways_arr)) {
+ if (preg_match("/quality/i", $curdatabase)) {
+ $gateways_arr = return_gateways_array();
+ } else {
+ $gateways_arr = array();
+ }
+ }
+ $found_gateway = false;
+ foreach ($gateways_arr as $gw) {
+ if ($gw['name'] == $optionc) {
+ $found_gateway = true;
+ break;
+ }
+ }
+ if (!$found_gateway) {
+ continue 2;
+ }
+ }
+ if (!preg_match("/(^$optionc-|-$optionc\\.)/i", $curdatabase)) {
+ continue 2;
+ }
+ break;
+ case "allgraphs":
+ /* make sure we do not show the placeholder databases in the all view */
+ if ((stristr($curdatabase, "outbound")) || (stristr($curdatabase, "allgraphs"))) {
+ continue 2;
+ }
+ break;
+ default:
+ /* just use the name here */
+ if (!preg_match("/(^$curoption-|-$curoption\\.)/i", $curdatabase)) {
+ continue 2;
+ }
+ }
+ $dates = get_dates($curperiod, $graph);
+ $start = $dates['start'];
+ if ($curperiod == "current") {
+ $end = $dates['end'];
+ }
+ /* generate update events utilizing jQuery('') feature */
+ $id = "{$graph}-{$curoption}-{$curdatabase}";
+ $id = preg_replace('/\./', '_', $id);
+
+ echo "\n";
+ echo "\t\tjQuery('#{$id}').attr('src','status_rrd_graph_img.php?start={$start}&graph={$graph}&database={$curdatabase}&style={$curstyle}&tmp=' + randomid);\n";
+ }
+ }
+ ?>
+ window.setTimeout('update_graph_images()', 355000);
+ }
+ window.setTimeout('update_graph_images()', 355000);
+ //]]>
+ </script>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </table>
+</form>
+<?php include("fend.inc"); ?>
+</body>
+</html>
OpenPOWER on IntegriCloud