aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/vnstat/vnstat.inc229
-rw-r--r--config/vnstat/vnstat.xml33
2 files changed, 262 insertions, 0 deletions
diff --git a/config/vnstat/vnstat.inc b/config/vnstat/vnstat.inc
new file mode 100644
index 00000000..26581a40
--- /dev/null
+++ b/config/vnstat/vnstat.inc
@@ -0,0 +1,229 @@
+<?php
+function vnstat_install_deinstall() {
+ global $config;
+// Remove Vnstat package and files
+ exec("cd /var/db/pkg/ && pkg_delete `ls | grep vnstat`");
+ exec("rm -d -R /usr/local/www/vnstat");
+// Remove vnstat cron entry from config.xml
+ $task_key = '/usr/local/bin/vnstat -u';
+ $x_name='';
+ $x=0;
+ foreach($config['cron']['item'] as $item) {
+ if($item['command']==$task_key) {
+ $x_name = $x;
+ }
+ $x++;
+ }
+ unset($x);
+ if($x_name > 0)
+ {
+ unset($config['cron']['item'][$x_name]);
+ write_config();
+ }
+ configure_cron();
+}
+
+function vnstat_install_config() {
+ global $config;
+// Unpack and move Vnstat frontend
+ exec("cd ..");
+ exec("tar -zxovf /usr/local/pkg/vnstat_php_frontend-1.4.1.tar.gz");
+ exec("mv vnstat_php_frontend-1.4.1 /usr/local/www/vnstat");
+// Add cron job to config.xml
+ $cron_item = array();
+ $cron_item['minute'] = "*/1";
+ $cron_item['hour'] = "*";
+ $cron_item['mday'] = "*";
+ $cron_item['month'] = "*";
+ $cron_item['wday'] = "*";
+ $cron_item['who'] = "root";
+ $cron_item['command'] = "/usr/local/bin/vnstat -u";
+ $config['cron']['item'][] = $cron_item;
+ write_config();
+ configure_cron();
+// get system nic's and create a database for them
+ $array_of_real_nic_names = array();
+ $array_of_custom_nic_names = array();
+ $ifdescrs = array('wan' => 'WAN', 'lan' => 'LAN');
+ for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) {
+ $ifdescrs['opt' . $j] = $config['interfaces']['opt' . $j]['descr'];
+ }
+ foreach ($ifdescrs as $ifdescr => $ifname):
+ $ifinfo = get_interface_info($ifdescr);
+ $real_nic_names = convert_friendly_interface_to_real_interface_name($ifname);
+ array_push($array_of_real_nic_names, $real_nic_names);
+ endforeach;
+ // Get already nic's assigned to vnstat
+ exec("ls /var/db/vnstat/ | grep -v '\.'", $vnstat_nic);
+ // Compare real nic's with nic's assigned to vnstat
+ $result = array_diff($array_of_real_nic_names, $vnstat_nic);
+ // Create database for each nic
+ foreach ($result as $result2)
+ {
+ exec("/usr/local/bin/vnstat -u -i ". $result2);
+ }
+// Find information to be writing in config.php
+ // $iface_list_array_items
+ exec("ls /var/db/vnstat/ | grep -v '\.'", $vnstat_nic_in);
+ $iface_list_array_items = implode("', '", $vnstat_nic_in);
+ $iface_list_array = "\$iface_list = array('$iface_list_array_items');";
+ // $iface_title_array_items
+ $iface_title_array_items = array();
+ $iface_title_array_items2 = array();
+ foreach ($vnstat_nic_in as $vnstat_nic_out)
+ {
+ $ifdescrs = array('wan' => 'WAN', 'lan' => 'LAN');
+ for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) {
+ $ifdescrs['opt' . $j] = $config['interfaces']['opt' . $j]['descr'];
+ }
+ foreach ($ifdescrs as $ifdescr => $ifname):
+ $real_nic_names3 = convert_friendly_interface_to_real_interface_name($ifname);
+ If ($real_nic_names3 == $vnstat_nic_out)
+ {
+ $ifname_out = $ifname;
+ $iface_title_array_items = "\$iface_title['$vnstat_nic_out'] = '$ifname_out';\n";
+ array_push($iface_title_array_items2, $iface_title_array_items);
+ }
+ endforeach;
+ }
+ $iface_title_array = implode($iface_title_array_items2);
+ // php in php static items
+ $vnstat_bin2 = "\$vnstat_bin = '/usr/local/bin/vnstat';";
+ $data_dir2 = "\$data_dir = './dumps';";
+ $graph_format2 ="\$graph_format='svg';";
+ $colorscheme2 = "\$colorscheme['light'] = array(";
+ $colorscheme3 = "\$colorscheme['red'] = array(";
+ $colorscheme4 = "\$colorscheme['pfSense'] = array(";
+
+// ************ Write new config.php ******************
+ $config_file = <<<EOF
+<?php
+ //
+ // vnStat PHP frontend 1.4.1 (c)2006-2008 Bjorge Dijkstra (bjd@jooz.net)
+ //
+ // This program is free software; you can redistribute it and/or modify
+ // it under the terms of the GNU General Public License as published by
+ // the Free Software Foundation; either version 2 of the License, or
+ // (at your option) any later version.
+ //
+ // This program is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License
+ // along with this program; if not, write to the Free Software
+ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ //
+ //
+ // see file COPYING or at http://www.gnu.org/licenses/gpl.html
+ // for more information.
+ //
+ error_reporting(E_ALL | E_NOTICE);
+
+ //
+ // configuration parameters
+ //
+ // edit these to reflect your particular situation
+ //
+
+ // list of network interfaces monitored by vnStat
+$iface_list_array
+
+ //
+ // optional names for interfaces
+ // if there's no name set for an interface then the interface identifier
+ // will be displayed instead
+$iface_title_array
+
+ //
+ // There are two possible sources for vnstat data. If the
+ // variable is set then vnstat is called directly from the PHP script
+ // to get the interface data.
+ //
+ // The other option is to periodically dump the vnstat interface data to
+ // a file (e.g. by a cronjob). In that case the variable
+ // must be cleared and set to the location where the dumps
+ // are stored. Dumps must be named 'vnstat_dump_'.
+ //
+ // You can generate vnstat dumps with the command:
+ // vnstat --dumpdb -i > /path/to/data_dir/vnstat_dump_
+ //
+$vnstat_bin2
+$data_dir2
+
+ // graphics format to use: svg or png
+$graph_format2
+
+ // Font to use for PNG graphs
+ define('GRAPH_FONT',dirname(__FILE__).'/VeraBd.ttf');
+
+ // Font to use for SVG graphs
+ define('SVG_FONT', 'Verdana');
+
+ // color schemes
+ // colors are defined as R,G,B,ALPHA quads where R, G and B range from 0-255
+ // and ALPHA from 0-127 where 0 is opaque and 127 completely transparent.
+ //
+ define('DEFAULT_COLORSCHEME', 'pfSense');
+
+ $colorscheme2
+ 'stylesheet' => 'vnstat.css',
+ 'image_background' => array( 255, 255, 255, 0 ),
+ 'graph_background' => array( 220, 220, 230, 0 ),
+ 'graph_background_2' => array( 205, 205, 220, 0 ),
+ 'grid_stipple_1' => array( 140, 140, 140, 0 ),
+ 'grid_stipple_2' => array( 200, 200, 200, 0 ),
+ 'border' => array( 0, 0, 0, 0 ),
+ 'text' => array( 0, 0, 0, 0 ),
+ 'rx' => array( 190, 190, 20, 50 ),
+ 'rx_border' => array( 40, 80, 40, 90 ),
+ 'tx' => array( 130, 160, 100, 50 ),
+ 'tx_border' => array( 80, 40, 40, 90 )
+ );
+
+ // A red colorscheme based on a contribution by Enrico Tröger
+ $colorscheme3
+ 'stylesheet' => 'vnstat_red.css',
+ 'image_background' => array( 225, 225, 225, 0 ),
+ 'graph_background' => array( 220, 220, 230, 0 ),
+ 'graph_background_2' => array( 205, 205, 220, 0 ),
+ 'grid_stipple_1' => array( 140, 140, 140, 0 ),
+ 'grid_stipple_2' => array( 200, 200, 200, 0 ),
+ 'border' => array( 0, 0, 0, 0 ),
+ 'text' => array( 0, 0, 0, 0 ),
+ 'rx' => array( 190, 20, 20, 50 ),
+ 'rx_border' => array( 80, 40, 40, 90 ),
+ 'tx' => array( 130, 130, 130, 50 ),
+ 'tx_border' => array( 60, 60, 60, 90 )
+ );
+
+ // A red colorscheme based on a contribution by Perry Mason
+ $colorscheme4
+ 'stylesheet' => 'vnstat_pfSense.css',
+ 'image_background' => array( 240, 240, 240, 0 ),
+ 'graph_background' => array( 255, 255, 255, 0 ),
+ 'graph_background_2' => array( 255, 255, 255, 0 ),
+ 'grid_stipple_1' => array( 144, 0, 0, 0 ),
+ 'grid_stipple_2' => array( 144, 0, 0, 0 ),
+ 'border' => array( 0, 0, 0, 0 ),
+ 'text' => array( 0, 0, 0, 0 ),
+ 'rx' => array( 190, 20, 20, 50 ),
+ 'rx_border' => array( 80, 40, 40, 90 ),
+ 'tx' => array( 130, 130, 130, 50 ),
+ 'tx_border' => array( 60, 60, 60, 90 )
+ );
+?>
+EOF;
+
+ $hf = fopen("/usr/local/www/vnstat/config.php","w");
+ if(!$hf) {
+ log_error("could not open /usr/local/www/vnstat/config.php for writing");
+ exit;
+ }
+ fwrite($hf, $config_file);
+ fclose($hf);
+}
+?>
+
+
diff --git a/config/vnstat/vnstat.xml b/config/vnstat/vnstat.xml
new file mode 100644
index 00000000..8982d36f
--- /dev/null
+++ b/config/vnstat/vnstat.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd">
+<?xml-stylesheet type="text/xsl" href="./xsl/package.xsl"?>
+<packagegui>
+ <copyright></copyright>
+ <description>Describe your package here</description>
+ <requirements>Describe your package requirements here</requirements>
+ <faq>Currently there are no FAQ items provided.</faq>
+ <name>vnstat</name>
+ <version>1.0</version>
+ <title>vnstat</title>
+ <aftersaveredirect>/pkg_edit.php?xml=vnstat.xml&amp;id=0</aftersaveredirect>
+ <include_file>/usr/local/pkg/vnstat.inc</include_file>
+ <menu>
+ <name>vnstat</name>
+ <tooltiptext></tooltiptext>
+ <section>Status</section>
+ <url>/vnstat</url>
+ </menu>
+ <additional_files_needed>
+ <prefix>/usr/local/pkg/</prefix>
+ <chmod>0644</chmod>
+ <item>http://www.pfsense.com/packages/config/vnstat/vnstat.inc</item>
+ </additional_files_needed>
+ <additional_files_needed>
+ <prefix>/usr/local/pkg/</prefix>
+ <chmod>0644</chmod>
+ <item>http://files.pfsense.org/packages/7/All/vnstat_php_frontend-1.4.1.tar.gz</item>
+ </additional_files_needed>
+ <custom_php_resync_config_command></custom_php_resync_config_command>
+ <custom_php_install_command>vnstat_install_config();</custom_php_install_command>
+ <custom_php_deinstall_command>vnstat_install_deinstall();</custom_php_deinstall_command>
+</packagegui>