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/diag_tables.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/diag_tables.php')
-rw-r--r-- | src/usr/local/www/diag_tables.php | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/src/usr/local/www/diag_tables.php b/src/usr/local/www/diag_tables.php new file mode 100644 index 0000000..fe6778f --- /dev/null +++ b/src/usr/local/www/diag_tables.php @@ -0,0 +1,191 @@ +<?php +/* + diag_tables.php + Copyright (C) 2013-2015 Electric Sheep Fencing, LP + Copyright (C) 2010 Jim Pingle + + Portions borrowed from diag_dump_states.php: + Copyright (C) 2010 Scott Ullrich + 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: /sbin/pfctl + pfSense_MODULE: filter +*/ + +##|+PRIV +##|*IDENT=page-diagnostics-tables +##|*NAME=Diagnostics: PF Table IP addresses +##|*DESCR=Allow access to the 'Diagnostics: Tables' page. +##|*MATCH=diag_tables.php* +##|-PRIV + +$pgtitle = array(gettext("Diagnostics"), gettext("Tables")); +$shortcut_section = "aliases"; + +require_once("guiconfig.inc"); + +// Set default table +$tablename = "sshlockout"; + +if ($_REQUEST['type']) { + $tablename = $_REQUEST['type']; +} + +if ($_REQUEST['delete']) { + if (is_ipaddr($_REQUEST['delete']) || is_subnet($_REQUEST['delete'])) { + exec("/sbin/pfctl -t " . escapeshellarg($_REQUEST['type']) . " -T delete " . escapeshellarg($_REQUEST['delete']), $delete); + echo htmlentities($_REQUEST['delete']); + } + exit; +} + +if ($_REQUEST['deleteall']) { + exec("/sbin/pfctl -t " . escapeshellarg($tablename) . " -T show", $entries); + if (is_array($entries)) { + foreach ($entries as $entryA) { + $entry = trim($entryA); + exec("/sbin/pfctl -t " . escapeshellarg($tablename) . " -T delete " . escapeshellarg($entry), $delete); + } + } +} + +if ((($tablename == "bogons") || ($tablename == "bogonsv6")) && ($_POST['Download'])) { + mwexec_bg("/etc/rc.update_bogons.sh now"); + $maxtimetowait = 0; + $loading = true; + while ($loading == true) { + $isrunning = `/bin/ps awwwux | /usr/bin/grep -v grep | /usr/bin/grep bogons`; + if ($isrunning == "") { + $loading = false; + } + $maxtimetowait++; + if ($maxtimetowait > 89) { + $loading = false; + } + sleep(1); + } + if ($maxtimetowait < 90) { + $savemsg = gettext("The bogons database has been updated."); + } +} + +exec("/sbin/pfctl -t " . escapeshellarg($tablename) . " -T show", $entries); +exec("/sbin/pfctl -sT", $tables); + +include("head.inc"); +?> +<body> +<?php include("fbegin.inc"); ?> + +<?php if ($savemsg) print_info_box($savemsg); ?> +<form method="post" action="diag_tables.php"> + +<script type="text/javascript"> +//<![CDATA[ + function method_change(entrytype) { + window.location='diag_tables.php?type=' + entrytype; + } + function del_entry(entry) { + jQuery.ajax("diag_tables.php?type=<?php echo htmlspecialchars($tablename);?>&delete=" + entry, { + complete: function(response) { + if (200 == response.status) { + // Escape all dots to not confuse jQuery selectors + name = response.responseText.replace(/\./g,'\\.'); + name = name.replace(/\//g,'\\-'); + name = "entry_" + name; + jQuery('#' + name).fadeOut(1000); + } + } + }); + } +//]]> +</script> + +<?=gettext("Table:");?> +<select id="type" onchange="method_change(jQuery('#type').val());" name="type"> + <?php + foreach ($tables as $table) { + echo "<option value=\"{$table}\""; + if ($tablename == $table) { + echo " selected=\"selected\""; + } + echo ">{$table}</option>\n"; + } + ?> +</select> + +<br/><br/> + +<table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="0" summary="tables"> + <tr> + <td class="listhdrr"><?=gettext("IP Address");?></td> + </tr> +<?php + $count = 0; + foreach ($entries as $entryA): + $entry = trim($entryA); +?> + <tr id="entry_<?=str_replace("/", "-", $entry);?>"> + <td> + <?php echo $entry; ?> + </td> + <td> + <?php if (($tablename != "bogons") && ($tablename != "bogonsv6")) { ?> + <a onclick="del_entry('<?=htmlspecialchars($entry)?>');"> + <img src="/themes/<?=$g['theme'];?>/images/icons/icon_x.gif" alt="delete" /> + </a> + <?php } ?> + </td> + </tr> +<?php + $count++; + endforeach; + if ($count == 0) { + if (($tablename == "bogons") || ($tablename == "bogonsv6")) { + echo "<tr><td>" . gettext("No entries exist in this table.") . " " . "<input name=\"Download\" type=\"submit\" class=\"formbtn\" value=\"" . gettext("Download") . "\" /> " . gettext(" the latest bogon data."); + } else { + echo "<tr><td>" . gettext("No entries exist in this table."); + } + } +?> + +<?php + if ($count > 0) { + if (($tablename == "bogons") || ($tablename == "bogonsv6")) { + $last_updated = exec('/usr/bin/grep -i -m 1 -E "^# last updated" /etc/' . escapeshellarg($tablename)); + echo "<tr><td> <b>$count</b> " . gettext("entries in this table.") . " " . "<input name=\"Download\" type=\"submit\" class=\"formbtn\" value=\"" . gettext("Download") . "\" /> " . gettext(" the latest bogon data.") . "<br />" . "$last_updated"; + } else { + echo "<tr><td>" . gettext("Delete") . " <a href=\"diag_tables.php?deleteall=true&type=" . htmlspecialchars($tablename) . "\">" . gettext("all") . "</a> " . "<b>$count</b> " . gettext("entries in this table."); + } + } +?> +</td></tr> +</table> +</form> + +<?php include("fend.inc"); ?> +</body> +</html> |