aboutsummaryrefslogtreecommitdiffstats
path: root/config/mailreport/status_mail_report_add_graph.php
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2011-07-19 17:13:47 -0400
committerjim-p <jimp@pfsense.org>2011-07-19 17:13:47 -0400
commit6eb2826c34930dbda15512f1d64db00a7c7f3859 (patch)
tree9dfae4e4680cd60d62f5f94b3d17c887be798868 /config/mailreport/status_mail_report_add_graph.php
parent45d0772b631b7cf8ca286b273f1edacd45fc234b (diff)
downloadpfsense-packages-6eb2826c34930dbda15512f1d64db00a7c7f3859.tar.gz
pfsense-packages-6eb2826c34930dbda15512f1d64db00a7c7f3859.tar.bz2
pfsense-packages-6eb2826c34930dbda15512f1d64db00a7c7f3859.zip
Add mailreport package for periodic e-mail of RRD graphs. First rev.
Diffstat (limited to 'config/mailreport/status_mail_report_add_graph.php')
-rw-r--r--config/mailreport/status_mail_report_add_graph.php266
1 files changed, 266 insertions, 0 deletions
diff --git a/config/mailreport/status_mail_report_add_graph.php b/config/mailreport/status_mail_report_add_graph.php
new file mode 100644
index 00000000..17d7731c
--- /dev/null
+++ b/config/mailreport/status_mail_report_add_graph.php
@@ -0,0 +1,266 @@
+<?php
+/* $Id$ */
+/*
+ status_rrd_graph.php
+ Part of pfSense
+ Copyright (C) 2011 Jim Pingle <jimp@pfsense.org>
+ Portions Copyright (C) 2007-2011 Seth Mos <seth.mos@dds.nl>
+ 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");
+require_once("mail_reports.inc");
+
+/* if the rrd graphs are not enabled redirect to settings page */
+if(! isset($config['rrd']['enable'])) {
+ header("Location: status_rrd_graph_settings.php");
+}
+
+$reportid = $_GET['reportid'];
+if (isset($_POST['reportid']))
+ $reportid = $_POST['reportid'];
+
+$id = $_GET['id'];
+if (isset($_POST['id']))
+ $id = $_POST['id'];
+
+if (!is_array($config['mailreports']['schedule']))
+ $config['mailreports']['schedule'] = array();
+
+$a_mailreports = &$config['mailreports']['schedule'];
+
+if (!isset($reportid) || !isset($a_mailreports[$reportid])) {
+ header("Location: status_mail_report.php");
+ exit;
+}
+
+if (!is_array($a_mailreports[$reportid]['row']))
+ $a_mailreports[$reportid]['row'] = array();
+$a_graphs = $a_mailreports[$reportid]['row'];
+
+if (isset($id) && $a_graphs[$id]) {
+ $pconfig = $a_graphs[$id];
+} else {
+ $pconfig = array();
+}
+
+if (isset($id) && !($a_graphs[$id])) {
+ header("Location: status_mail_report_edit.php?id={$reportid}");
+ exit;
+}
+
+
+
+
+$rrddbpath = "/var/db/rrd/";
+chdir($rrddbpath);
+$databases = glob("*.rrd");
+
+$now = time();
+
+/* 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",
+ "captiveportal-allgraphs.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-") && isset($config['captiveportal']['enable'])) {
+ $captiveportal = true;
+ }
+}
+/* append the existing array to the header */
+$ui_databases = array_merge($dbheader, $databases);
+$custom_databases = array_merge($dbheader_custom, $databases);
+
+$styles = array('inverse' => gettext('Inverse'),
+ 'absolute' => gettext('Absolute'));
+$graphs = array("8hour", "day", "week", "month", "quarter", "year", "4year");
+$periods = array("absolute" => gettext("Absolute Timespans"), "current" => gettext("Current Period"), "previous" => gettext("Previous Period"));
+$graph_length = array(
+ "8hour" => 28800,
+ "day" => 86400,
+ "week" => 604800,
+ "month" => 2764800,
+ "quarter" => 8035200,
+ "year" => 31622400,
+ "4year" => 126489600);
+
+if ($_POST) {
+ unset($_POST['__csrf_magic']);
+ $pconfig = $_POST;
+
+ if (isset($id) && $a_graphs[$id])
+ $a_graphs[$id] = $pconfig;
+ else
+ $a_graphs[] = $pconfig;
+
+ $a_mailreports[$reportid]['row'] = $a_graphs;
+
+ write_config();
+ header("Location: status_mail_report_edit.php?id={$reportid}");
+ exit;
+}
+
+
+$pgtitle = array(gettext("Status"),gettext("Add Mail Report Graph"));
+include("head.inc");
+?>
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+<?php include("fbegin.inc"); ?>
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr><td><div id="mainarea">
+ <form action="status_mail_report_add_graph.php" method="post" name="iform" id="iform">
+ <table class="tabcont" width="100%" border="0" cellpadding="1" cellspacing="1">
+ <tr>
+ <td class="listtopic" colspan="2">Graph Settings</td>
+ </tr>
+ <tr>
+ <td width="20%" class="listhdr">
+ <?=gettext("Graphs:");?>
+ </td>
+ <td width="80%" class="listhdr">
+ <select name="graph" class="formselect" style="z-index: -10;">
+ <?php
+ foreach ($custom_databases as $db => $database) {
+ $optionc = split("-", $database);
+ $search = array("-", ".rrd", $optionc);
+ $replace = array(" :: ", "", $friendly);
+ echo "<option value=\"{$database}\"";
+ $prettyprint = ucwords(str_replace($search, $replace, $database));
+ if($pconfig['graph'] == $database) {
+ echo " selected";
+ }
+ echo ">" . htmlspecialchars($prettyprint) . "</option>\n";
+ }
+ ?>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="listhdr">
+ <?=gettext("Style:");?>
+ </td>
+ <td class="listhdr">
+ <select name="style" class="formselect" style="z-index: -10;">
+ <?php
+ foreach ($styles as $style => $styled) {
+ echo "<option value=\"$style\"";
+ if ($style == $pconfig['style']) echo " selected";
+ echo ">" . htmlspecialchars($styled) . "</option>\n";
+ }
+ ?>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="listhdr">
+ <?=gettext("Time Span:");?>
+ </td>
+ <td class="listhdr">
+ <select name="timespan" class="formselect" style="z-index: -10;">
+ <?php
+ foreach (array_keys($graph_length) as $timespan) {
+ echo "<option value=\"$timespan\"";
+ if ($timespan == $pconfig['timespan']) echo " selected";
+ echo ">" . htmlspecialchars(ucwords($timespan)) . "</option>\n";
+ }
+ ?>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="listhdr">
+ <?=gettext("Period:");?>
+ </td>
+ <td class="listhdr">
+ <select name="period" class="formselect" style="z-index: -10;">
+ <?php
+ foreach ($periods as $period => $value) {
+ echo "<option value=\"$period\"";
+ if ($period == $pconfig['period']) echo " selected";
+ echo ">" . htmlspecialchars($value) . "</option>\n";
+ }
+ ?>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center">
+ <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save");?>">
+ <a href="status_mail_report_edit.php?id=<?php echo $reportid;?>"><input name="cancel" type="button" class="formbtn" value="<?=gettext("Cancel");?>"></a>
+ <input name="reportid" type="hidden" value="<?=htmlspecialchars($reportid);?>">
+ <?php if (isset($id) && $a_graphs[$id]): ?>
+ <input name="id" type="hidden" value="<?=htmlspecialchars($id);?>">
+ <?php endif; ?>
+ </td>
+ <td></td>
+ </tr>
+ </table>
+ </form>
+ </div></td></tr>
+</table>
+
+<?php include("fend.inc"); ?>
+</body>
+</html>