connections.cgi: Parse conntrack table without loading it all first

We used to load the entire table into memory which is very unnecessary
because we can parse it one line at a time.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
Michael Tremer
2024-04-27 13:43:49 +02:00
parent 7f2fbf2767
commit 60d9097511

View File

@@ -44,11 +44,6 @@ my @colour=();
my %netsettings=();
&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
# Read and sort the connection tracking table
open(CONNTRACK, "/usr/local/bin/getconntracktable | sort -k 5,5 --numeric-sort --reverse |") or die "Unable to read conntrack table";
my @conntrack = <CONNTRACK>;
close(CONNTRACK);
# Collect data for the @network array.
# Add Firewall Localhost 127.0.0.1
@@ -363,7 +358,11 @@ print <<END;
</tr>
END
foreach my $line (@conntrack) {
# Read and sort the connection tracking table
open(CONNTRACK, "/usr/local/bin/getconntracktable | sort -k 5,5 --numeric-sort --reverse |")
or die "Unable to read conntrack table";
foreach my $line (<CONNTRACK>) {
my @conn = split(' ', $line);
# The first bit is the l3 protocol.
@@ -572,6 +571,8 @@ foreach my $line (@conntrack) {
END
}
close(CONNTRACK);
# Close the main table.
print "</table>";