Commit 5640547a authored by Ad Schellevis's avatar Ad Schellevis

additional cleanup pf tracker feature

parent e8cfc0ff
...@@ -447,7 +447,6 @@ ...@@ -447,7 +447,6 @@
<ipprotocol>inet</ipprotocol> <ipprotocol>inet</ipprotocol>
<descr><![CDATA[Default allow LAN to any rule]]></descr> <descr><![CDATA[Default allow LAN to any rule]]></descr>
<interface>lan</interface> <interface>lan</interface>
<tracker>0100000101</tracker>
<source> <source>
<network>lan</network> <network>lan</network>
</source> </source>
...@@ -460,7 +459,6 @@ ...@@ -460,7 +459,6 @@
<ipprotocol>inet6</ipprotocol> <ipprotocol>inet6</ipprotocol>
<descr><![CDATA[Default allow LAN IPv6 to any rule]]></descr> <descr><![CDATA[Default allow LAN IPv6 to any rule]]></descr>
<interface>lan</interface> <interface>lan</interface>
<tracker>0100000102</tracker>
<source> <source>
<network>lan</network> <network>lan</network>
</source> </source>
......
...@@ -144,7 +144,6 @@ function parse_filter_line($line) { ...@@ -144,7 +144,6 @@ function parse_filter_line($line) {
$flent['rulenum'] = $rule_data[$field++]; $flent['rulenum'] = $rule_data[$field++];
$flent['subrulenum'] = $rule_data[$field++]; $flent['subrulenum'] = $rule_data[$field++];
$flent['anchor'] = $rule_data[$field++]; $flent['anchor'] = $rule_data[$field++];
$flent['tracker'] = $rule_data[$field++];
$flent['realint'] = $rule_data[$field++]; $flent['realint'] = $rule_data[$field++];
$flent['interface'] = convert_real_interface_to_friendly_descr($flent['realint']); $flent['interface'] = convert_real_interface_to_friendly_descr($flent['realint']);
$flent['reason'] = $rule_data[$field++]; $flent['reason'] = $rule_data[$field++];
...@@ -277,17 +276,14 @@ function get_port_with_service($port, $proto) { ...@@ -277,17 +276,14 @@ function get_port_with_service($port, $proto) {
return ':' . $portstr; return ':' . $portstr;
} }
function find_rule_by_number($rulenum, $trackernum, $type="block") { function find_rule_by_number($rulenum, $type="block") {
global $g; global $g;
/* Passing arbitrary input to grep could be a Very Bad Thing(tm) */ /* Passing arbitrary input to grep could be a Very Bad Thing(tm) */
if (!is_numeric($rulenum) || !is_numeric($trackernum) || !in_array($type, array('pass', 'block', 'match', 'rdr'))) if (!is_numeric($rulenum) || !in_array($type, array('pass', 'block', 'match', 'rdr')))
return; return;
if ($trackernum == "0") $lookup_pattern = "^@{$rulenum}\([0-9]+\)[[:space:]]{$type}[[:space:]].*[[:space:]]log[[:space:]]";
$lookup_pattern = "^@{$rulenum}\([0-9]+\)[[:space:]]{$type}[[:space:]].*[[:space:]]log[[:space:]]";
else
$lookup_pattern = "^@[0-9]+\({$trackernum}\)[[:space:]]{$type}[[:space:]].*[[:space:]]log[[:space:]]";
/* At the moment, miniupnpd is the only thing I know of that /* At the moment, miniupnpd is the only thing I know of that
generates logging rdr rules */ generates logging rdr rules */
...@@ -330,13 +326,9 @@ function buffer_rules_load() { ...@@ -330,13 +326,9 @@ function buffer_rules_load() {
if (is_array($buffer)) { if (is_array($buffer)) {
foreach ($buffer as $line) { foreach ($buffer as $line) {
list($key, $value) = explode (" ", $line, 2); list($key, $value) = explode (" ", $line, 2);
# pfctl rule number output with tracker number: @dd(dddddddddd)
$matches = array(); $matches = array();
if (preg_match('/\@(?P<rulenum>\d+)\((?<trackernum>\d+)\)/', $key, $matches) == 1) { if (preg_match('/\@(?P<rulenum>\d+)\)/', $key, $matches) == 1) {
if ($matches['trackernum'] > 0) $key = "@{$matches['rulenum']}";
$key = $matches['trackernum'];
else
$key = "@{$matches['rulenum']}";
} }
$buffer_rules_normal[$key] = $value; $buffer_rules_normal[$key] = $value;
} }
...@@ -349,13 +341,10 @@ function buffer_rules_clear() { ...@@ -349,13 +341,10 @@ function buffer_rules_clear() {
unset($GLOBALS['buffer_rules_rdr']); unset($GLOBALS['buffer_rules_rdr']);
} }
function find_rule_by_number_buffer($rulenum, $trackernum, $type){ function find_rule_by_number_buffer($rulenum, $type){
global $g, $buffer_rules_rdr, $buffer_rules_normal; global $g, $buffer_rules_rdr, $buffer_rules_normal;
if ($trackernum == "0") $lookup_key = "@{$rulenum}";
$lookup_key = "@{$rulenum}";
else
$lookup_key = $trackernum;
if ($type == "rdr") { if ($type == "rdr") {
$ruleString = $buffer_rules_rdr[$lookup_key]; $ruleString = $buffer_rules_rdr[$lookup_key];
......
...@@ -3307,27 +3307,6 @@ function upgrade_105_to_106() { ...@@ -3307,27 +3307,6 @@ function upgrade_105_to_106() {
function upgrade_106_to_107() { function upgrade_106_to_107() {
global $config; global $config;
if (is_array($config['filter']) && is_array($config['filter']['rule'])) {
$tracker = (int)microtime(true);
foreach ($config['filter']['rule'] as $ridx => $rule) {
if (empty($rule['tracker'])) {
$config['filter']['rule'][$ridx]['tracker'] = $tracker;
$tracker++;
}
}
unset($tracker, $ridx);
}
if (is_array($config['nat']) && is_array($config['nat']['rule'])) {
$tracker = (int)microtime(true);
foreach ($config['nat']['rule'] as $ridx => $rule) {
if (empty($rule['tracker'])) {
$config['nat']['rule'][$ridx]['tracker'] = $tracker;
$tracker++;
}
}
unset($tracker, $ridx);
}
} }
function upgrade_107_to_108() { function upgrade_107_to_108() {
......
...@@ -69,8 +69,8 @@ function getGETPOSTsettingvalue($settingname, $default) ...@@ -69,8 +69,8 @@ function getGETPOSTsettingvalue($settingname, $default)
$rulenum = getGETPOSTsettingvalue('getrulenum', null); $rulenum = getGETPOSTsettingvalue('getrulenum', null);
if($rulenum) { if($rulenum) {
list($rulenum, $tracker, $type) = explode(',', $rulenum); list($rulenum, $type) = explode(',', $rulenum);
$rule = find_rule_by_number($rulenum, $tracker, $type); $rule = find_rule_by_number($rulenum, $type);
echo gettext("The rule that triggered this action is") . ":\n\n{$rule}"; echo gettext("The rule that triggered this action is") . ":\n\n{$rule}";
exit; exit;
} }
...@@ -326,7 +326,7 @@ include("head.inc"); ...@@ -326,7 +326,7 @@ include("head.inc");
$rowIndex++;?> $rowIndex++;?>
<tr class="<?=$evenRowClass?>"> <tr class="<?=$evenRowClass?>">
<td class="listMRlr nowrap" align="center" sorttable_customkey="<?=$filterent['act']?>"> <td class="listMRlr nowrap" align="center" sorttable_customkey="<?=$filterent['act']?>">
<a onclick="javascript:getURL('diag_logs_filter.php?getrulenum=<?php echo "{$filterent['rulenum']},{$filterent['tracker']},{$filterent['act']}"; ?>', outputrule);" title="<?php echo $filterent['act'] .'/'. $filterent['tracker'];?>"><span class="glyphicon glyphicon-remove"></span></a></td> <a onclick="javascript:getURL('diag_logs_filter.php?getrulenum=<?php echo "{$filterent['rulenum']},{$filterent['act']}"; ?>', outputrule);" title="<?php echo $filterent['act'] .'/';?>"><span class="glyphicon glyphicon-remove"></span></a></td>
<?php if ($filterent['count']) echo $filterent['count'];?></a></center></td> <?php if ($filterent['count']) echo $filterent['count'];?></a></center></td>
<td class="listMRr nowrap"><?php echo htmlspecialchars($filterent['time']);?></td> <td class="listMRr nowrap"><?php echo htmlspecialchars($filterent['time']);?></td>
<td class="listMRr nowrap"> <td class="listMRr nowrap">
...@@ -336,7 +336,7 @@ include("head.inc"); ...@@ -336,7 +336,7 @@ include("head.inc");
<?php echo htmlspecialchars($filterent['interface']);?></td> <?php echo htmlspecialchars($filterent['interface']);?></td>
<?php <?php
if ($config['syslog']['filterdescriptions'] === "1") if ($config['syslog']['filterdescriptions'] === "1")
echo("<td class=\"listMRr nowrap\">".find_rule_by_number_buffer($filterent['rulenum'],$filterent['tracker'],$filterent['act'])."</td>"); echo("<td class=\"listMRr nowrap\">".find_rule_by_number_buffer($filterent['rulenum'],$filterent['act'])."</td>");
$int = strtolower($filterent['interface']); $int = strtolower($filterent['interface']);
$proto = strtolower($filterent['proto']); $proto = strtolower($filterent['proto']);
...@@ -374,7 +374,7 @@ include("head.inc"); ...@@ -374,7 +374,7 @@ include("head.inc");
<?php if (isset($config['syslog']['filterdescriptions']) && $config['syslog']['filterdescriptions'] === "2"):?> <?php if (isset($config['syslog']['filterdescriptions']) && $config['syslog']['filterdescriptions'] === "2"):?>
<tr class="<?=$evenRowClass?>"> <tr class="<?=$evenRowClass?>">
<td colspan="2" class="listMRDescriptionL listMRlr" /> <td colspan="2" class="listMRDescriptionL listMRlr" />
<td colspan="4" class="listMRDescriptionR listMRr nowrap"><?=find_rule_by_number_buffer($filterent['rulenum'],$filterent['tracker'],$filterent['act']);?></td> <td colspan="4" class="listMRDescriptionR listMRr nowrap"><?=find_rule_by_number_buffer($filterent['rulenum'],$filterent['act']);?></td>
</tr> </tr>
<?php endif; <?php endif;
endforeach; endforeach;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment