Bug #14262
openIPv6 firewall log entries do not wrap and force the table width past the width of the page
0%
Description
IPV6-addresses are much wider than IPV4. That is not properly handled in the GUI. Extreme example is the Firewall log, where important information is cut of / not visible at all.
I am using 2.7 latest build, but I expect that the problem affect all versions.
See picture below / attached picture
Files
Updated by Jim Pingle over 1 year ago
- Subject changed from IPV6 firewall log layout not workable :( to IPv6 firewall log entries do not wrap and force the table width past the width of the page
- Target version set to 2.7.0
- Plus Target Version set to 23.05
We solved this in the widget in #5332 by adding <wbr>
tags after each :
in an IPv6 address but it looks like that didn't get carried over into the main log. See 4861e219f930ee759d75cdfffc1413e3e5d21707 for how that was done.
As a short term workaround you can use the option to move the firewall descriptions into a new row rather than a column since those take up a fair amount of space as well.
Updated by Jim Pingle over 1 year ago
- Assignee deleted (
Jim Pingle) - Target version changed from 2.7.0 to CE-Next
- Plus Target Version changed from 23.05 to Plus-Next
There is much more to it than the wbr tags. The src/dst cells are locked at nowrap, as it the row itself. The description is set to wrap, which works OK. But once you allow the src/dst cells to wrap, the rule description doesn't wrap, the src/dst cells do and they look awful.
So it's going to take a bit more work by someone who is more familiar with the relevant CSS than I am to figure out the best way to accommodate these different scenarios.
For the time being, if this bothers you, move the rule description to a second row or turn it off.
Updated by Jim Pingle over 1 year ago
If someone else wants to experiment, this is what I started with to insert the wbr and change the wrapping:
diff --git a/src/usr/local/www/status_logs_filter.php b/src/usr/local/www/status_logs_filter.php
index 599105f5f2..a33c6f8b55 100644
--- a/src/usr/local/www/status_logs_filter.php
+++ b/src/usr/local/www/status_logs_filter.php
@@ -228,25 +228,27 @@ if (!$rawfilter) {
$ipproto = "inet";
}
- $srcstr = $filterent['srcip'] . get_port_with_service($filterent['srcport'], $proto);
+ /* Putting <wbr> tags after each ':' allows the string to word-wrap at that point
+ * https://redmine.pfsense.org/issues/14262 */
+ $srcstr = str_replace(':', ':<wbr>', $filterent['srcip']) . get_port_with_service($filterent['srcport'], $proto);
$src_htmlclass = str_replace(array('.', ':'), '-', $rawsrcip);
- $dststr = $filterent['dstip'] . get_port_with_service($filterent['dstport'], $proto);
+ $dststr = str_replace(':', ':<wbr>', $filterent['dstip']) . get_port_with_service($filterent['dstport'], $proto);
$dst_htmlclass = str_replace(array('.', ':'), '-', $rawdstip);
?>
- <td class="text-nowrap">
+ <td style="white-space:normal;">
<i class="fa fa-info icon-pointer icon-primary" onclick="javascript:resolve_with_ajax('<?="{$rawsrcip}"; ?>');" title="<?=gettext("Click to resolve")?>">
</i>
- <a class="fa fa-minus-square-o icon-pointer icon-primary" href="easyrule.php?<?="action=block&int={$int}&src={$filterent['srcip']}&ipproto={$ipproto}"; ?>" title="<?=gettext("EasyRule: Add to Block List")?>">
+ <a class="fa fa-minus-square-o icon-pointer icon-primary" href="easyrule.php?<?="action=block&int={$int}&src={$filterent['rawsrcip']}&ipproto={$ipproto}"; ?>" title="<?=gettext("EasyRule: Add to Block List")?>">
</a>
<?=$srcstr . '<span class="RESOLVE-' . $src_htmlclass . '"></span>'?>
</td>
- <td class="text-nowrap">
+ <td style="white-space:normal;">
<i class="fa fa-info icon-pointer icon-primary; ICON-<?= $dst_htmlclass; ?>" onclick="javascript:resolve_with_ajax('<?="{$rawdstip}"; ?>');" title="<?=gettext("Click to resolve")?>">
</i>
- <a class="fa fa-plus-square-o icon-pointer icon-primary" href="easyrule.php?<?="action=pass&int={$int}&proto={$proto}&src={$filterent['srcip']}&dst={$filterent['dstip']}&dstport={$filterent['dstport']}&ipproto={$ipproto}"; ?>" title="<?=gettext("EasyRule: Pass this traffic")?>">
+ <a class="fa fa-plus-square-o icon-pointer icon-primary" href="easyrule.php?<?="action=pass&int={$int}&proto={$proto}&src={$filterent['rawsrcip']}&dst={$filterent['dstip']}&dstport={$filterent['dstport']}&ipproto={$ipproto}"; ?>" title="<?=gettext("EasyRule: Pass this traffic")?>">
</a>
<?=$dststr . '<span class="RESOLVE-' . $dst_htmlclass . '"></span>'?>
</td>