diff options
Diffstat (limited to 'usr/local/www/ifstats.php')
-rw-r--r-- | usr/local/www/ifstats.php | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/usr/local/www/ifstats.php b/usr/local/www/ifstats.php new file mode 100644 index 0000000..0ba6e27 --- /dev/null +++ b/usr/local/www/ifstats.php @@ -0,0 +1,79 @@ +<?php +/* $Id$ */ +/* + ifstats.php + part of pfSense (http://www.pfsense.com) + + Copyright (C) 2005-2006 Scott Ullrich (sullrich@gmail.com) + 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. +*/ + + require("functions.inc"); + require("config.inc"); + + $ifinfo = array(); + + $if = $_GET['if']; + + $ifinfo['hwif'] = $config['interfaces'][$if]['if']; + if(!$ifinfo['hwif']) + $ifinfo['hwif'] = $if; + if ($if == "wan") + $ifinfo['if'] = get_real_wan_interface(); + else + $ifinfo['if'] = $ifinfo['hwif']; + + /* run netstat to determine link info */ + $linkinfo = ""; + unset($linkinfo); + exec("/usr/bin/netstat -I " . $ifinfo['hwif'] . " -nWb -f link", $linkinfo); + $linkinfo = preg_split("/\s+/", $linkinfo[1]); + if (preg_match("/\*$/", $linkinfo[0])) { + $ifinfo['status'] = "down"; + } else { + $ifinfo['status'] = "up"; + } + + if (!strstr($ifinfo['if'],'tun')) { + $ifinfo['macaddr'] = $linkinfo[3]; + $ifinfo['inpkts'] = $linkinfo[4]; + $ifinfo['inerrs'] = $linkinfo[5]; + $ifinfo['inbytes'] = $linkinfo[6]; + $ifinfo['outpkts'] = $linkinfo[7]; + $ifinfo['outerrs'] = $linkinfo[8]; + $ifinfo['outbytes'] = $linkinfo[9]; + $ifinfo['collisions'] = $linkinfo[10]; + } else { + $ifinfo['inpkts'] = $linkinfo[3]; + $ifinfo['inbytes'] = $linkinfo[5]; + $ifinfo['outpkts'] = $linkinfo[6]; + $ifinfo['outbytes'] = $linkinfo[8]; + } + + $temp = gettimeofday(); + $timing = $temp["sec"] + $temp["usec"] / 1000000.0; + + echo "$timing|" . $ifinfo['inbytes'] . "|" . $ifinfo['outpkts'] . "\n"; + +?>
\ No newline at end of file |