diff --git a/etc/inc/filter_log.inc b/etc/inc/filter_log.inc index 974dcdfe9c..85548da102 100644 --- a/etc/inc/filter_log.inc +++ b/etc/inc/filter_log.inc @@ -92,7 +92,17 @@ function match_filter_line($flent, $filtertext = "") { function match_filter_field($flent, $fields) { foreach ($fields as $field) { if ($fields[$field] == "All") continue; - if ( !(in_arrayi($flent[$field], explode(",", str_replace(" ", ",", $fields[$field]))) ) ) return false; + if ((strpos($fields[$field], '!') === 0)) { + $fields[$field] = substr($fields[$field], 1); + if (preg_match("/act/i", $field)) { + if ( (in_arrayi($flent[$field], explode(",", str_replace(" ", ",", $fields[$field]))) ) ) return false; + } else if ( (preg_match("/{$fields[$field]}/i", $flent[$field])) ) return false; + } + else { + if (preg_match("/act/i", $field)) { + if ( !(in_arrayi($flent[$field], explode(",", str_replace(" ", ",", $fields[$field]))) ) ) return false; + } else if ( !(preg_match("/{$fields[$field]}/i", $flent[$field])) ) return false; + } } return true; } diff --git a/usr/local/www/diag_logs_filter.php b/usr/local/www/diag_logs_filter.php index 4e0f316254..1a90c61a4b 100755 --- a/usr/local/www/diag_logs_filter.php +++ b/usr/local/www/diag_logs_filter.php @@ -46,6 +46,9 @@ require("guiconfig.inc"); require_once("filter_log.inc"); +require_once("pfsense-utils.inc"); +require_once("functions.inc"); + function getGETPOSTsettingvalue($settingname, $default) { $settingvalue = $default; @@ -64,12 +67,42 @@ if($rulenum) { exit; } -$interfacefilter = getGETPOSTsettingvalue('interface', null); -$filtertext = htmlspecialchars(getGETPOSTsettingvalue('filtertext', "")); +$filtersubmit = getGETPOSTsettingvalue('filtersubmit', null); +if ($filtersubmit) { + $interfacefilter = getGETPOSTsettingvalue('interface', null); + $filtertext = getGETPOSTsettingvalue('filtertext', ""); + $filterlogentries_qty = getGETPOSTsettingvalue('filterlogentries_qty', null); +} + +$filterlogentries_submit = getGETPOSTsettingvalue('filterlogentries_submit', null); +if ($filterlogentries_submit) { + $filterfieldsarray = array("act", "time", "interface", "srcip", "srcport", "dstip", "dstport", "proto", "tcpflags"); + + $actpass = getGETPOSTsettingvalue('actpass', null); + $actblock = getGETPOSTsettingvalue('actblock', null); + $actreject = getGETPOSTsettingvalue('actreject', null); + + $filterfieldsarray['act'] = trim($actpass . " " . $actblock . " " . $actreject); + $filterfieldsarray['act'] = $filterfieldsarray['act'] ? $filterfieldsarray['act'] : 'All'; + $filterfieldsarray['time'] = getGETPOSTsettingvalue('filterlogentries_time', null); + $filterfieldsarray['interface'] = getGETPOSTsettingvalue('filterlogentries_interfaces', null); + $filterfieldsarray['srcip'] = getGETPOSTsettingvalue('filterlogentries_sourceipaddress', null); + $filterfieldsarray['srcport'] = getGETPOSTsettingvalue('filterlogentries_sourceport', null); + $filterfieldsarray['dstip'] = getGETPOSTsettingvalue('filterlogentries_destinationipaddress', null); + $filterfieldsarray['dstport'] = getGETPOSTsettingvalue('filterlogentries_destinationport', null); + $filterfieldsarray['proto'] = getGETPOSTsettingvalue('filterlogentries_protocol', null); + $filterfieldsarray['tcpflags'] = getGETPOSTsettingvalue('filterlogentries_protocolflags', null); + $filterlogentries_qty = getGETPOSTsettingvalue('filterlogentries_qty', null); +} $filter_logfile = "{$g['varlog_path']}/filter.log"; $nentries = $config['syslog']['nentries']; + +# Override Display Quantity +if ($filterlogentries_qty) + $nentries = $filterlogentries_qty; + if (!$nentries) $nentries = 50; @@ -109,52 +142,145 @@ include("head.inc"); -
-
- - - - " /> +
> + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ /> Pass
+ /> Block
+ /> Reject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
" />
+
+ ', '');?>   +    +
+ +
+
> +
+ + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+
+
+
 
+
" />
+
+ ', '');?>   +
-
+
| | -

- +
+
+
+ Show/hide rule descriptions -
@@ -162,11 +288,14 @@ include("head.inc"); $iflist = get_configured_interface_with_descr(false, true); if ($iflist[$interfacefilter]) $interfacefilter = $iflist[$interfacefilter]; - $filterlog = conv_log_filter($filter_logfile, $nentries, $nentries + 100, $filtertext, $interfacefilter); + if ($filterlogentries_submit) + $filterlog = conv_log_filter($filter_logfile, $nentries, $nentries + 100, $filterfieldsarray); + else + $filterlog = conv_log_filter($filter_logfile, $nentries, $nentries + 100, $filtertext, $interfacefilter); ?> " class="listtopic"> -