From ecab9d4c2be2fb49eca5c06681867c1d98de92a1 Mon Sep 17 00:00:00 2001 From: Phil Davis Date: Wed, 11 Nov 2015 22:43:28 +0545 Subject: Limit alias info popup size #5415 RELENG_2_2 This is code for RELENG_2_2 pfSense 2.2.5 that will limit the number of rows in the alias info popup to 100. --- usr/local/www/guiconfig.inc | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/usr/local/www/guiconfig.inc b/usr/local/www/guiconfig.inc index 6fd36d0..8cc0002 100644 --- a/usr/local/www/guiconfig.inc +++ b/usr/local/www/guiconfig.inc @@ -1073,13 +1073,19 @@ function alias_info_popup($alias_id){ // TODO: Change it when pf supports tables with ports if ($alias_name['type'] == "urltable") { exec("/sbin/pfctl -t {$alias_name['name']} -T show | wc -l", $total_entries); - $counter=preg_replace("/\D/","",$total_entries[0]); - exec("/sbin/pfctl -t {$alias_name['name']} -T show | head -10002", $alias_addresses); + $alias_entries = preg_replace("/\D/","",$total_entries[0]); + exec("/sbin/pfctl -t {$alias_name['name']} -T show | head -102", $alias_addresses); } else { + // This reads in the whole file and then chops it down to max of 100 entries. + // For big files it would be better to just read in up to the first 100 lines. $urlfn = alias_expand_urltable($alias_name['name']); $alias_addresses = explode("\n", file_get_contents($urlfn)); - $counter = count($alias_addresses); + $alias_entries = count($alias_addresses); + if ($alias_entries > 100) { + $alias_addresses = array_splice($alias_addresses, 100); + } } + $counter = count($alias_addresses); $alias_objects_with_details .= "{$alias_name['url']}"; $x=0; foreach ($alias_addresses as $alias_ports_address ) { @@ -1104,13 +1110,14 @@ function alias_info_popup($alias_id){ if ($x > 0) { $alias_objects_with_details .= ""; } - if ($counter > 10002) { - $alias_objects_with_details .= " ". gettext("listing only first 10k items") . ""; + if ($counter < $alias_entries) { + $alias_objects_with_details .= " ". sprintf(gettext("listing only first %s of %s items"), $counter, $alias_entries) . ""; } } else{ $alias_addresses = explode (" ", $alias_name['address']); $alias_details = explode ("||", $alias_name['detail']); + $alias_entries = count($alias_addresses); $counter = 0; foreach ($alias_addresses as $alias_ports_address) { $alias_objects_with_details .= "{$alias_addresses[$counter]}"; @@ -1121,6 +1128,9 @@ function alias_info_popup($alias_id){ $alias_objects_with_details .=" "; $alias_objects_with_details .= ""; $counter++; + if ($counter >= 100) { + break; + } } } $alias_objects_with_details .= ""; @@ -1129,7 +1139,11 @@ function alias_info_popup($alias_id){ if ($strlength >= $maxlength) $alias_descr_substr = substr($alias_descr_substr, 0, $maxlength) . "..."; $item_text = ($counter > 1 ? "items" : "item"); - $alias_caption = htmlspecialchars($alias_descr_substr) . " - {$counter} {$item_text}  edit "; + $counter_text = $counter; + if ($counter < $alias_entries) { + $counter_text .= " of " . $alias_entries; + } + $alias_caption = htmlspecialchars($alias_descr_substr) . " - {$counter_text} {$item_text}  edit "; $strlength = strlen ($alias_caption); print "

{$alias_caption}

" . $alias_objects_with_details; } -- cgit v1.1