summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/diag_routes.php
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2015-08-25 08:08:24 -0300
committerRenato Botelho <renato@netgate.com>2015-08-25 14:49:54 -0300
commit46bc6e545a17e77202aaf01ec0cd8d5a46567525 (patch)
tree32d18dda436ec739c67c489ceb771e8629cd926f /src/usr/local/www/diag_routes.php
parent4d9801c2dbd2b3e54a39578ee62b93af66607227 (diff)
downloadpfsense-46bc6e545a17e77202aaf01ec0cd8d5a46567525.zip
pfsense-46bc6e545a17e77202aaf01ec0cd8d5a46567525.tar.gz
Move main pfSense content to src/
Diffstat (limited to 'src/usr/local/www/diag_routes.php')
-rw-r--r--src/usr/local/www/diag_routes.php247
1 files changed, 247 insertions, 0 deletions
diff --git a/src/usr/local/www/diag_routes.php b/src/usr/local/www/diag_routes.php
new file mode 100644
index 0000000..ff2fe8d
--- /dev/null
+++ b/src/usr/local/www/diag_routes.php
@@ -0,0 +1,247 @@
+<?php
+
+/* $Id$ */
+/*
+ diag_routes.php
+ Copyright (C) 2013-2015 Electric Sheep Fencing, LP
+ Copyright (C) 2006 Fernando Lamos
+ 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_BUILDER_BINARIES: /usr/bin/netstat
+ pfSense_MODULE: routing
+*/
+##|+PRIV
+##|*IDENT=page-diagnostics-routingtables
+##|*NAME=Diagnostics: Routing tables page
+##|*DESCR=Allow access to the 'Diagnostics: Routing tables' page.
+##|*MATCH=diag_routes.php*
+##|-PRIV
+
+include('guiconfig.inc');
+
+if (isset($_REQUEST['isAjax'])) {
+ $netstat = "/usr/bin/netstat -rW";
+ if (isset($_REQUEST['IPv6'])) {
+ $netstat .= " -f inet6";
+ echo "IPv6\n";
+ } else {
+ $netstat .= " -f inet";
+ echo "IPv4\n";
+ }
+ if (!isset($_REQUEST['resolve'])) {
+ $netstat .= " -n";
+ }
+
+ if (!empty($_REQUEST['filter'])) {
+ $netstat .= " | /usr/bin/sed -e '1,3d; 5,\$ { /" . escapeshellarg(htmlspecialchars($_REQUEST['filter'])) . "/!d; };'";
+ } else {
+ $netstat .= " | /usr/bin/sed -e '1,3d'";
+ }
+
+ if (is_numeric($_REQUEST['limit']) && $_REQUEST['limit'] > 0) {
+ $netstat .= " | /usr/bin/head -n {$_REQUEST['limit']}";
+ }
+
+ echo htmlspecialchars_decode(shell_exec($netstat));
+
+ exit;
+}
+
+$pgtitle = array(gettext("Diagnostics"), gettext("Routing tables"));
+$shortcut_section = "routing";
+
+include('head.inc');
+
+?>
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+
+<?php include("fbegin.inc"); ?>
+
+<script type="text/javascript">
+//<![CDATA[
+
+ function update_routes(section) {
+ var url = "diag_routes.php";
+ var limit = jQuery('#limit option:selected').text();
+ var filter = jQuery('#filter').val();
+ var params = "isAjax=true&limit=" + limit + "&filter=" + filter;
+ if (jQuery('#resolve').is(':checked')) {
+ params += "&resolve=true";
+ }
+ if (section == "IPv6") {
+ params += "&IPv6=true";
+ }
+ var myAjax = new Ajax.Request(
+ url,
+ {
+ method: 'post',
+ parameters: params,
+ onComplete: update_routes_callback
+ });
+ }
+
+ function update_routes_callback(transport) {
+ // First line contains section
+ var responseTextArr = transport.responseText.split("\n");
+ var section = responseTextArr.shift();
+ var tbody = '';
+ var field = '';
+ var elements = 8;
+ var tr_class = '';
+
+ var thead = '<tr><td class="listtopic" colspan="' + elements + '"><strong>' + section + '<\/strong><\/td><\/tr>' + "\n";
+ for (var i = 0; i < responseTextArr.length; i++) {
+ if (responseTextArr[i] == "") {
+ continue;
+ }
+ var tmp = '';
+ if (i == 0) {
+ tr_class = 'listhdrr';
+ tmp += '<tr class="sortableHeaderRowIdentifier">' + "\n";
+ } else {
+ tr_class = 'listlr';
+ tmp += '<tr>' + "\n";
+ }
+ var j = 0;
+ var entry = responseTextArr[i].split(" ");
+ for (var k = 0; k < entry.length; k++) {
+ if (entry[k] == "") {
+ continue;
+ }
+ if (i == 0 && j == (elements - 1)) {
+ tr_class = 'listhdr';
+ }
+ tmp += '<td class="' + tr_class + '">' + entry[k] + '<\/td>' + "\n";
+ if (i > 0) {
+ tr_class = 'listr';
+ }
+ j++;
+ }
+ // The 'Expire' field might be blank
+ if (j == (elements - 1)) {
+ tmp += '<td class="listr">&nbsp;<\/td>' + "\n";
+ }
+ tmp += '<\/tr>' + "\n";
+ if (i == 0) {
+ thead += tmp;
+ } else {
+ tbody += tmp;
+ }
+ }
+ jQuery('#' + section + ' > thead').html(thead);
+ jQuery('#' + section + ' > tbody').html(tbody);
+ }
+
+//]]>
+</script>
+
+<script type="text/javascript">
+//<![CDATA[
+
+ function update_all_routes() {
+ update_routes("IPv4");
+ update_routes("IPv6");
+ }
+
+ jQuery(document).ready(function() {setTimeout('update_all_routes()', 5000);});
+
+//]]>
+</script>
+
+<div id="mainarea">
+<form action="diag_routes.php" method="post">
+<table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="6" summary="diag routes">
+ <tr>
+ <td class="vncellreq" width="22%"><?=gettext("Name resolution");?></td>
+ <td class="vtable" width="78%">
+ <input type="checkbox" class="formfld" id="resolve" name="resolve" value="yes" <?php if ($_POST['resolve'] == 'yes') echo "checked=\"checked\""; ?> /><?=gettext("Enable");?>
+ <br />
+ <span class="expl"><?=gettext("Enable this to attempt to resolve names when displaying the tables.");?></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="vncellreq" width="22%"><?=gettext("Number of rows");?></td>
+ <td class="vtable" width="78%">
+ <select id="limit" name="limit">
+<?php
+ foreach (array("10", "50", "100", "200", "500", "1000", gettext("all")) as $item) {
+ echo "<option value=\"{$item}\" " . ($item == "100" ? "selected=\"selected\"" : "") . ">{$item}</option>\n";
+ }
+?>
+ </select>
+ <br />
+ <span class="expl"><?=gettext("Select how many rows to display.");?></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="vncellreq" width="22%"><?=gettext("Filter expression");?></td>
+ <td class="vtable" width="78%">
+ <input type="text" class="formfld search" name="filter" id="filter" />
+ <br />
+ <span class="expl"><?=gettext("Use a regular expression to filter IP address or hostnames.");?></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="vncellreq" width="22%">&nbsp;</td>
+ <td class="vtable" width="78%">
+ <input type="button" class="formbtn" name="update" onclick="update_all_routes();" value="<?=gettext("Update"); ?>" />
+ <br />
+ <br />
+ <span class="vexpl"><span class="red"><strong><?=gettext("Note:")?></strong></span> <?=gettext("By enabling name resolution, the query should take a bit longer. You can stop it at any time by clicking the Stop button in your browser.");?></span>
+ </td>
+ </tr>
+</table>
+</form>
+
+<table class="tabcont sortable" width="100%" cellspacing="0" cellpadding="6" border="0" id="IPv4" summary="ipv4 routes">
+ <thead>
+ <tr><td class="listtopic"><strong>IPv4</strong></td></tr>
+ </thead>
+ <tbody>
+ <tr><td class="listhdrr"><?=gettext("Gathering data, please wait...");?></td></tr>
+ </tbody>
+</table>
+<table class="tabcont sortable" width="100%" cellspacing="0" cellpadding="6" border="0" id="IPv6" summary="ipv6 routes">
+ <thead>
+ <tr><td class="listtopic"><strong>IPv6</strong></td></tr>
+ </thead>
+ <tbody>
+ <tr><td class="listhdrr"><?=gettext("Gathering data, please wait...");?></td></tr>
+ </tbody>
+</table>
+
+</div>
+
+<?php
+include('fend.inc');
+?>
+
+</body>
+</html>
OpenPOWER on IntegriCloud