diff options
author | Perry Mason <crazypark2@yahoo.dk> | 2009-02-08 13:08:37 +0100 |
---|---|---|
committer | Perry Mason <crazypark2@yahoo.dk> | 2009-02-08 13:08:37 +0100 |
commit | fd303bf3c455d1622fc97b83cfeefd2c1789d4eb (patch) | |
tree | 018e091d155c7fafde8924a422f60651111e15c5 | |
parent | 09ad8210b2c548423a5579635ac07ad379398a34 (diff) | |
download | pfsense-packages-fd303bf3c455d1622fc97b83cfeefd2c1789d4eb.tar.gz pfsense-packages-fd303bf3c455d1622fc97b83cfeefd2c1789d4eb.tar.bz2 pfsense-packages-fd303bf3c455d1622fc97b83cfeefd2c1789d4eb.zip |
vnstat config added
-rw-r--r-- | config/vnstat/vnstat.inc | 229 | ||||
-rw-r--r-- | config/vnstat/vnstat.xml | 33 |
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&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> |