diff options
author | Renato Botelho <renato@netgate.com> | 2015-08-25 08:08:24 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2015-08-25 14:49:54 -0300 |
commit | 46bc6e545a17e77202aaf01ec0cd8d5a46567525 (patch) | |
tree | 32d18dda436ec739c67c489ceb771e8629cd926f /src/usr/local/www/status_graph.php | |
parent | 4d9801c2dbd2b3e54a39578ee62b93af66607227 (diff) | |
download | pfsense-46bc6e545a17e77202aaf01ec0cd8d5a46567525.zip pfsense-46bc6e545a17e77202aaf01ec0cd8d5a46567525.tar.gz |
Move main pfSense content to src/
Diffstat (limited to 'src/usr/local/www/status_graph.php')
-rw-r--r-- | src/usr/local/www/status_graph.php | 352 |
1 files changed, 352 insertions, 0 deletions
diff --git a/src/usr/local/www/status_graph.php b/src/usr/local/www/status_graph.php new file mode 100644 index 0000000..056c297 --- /dev/null +++ b/src/usr/local/www/status_graph.php @@ -0,0 +1,352 @@ +<?php +/* $Id$ */ +/* + status_graph.php + Part of pfSense + Copyright (C) 2013-2015 Electric Sheep Fencing, LP + Copyright (C) 2004 Scott Ullrich + All rights reserved. + + Originally part of m0n0wall (http://m0n0.ch/wall) + Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>. + 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. +*/ +/* + pfSense_MODULE: routing +*/ + +##|+PRIV +##|*IDENT=page-status-trafficgraph +##|*NAME=Status: Traffic Graph page +##|*DESCR=Allow access to the 'Status: Traffic Graph' page. +##|*MATCH=status_graph.php* +##|*MATCH=bandwidth_by_ip.php* +##|*MATCH=graph.php* +##|*MATCH=ifstats.php* +##|-PRIV + +require("guiconfig.inc"); + +if ($_POST['width']) { + $width = $_POST['width']; +} else { + $width = "100%"; +} + +if ($_POST['height']) { + $height = $_POST['height']; +} else { + $height = "200"; +} + +// Get configured interface list +$ifdescrs = get_configured_interface_with_descr(); +if (isset($config['ipsec']['enable'])) { + $ifdescrs['enc0'] = "IPsec"; +} +foreach (array('server', 'client') as $mode) { + if (is_array($config['openvpn']["openvpn-{$mode}"])) { + foreach ($config['openvpn']["openvpn-{$mode}"] as $id => $setting) { + if (!isset($setting['disable'])) { + $ifdescrs['ovpn' . substr($mode, 0, 1) . $setting['vpnid']] = gettext("OpenVPN") . " ".$mode.": ".htmlspecialchars($setting['description']); + } + } + } +} + +if ($_GET['if']) { + $curif = $_GET['if']; + $found = false; + foreach ($ifdescrs as $descr => $ifdescr) { + if ($descr == $curif) { + $found = true; + break; + } + } + if ($found === false) { + header("Location: status_graph.php"); + exit; + } +} else { + if (empty($ifdescrs["wan"])) { + /* Handle the case when WAN has been disabled. Use the first key in ifdescrs. */ + reset($ifdescrs); + $curif = key($ifdescrs); + } else { + $curif = "wan"; + } +} +if ($_GET['sort']) { + $cursort = $_GET['sort']; +} else { + $cursort = ""; +} +if ($_GET['filter']) { + $curfilter = $_GET['filter']; +} else { + $curfilter = ""; +} +if ($_GET['hostipformat']) { + $curhostipformat = $_GET['hostipformat']; +} else { + $curhostipformat = ""; +} + +$pgtitle = array(gettext("Status"), gettext("Traffic Graph")); + +include("head.inc"); + +?> + +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<?php include("fbegin.inc"); ?> + +<script type="text/javascript"> +//<![CDATA[ +function updateBandwidth() { + var hostinterface = jQuery("#if").val(); + var sorting = jQuery("#sort").val(); + var filter = jQuery("#filter").val(); + var hostipformat = jQuery("#hostipformat").val(); + bandwidthAjax(hostinterface, sorting, filter, hostipformat); +} + +function bandwidthAjax(hostinterface, sorting, filter, hostipformat) { + uri = "bandwidth_by_ip.php?if=" + hostinterface + "&sort=" + sorting + "&filter=" + filter + "&hostipformat=" + hostipformat; + var opt = { + // Use GET + type: 'get', + error: function(req) { + /* XXX: Leave this for debugging purposes: Handle 404 + if (req.status == 404) + alert('Error 404: location "' + uri + '" was not found.'); + */ + /* Handle other errors + else + alert('Error ' + req.status + ' -- ' + req.statusText + ' -- ' + uri); + */ + }, + success: function(data) { + updateBandwidthHosts(data); + } + } + jQuery.ajax(uri, opt); +} + +function updateBandwidthHosts(data) { + var hosts_split = data.split("|"); + d = document; + //parse top ten bandwidth abuser hosts + for (var y = 0; y < 10; y++) { + if ((y < hosts_split.length) && (hosts_split[y] != "") && (hosts_split[y] != "no info")) { + hostinfo = hosts_split[y].split(";"); + + //update host ip info + var HostIpID = "hostip" + y; + var hostip = d.getElementById(HostIpID); + hostip.innerHTML = hostinfo[0]; + + //update bandwidth inbound to host + var hostbandwidthInID = "bandwidthin" + y; + var hostbandwidthin = d.getElementById(hostbandwidthInID); + hostbandwidthin.innerHTML = hostinfo[1] + " Bits/sec"; + + //update bandwidth outbound from host + var hostbandwidthOutID = "bandwidthout" + y; + var hostbandwidthOut = d.getElementById(hostbandwidthOutID); + hostbandwidthOut.innerHTML = hostinfo[2] + " Bits/sec"; + + //make the row appear if hidden + var rowid = "#host" + y; + if (jQuery(rowid).css('display') == "none") { + //hide rows that contain no data + jQuery(rowid).show(1000); + } + } else { + var rowid = "#host" + y; + if (jQuery(rowid).css('display') != "none") { + //hide rows that contain no data + jQuery(rowid).fadeOut(2000); + } + } + } + + setTimeout('updateBandwidth()', 1000); +} +//]]> +</script> + +<?php + +/* link the ipsec interface magically */ +if (isset($config['ipsec']['enable']) || isset($config['ipsec']['client']['enable'])) { + $ifdescrs['enc0'] = "IPsec"; +} + +?> +<form name="form1" action="status_graph.php" method="get" style="padding-bottom: 10px; margin-bottom: 14px; border-bottom: 1px solid #999999"> +<?=gettext("Interface"); ?>: + <select id="if" name="if" class="formselect" style="z-index: -10;" onchange="document.form1.submit()"> +<?php + foreach ($ifdescrs as $ifn => $ifd) { + echo "<option value=\"$ifn\""; + if ($ifn == $curif) { + echo " selected=\"selected\""; + } + echo ">" . htmlspecialchars($ifd) . "</option>\n"; + } +?> + </select> +, Sort by: + <select id="sort" name="sort" class="formselect" style="z-index: -10;" onchange="document.form1.submit()"> + <option value="">Bw In</option> + <option value="out"<?php if ($cursort == "out") echo " selected=\"selected\"";?>>Bw Out</option> + </select> +, Filter: + <select id="filter" name="filter" class="formselect" style="z-index: -10;" onchange="document.form1.submit()"> + <option value="local"<?php if ($curfilter == "local") echo " selected=\"selected\"";?>>Local</option> + <option value="remote"<?php if ($curfilter == "remote") echo " selected=\"selected\"";?>>Remote</option> + <option value="all"<?php if ($curfilter == "all") echo " selected=\"selected\"";?>>All</option> + </select> +, Display: + <select id="hostipformat" name="hostipformat" class="formselect" style="z-index: -10;" onchange="document.form1.submit()"> + <option value="">IP Address</option> + <option value="hostname"<?php if ($curhostipformat == "hostname") echo " selected";?>>Host Name</option> + <option value="descr"<?php if ($curhostipformat == "descr") echo " selected=\"selected\"";?>>Description</option> + <option value="fqdn"<?php if ($curhostipformat == "fqdn") echo " selected=\"selected\"";?>>FQDN</option> + </select> +</form> +<p> </p> +<div id="niftyOutter"> + <div id="col1" style="float: left; width: 46%; padding: 5px; position: relative;"> + <object data="graph.php?ifnum=<?=htmlspecialchars($curif);?>&ifname=<?=rawurlencode($ifdescrs[htmlspecialchars($curif)]);?>"> + <param name="id" value="graph" /> + <param name="type" value="image/svg+xml" /> + <param name="width" value="<? echo $width; ?>" /> + <param name="height" value="<? echo $height; ?>" /> + <param name="pluginspage" value="http://www.adobe.com/svg/viewer/install/auto" /> + </object> + </div> + <div id="col2" style="float: right; width: 48%; padding: 5px; position: relative;"> + <table width="100%" border="0" cellspacing="0" cellpadding="0" summary="status"> + <tr> + <td class="listtopic" valign="top"><?=(($curhostipformat == "") ? gettext("Host IP") : gettext("Host Name or IP")); ?></td> + <td class="listtopic" valign="top"><?=gettext("Bandwidth In"); ?></td> + <td class="listtopic" valign="top"><?=gettext("Bandwidth Out"); ?></td> + </tr> + <tr id="host0" style="display:none"> + <td id="hostip0" class="vncell"> + </td> + <td id="bandwidthin0" class="listr"> + </td> + <td id="bandwidthout0" class="listr"> + </td> + </tr> + <tr id="host1" style="display:none"> + <td id="hostip1" class="vncell"> + </td> + <td id="bandwidthin1" class="listr"> + </td> + <td id="bandwidthout1" class="listr"> + </td> + </tr> + <tr id="host2" style="display:none"> + <td id="hostip2" class="vncell"> + </td> + <td id="bandwidthin2" class="listr"> + </td> + <td id="bandwidthout2" class="listr"> + </td> + </tr> + <tr id="host3" style="display:none"> + <td id="hostip3" class="vncell"> + </td> + <td id="bandwidthin3" class="listr"> + </td> + <td id="bandwidthout3" class="listr"> + </td> + </tr> + <tr id="host4" style="display:none"> + <td id="hostip4" class="vncell"> + </td> + <td id="bandwidthin4" class="listr"> + </td> + <td id="bandwidthout4" class="listr"> + </td> + </tr> + <tr id="host5" style="display:none"> + <td id="hostip5" class="vncell"> + </td> + <td id="bandwidthin5" class="listr"> + </td> + <td id="bandwidthout5" class="listr"> + </td> + </tr> + <tr id="host6" style="display:none"> + <td id="hostip6" class="vncell"> + </td> + <td id="bandwidthin6" class="listr"> + </td> + <td id="bandwidthout6" class="listr"> + </td> + </tr> + <tr id="host7" style="display:none"> + <td id="hostip7" class="vncell"> + </td> + <td id="bandwidthin7" class="listr"> + </td> + <td id="bandwidthout7" class="listr"> + </td> + </tr> + <tr id="host8" style="display:none"> + <td id="hostip8" class="vncell"> + </td> + <td id="bandwidthin8" class="listr"> + </td> + <td id="bandwidthout8" class="listr"> + </td> + </tr> + <tr id="host9" style="display:none"> + <td id="hostip9" class="vncell"> + </td> + <td id="bandwidthin9" class="listr"> + </td> + <td id="bandwidthout9" class="listr"> + </td> + </tr> + </table> + </div> + <div style="clear: both;"></div> +</div> +<p><span class="red"><strong><?=gettext("Note"); ?>:</strong></span> <?=gettext("the"); ?> <a href="http://www.adobe.com/svg/viewer/install/" target="_blank"><?=gettext("Adobe SVG Viewer"); ?></a>, <?=gettext("Firefox 1.5 or later or other browser supporting SVG is required to view the graph"); ?>.</p> + +<?php include("fend.inc"); ?> + +<script type="text/javascript"> +//<![CDATA[ +jQuery(document).ready(updateBandwidth); +//]]> +</script> +</body> +</html> |