aboutsummaryrefslogtreecommitdiffstats
path: root/config/bandwidthd/bandwidthd.inc
diff options
context:
space:
mode:
Diffstat (limited to 'config/bandwidthd/bandwidthd.inc')
-rw-r--r--config/bandwidthd/bandwidthd.inc201
1 files changed, 201 insertions, 0 deletions
diff --git a/config/bandwidthd/bandwidthd.inc b/config/bandwidthd/bandwidthd.inc
new file mode 100644
index 00000000..262530ce
--- /dev/null
+++ b/config/bandwidthd/bandwidthd.inc
@@ -0,0 +1,201 @@
+<?php
+/* $Id$ */
+/*
+ bandwidthd.inc
+ Copyright (C) 2006 Scott Ullrich
+ part of pfSense
+ 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.
+*/
+
+function bandwidthd_install_deinstall() {
+ conf_mount_rw();
+ config_lock();
+ exec("cd /var/db/pkg/ && pkg_delete `ls | grep bandwidthd`");
+ exec("rm /usr/local/etc/rc.d/bandwidthd*");
+ exec("rm -rf /usr/local/bandwidthd*");
+ exec("rm /usr/local/www/bandwidthd");
+ conf_mount_ro();
+ config_unlock();
+}
+
+function bandwidthd_install_config() {
+ global $config, $g;
+
+ conf_mount_rw();
+ config_lock();
+
+ /* user defined values */
+ $meta_refresh = $config['installedpackages']['bandwidthd']['config'][0]['metarefresh'];
+ if($meta_refresh)
+ $meta_refresh = "meta_refresh $meta_refresh\n";
+ $graph = $config['installedpackages']['bandwidthd']['config'][0]['graph'];
+ if($graph)
+ $graph = "graph true\n";
+ $filter_text = $config['installedpackages']['bandwidthd']['config'][0]['filter'];
+ if($filter_text)
+ $filter_text = "filter $filter_text\n";
+ $recover_cdf = $config['installedpackages']['bandwidthd']['config'][0]['recovercdf'];
+ if($recover_cdf)
+ $recover_cdf = "recover_cdf true\n";
+ $output_cdf = $config['installedpackages']['bandwidthd']['config'][0]['outputcdf'];
+ if($output_cdf)
+ $output_cdf = "output_cdf true\n";
+ $promiscuous = $config['installedpackages']['bandwidthd']['config'][0]['promiscuous'];
+ if($promiscuous)
+ $promiscuous = "promiscuous true\n";
+ $graph_cutoff = $config['installedpackages']['bandwidthd']['config'][0]['graphcutoff'];
+ if($graph_cutoff)
+ $graph_cutoff = "graph_cutoff $graph_cutoff\n";
+ $skip_intervals = $config['installedpackages']['bandwidthd']['config'][0]['skipintervals'];
+ if($skip_intervals)
+ $skip_intervals = "skip_intervals $skip_intervals\n";
+
+ if($config['installedpackages']['bandwidthd']['config'][0]['active_interface']){
+ $ifdescrs = array($config['installedpackages']['bandwidthd']['config'][0]['active_interface']);
+ } else {
+ log_error("You should specify a interface for bandwidthd to listen on. exiting.");
+ }
+
+ /* initialize to "" */
+ $subnets = "";
+ //$ifdescrs = array("lan", "wan");
+ //for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) {
+ //$ifdescrs['opt' . $j] = "opt" . $j;
+ //}
+ if(is_array($ifdescrs)) {
+ foreach($ifdescrs as $int) {
+ /* calculate interface subnet information */
+ $ifcfg = &$config['interfaces'][$int];
+ $subnet = gen_subnet($ifcfg['ipaddr'], $ifcfg['subnet']);
+ $subnetmask = gen_subnet_mask($ifcfg['subnet']);
+ if($subnet == "pppoe") {
+ $subnet = find_interface_ip("ng0");
+ if($subnet)
+ $subnets .= "subnet {$subnet}/32\n";
+ } else {
+ if($subnet)
+ $subnets .= "subnet {$subnet}/{$ifcfg['subnet']}\n";
+ }
+ }
+ }
+
+ /* initialize to "" */
+ $dev = "";
+ if(is_array($ifdescrs)) {
+ foreach($ifdescrs as $ifdescr) {
+ $descr = convert_friendly_interface_to_real_interface_name($ifdescr);
+ $dev .= "dev \"$descr\"\n";
+ }
+ }
+
+ $config_file = <<<EOF
+#
+# This file was automatically generated by the pfSense
+# package management system. Changing this file
+# will lead to it being overwritten again when
+# the package manage resyncs.
+#
+####################################################
+# Bandwidthd.conf
+#
+# Commented out options are here to provide
+# documentation and represent defaults
+
+# Subnets to collect statistics on. Traffic that
+# matches none of these subnets will be ignored.
+# Syntax is either IP Subnet Mask or CIDR
+$subnets
+
+# Device to listen on
+# Bandwidthd listens on the first device it detects
+# by default. Run "bandwidthd -l" for a list of
+# devices.
+$dev
+
+###################################################
+# Options that don't usually get changed
+
+# An interval is 2.5 minutes, this is how many
+# intervals to skip before doing a graphing run
+$skip_inervals
+
+# Graph cutoff is how many k must be transfered by an
+# ip before we bother to graph it
+$graph_cutoff
+
+#Put interface in promiscuous mode to score to traffic
+#that may not be routing through the host machine.
+$promiscuous
+
+#Log data to cdf file htdocs/log.cdf
+$output_cdf
+
+#Read back the cdf file on startup
+$recover_cdf
+
+#Libpcap format filter string used to control what bandwidthd see's
+#Please always include "ip" in the string to avoid strange problems
+$filter_text
+
+#Draw Graphs - This default to true to graph the traffic bandwidthd is recording
+#Usually set this to false if you only want cdf output or
+#you are using the database output option. Bandwidthd will use very little
+#ram and cpu if this is set to false.
+$graph
+
+#Set META REFRESH seconds (default 150, use 0 to disable).
+$meta_refresh
+
+EOF;
+
+ $fd = fopen("/usr/local/bandwidthd/etc/bandwidthd.conf","w");
+ if(!$fd) {
+ log_error("could not open /usr/local/bandwidthd/etc/bandwidthd.conf for writing");
+ exit;
+ }
+ fwrite($fd, $config_file);
+ fclose($fd);
+
+ /* write out rc.d start/stop file */
+ write_rcfile(array(
+ "file" => "bandwidthd.sh",
+ "start" => "/usr/local/bandwidthd/bandwidthd /usr/local/bandwidthd/etc/bandwidthd.conf",
+ "stop" => "/usr/bin/killall bandwidthd"
+ )
+ );
+
+ exec("rm /usr/local/www/bandwidthd");
+ exec("/bin/ln -s /usr/local/bandwidthd/htdocs /usr/local/www/bandwidthd");
+
+ exec("echo \"Please start bandwidthd to populate this directory.\" > /usr/local/bandwidthd/htdocs/index.html");
+
+ conf_mount_ro();
+ config_unlock();
+
+ stop_service("bandwidthd");
+ start_service("bandwidthd");
+
+}
+
+?> \ No newline at end of file