aboutsummaryrefslogtreecommitdiffstats
path: root/config/vnstat2/vnstat_php_frontend/vnstat.php
diff options
context:
space:
mode:
Diffstat (limited to 'config/vnstat2/vnstat_php_frontend/vnstat.php')
-rw-r--r--config/vnstat2/vnstat_php_frontend/vnstat.php211
1 files changed, 211 insertions, 0 deletions
diff --git a/config/vnstat2/vnstat_php_frontend/vnstat.php b/config/vnstat2/vnstat_php_frontend/vnstat.php
new file mode 100644
index 00000000..9c7e211c
--- /dev/null
+++ b/config/vnstat2/vnstat_php_frontend/vnstat.php
@@ -0,0 +1,211 @@
+<?php
+ //
+ // vnStat PHP frontend (c)2006-2010 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.
+ //
+
+ //
+ // Valid values for other parameters you can pass to the script.
+ // Input parameters will always be limited to one of the values listed here.
+ // If a parameter is not provided or invalid it will revert to the default,
+ // the first parameter in the list.
+ //
+ if (isset($_SERVER['PHP_SELF']))
+ {
+ $script = $_SERVER['PHP_SELF'];
+ }
+ elseif (isset($_SERVER['SCRIPT_NAME']))
+ {
+ $script = $_SERVER['SCRIPT_NAME'];
+ }
+ else
+ {
+ die('can\'t determine script name!');
+ }
+
+ $page_list = array('s','h','d','m');
+
+ $graph_list = array('large','small','none');
+
+ $page_title['s'] = T('summary');
+ $page_title['h'] = T('hours');
+ $page_title['d'] = T('days');
+ $page_title['m'] = T('months');
+
+
+ //
+ // functions
+ //
+ function validate_input()
+ {
+ global $page, $page_list;
+ global $iface, $iface_list;
+ global $graph, $graph_list;
+ global $colorscheme, $style;
+ //
+ // get interface data
+ //
+ $page = isset($_GET['page']) ? $_GET['page'] : '';
+ $iface = isset($_GET['if']) ? $_GET['if'] : '';
+ $graph = isset($_GET['graph']) ? $_GET['graph'] : '';
+ $style = isset($_GET['style']) ? $_GET['style'] : '';
+
+ if (!in_array($page, $page_list))
+ {
+ $page = $page_list[0];
+ }
+
+ if (!in_array($iface, $iface_list))
+ {
+ $iface = $iface_list[0];
+ }
+
+ if (!in_array($graph, $graph_list))
+ {
+ $graph = $graph_list[0];
+ }
+
+ $tp = "./themes/$style";
+ if (!is_dir($tp) || !file_exists("$tp/theme.php"))
+ {
+ $style = DEFAULT_COLORSCHEME;
+ }
+ }
+
+
+ function get_vnstat_data()
+ {
+ global $iface, $vnstat_bin, $data_dir;
+ global $hour,$day,$month,$top,$summary;
+
+ if (!isset($vnstat_bin) || $vnstat_bin == '')
+ {
+ if (file_exists("$data_dir/vnstat_dump_$iface"))
+ {
+ $vnstat_data = file("$data_dir/vnstat_dump_$iface");
+ }
+ else
+ {
+ $vnstat_data = array();
+ }
+ }
+ else
+ {
+ $fd = popen("$vnstat_bin --dumpdb -i $iface", "r");
+ $buffer = '';
+ while (!feof($fd)) {
+ $buffer .= fgets($fd);
+ }
+ $vnstat_data = explode("\n", $buffer);
+ pclose($fd);
+ }
+
+
+ $day = array();
+ $hour = array();
+ $month = array();
+ $top = array();
+
+ //
+ // extract data
+ //
+ foreach($vnstat_data as $line)
+ {
+ $d = explode(';', trim($line));
+ if ($d[0] == 'd')
+ {
+ $day[$d[1]]['time'] = $d[2];
+ $day[$d[1]]['rx'] = $d[3] * 1024 + $d[5];
+ $day[$d[1]]['tx'] = $d[4] * 1024 + $d[6];
+ $day[$d[1]]['act'] = $d[7];
+ if ($d[2] != 0)
+ {
+ $day[$d[1]]['label'] = strftime(T('datefmt_days'),$d[2]);
+ $day[$d[1]]['img_label'] = strftime(T('datefmt_days_img'), $d[2]);
+ }
+ else
+ {
+ $day[$d[1]]['label'] = '';
+ $day[$d[1]]['img_label'] = '';
+ }
+ }
+ else if ($d[0] == 'm')
+ {
+ $month[$d[1]]['time'] = $d[2];
+ $month[$d[1]]['rx'] = $d[3] * 1024 + $d[5];
+ $month[$d[1]]['tx'] = $d[4] * 1024 + $d[6];
+ $month[$d[1]]['act'] = $d[7];
+ if ($d[2] != 0)
+ {
+ $month[$d[1]]['label'] = strftime(T('datefmt_months'), $d[2]);
+ $month[$d[1]]['img_label'] = strftime(T('datefmt_months_img'), $d[2]);
+ }
+ else
+ {
+ $month[$d[1]]['label'] = '';
+ $month[$d[1]]['img_label'] = '';
+ }
+ }
+ else if ($d[0] == 'h')
+ {
+ $hour[$d[1]]['time'] = $d[2];
+ $hour[$d[1]]['rx'] = $d[3];
+ $hour[$d[1]]['tx'] = $d[4];
+ $hour[$d[1]]['act'] = 1;
+ if ($d[2] != 0)
+ {
+ $st = $d[2] - ($d[2] % 3600);
+ $et = $st + 3600;
+ $hour[$d[1]]['label'] = strftime(T('datefmt_hours'), $st).' - '.strftime(T('datefmt_hours'), $et);
+ $hour[$d[1]]['img_label'] = strftime(T('datefmt_hours_img'), $d[2]);
+ }
+ else
+ {
+ $hour[$d[1]]['label'] = '';
+ $hour[$d[1]]['img_label'] = '';
+ }
+ }
+ else if ($d[0] == 't')
+ {
+ $top[$d[1]]['time'] = $d[2];
+ $top[$d[1]]['rx'] = $d[3] * 1024 + $d[5];
+ $top[$d[1]]['tx'] = $d[4] * 1024 + $d[6];
+ $top[$d[1]]['act'] = $d[7];
+ $top[$d[1]]['label'] = strftime(T('datefmt_top'), $d[2]);
+ $top[$d[1]]['img_label'] = '';
+ }
+ else
+ {
+ $summary[$d[0]] = isset($d[1]) ? $d[1] : '';
+ }
+ }
+ if (count($day) == 0)
+ $day[0] = 'nodata';
+ rsort($day);
+
+ if (count($month) == 0)
+ $month[0] = 'nodata';
+ rsort($month);
+
+ if (count($hour) == 0)
+ $hour[0] = 'nodata';
+ rsort($hour);
+ }
+?>