Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; if (permission_exists('traffic_graph_view')) { //access granted } else { echo "access denied"; exit; } //http get saved to a php variable $interface_name = $_GET['interface']; //notes //links to get netstat working in a jail //http://ggeek.blogspot.com/2008/10/freebsd-jails-and-net-snmp.html //http://am-productions.biz/docs/devfs.rules.php //http://ggeek.blogspot.com/2008/10/freebsd-jails-and-net-snmp.html //freebsd //netstat -i -nWb -f link //Name Mtu Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll //dc0 1500 00:07:95:b3:e9:14 38081447 0 1267085007 10894865 0 1825820736 0 //xl0 1500 00:08:74:11:f8:44 10910693 0 1855752990 24502116 7466 459761069 4074482 //linux get the info need to parse it //list a single interface doesn't work on all versions of linux //netstat -I=eth0 //list all interfaces //netstat -i //Kernel Interface table //Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg //eth0 1500 0 25878419 0 0 0 32196826 0 0 0 BMRU //eth1 1500 0 17537 0 0 0 27819 0 0 0 BMRU //lo 16436 0 99683 0 0 0 99683 0 0 0 LRU //osx //list all interfaces //netstat -i //Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll //lo0 16384 2761841 0 2761840 0 0 //lo0 16384 localhost ::1 2761841 - 2761840 - - //lo0 16384 localhost fe80:1::1 2761841 - 2761840 - - //lo0 16384 127 localhost 2761841 - 2761840 - - //gif0* 1280 0 0 0 0 0 //stf0* 1280 0 0 0 0 0 //en0 1500 c4:2c:03:0b:52:de 3242578 0 3286461 0 0 //en0 1500 macolantern fe80:4::c62c:3ff: 3242578 - 3286461 - - //en0 1500 192.168.2 744.ssenn.net 3242578 - 3286461 - - //example code //exec("/usr/bin/netstat -i", $result_array); //echo "
\n";
		//print_r($result_array);
		//echo "
\n"; //$interface_name_info = preg_split("/\s+/", $result_array[0]); //$interface_value_info = preg_split("/\s+/", $result_array[1]); //$netstat_array = array(); //foreach ($interface_name_info as $key => $value) { // $netstat_array[$value] = $interface_value_info[$key]; //} //echo "
\n";
		//print_r($netstat_array);
		//echo "
\n"; // run netstat to determine interface info exec("netstat -i -nWb -f link", $result_array); if (count($result_array) == 0) { exec("netstat -i", $result_array); } //parse the data into a named array $x = 0; foreach ($result_array as $key => $value) { if ($value != "Kernel Interface table") { if ($x == 0) { //get the names of the values $interface_name_info = preg_split("/\s+/", $result_array[$key]); } else { //get the values $interface_value_info = preg_split("/\s+/", $result_array[$key]); //find data for the selected interface if ($interface_name == $interface_value_info[0]) { $netstat_array = array(); foreach ($interface_name_info as $sub_key => $sub_value) { $netstat_array[$sub_value] = $interface_value_info[$sub_key]; } } } $x++; } } //set the correct tx and rx values if (strlen($netstat_array['Iface']) > 0) { $in_bytes = ($netstat_array['RX-OK']*1024); $out_bytes = ($netstat_array['TX-OK']*1024); } if (strlen($netstat_array['Name']) > 0) { $in_bytes = $netstat_array['Ibytes']; $out_bytes = $netstat_array['Obytes']; } //get the timing $tmp_time = gettimeofday(); $timing = (double)$tmp_time["sec"] + (double)$tmp_time["usec"] / 1000000.0; //provide the timing, input bytes and output bytes echo "$timing|" . $in_bytes . "|" . $out_bytes . "\n"; ?>