From a8dd6e98ba04b8dc0e7642beab16c9efeaee6e33 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Mon, 25 Oct 2021 12:58:10 +0200 Subject: [PATCH] speed.cgi: replave parsing of ip show output latest ipfroute2 update change the output so this repkace it by reading /sys/class/net/*/statistics Signed-off-by: Arne Fitzenreiter --- config/qos/makeqosscripts.pl | 2 +- html/cgi-bin/speed.cgi | 47 ++++++++---------------------------- 2 files changed, 11 insertions(+), 38 deletions(-) diff --git a/config/qos/makeqosscripts.pl b/config/qos/makeqosscripts.pl index 0694bb78cf..878e4bb43e 100644 --- a/config/qos/makeqosscripts.pl +++ b/config/qos/makeqosscripts.pl @@ -4,7 +4,7 @@ # IPFire.org - A linux based firewall # # Copyright (C) 2007-2021 IPFire Team # # # -# This program is free software: you can redistribute it and/or modify # +# This program is free software: you c:an redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # diff --git a/html/cgi-bin/speed.cgi b/html/cgi-bin/speed.cgi index 651c3c0b31..d4b83df4f6 100644 --- a/html/cgi-bin/speed.cgi +++ b/html/cgi-bin/speed.cgi @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2021 IPFire Twan # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -25,28 +25,6 @@ # high system load # ###########################################OA################################## # -# Returns the output of a shell command -sub General__system_output($) { - my @command = @_; - my $pid; - my @output = (); - - unless ($pid = open(OUTPUT, "-|")) { - open(STDERR, ">&STDOUT"); - exec { ${command[0]} } @command; - die "Could not execute @command: $!"; - } - - waitpid($pid, 0); - - while () { - push(@output, $_); - } - - close(OUTPUT); - return @output; -} -# # Function which will return the used interface for the red network zone (red0, ppp0, etc). sub General__get_red_interface() { @@ -79,21 +57,16 @@ foreach $field (@fields) { } my $interface = &General__get_red_interface(); -my @data_now = &General__system_output("ip", "-s", "link", "show", "$interface"); -my $lastline; -my $rxb_now = 0; -my $txb_now = 0; -foreach (@data_now) { - if ( $lastline =~ /RX/ ) { - @fields = split(/ /, $_); - $rxb_now = $fields[4]; - } elsif ( $lastline =~ /TX/ ) { - @fields = split(/ /, $_); - $txb_now = $fields[4]; - } - $lastline = $_; -} +open(RX, "/sys/class/net/$interface/statistics/rx_bytes") or die "Could not open /sys/class/net/$interface/statistics/rx_bytes"; +my $rxb_now = ; +close(RX); +chomp $rxb_now; + +open(TX, "/sys/class/net/$interface/statistics/tx_bytes") or die "Could not open /sys/class/net/$interface/statistics/tx_bytes"; +my $txb_now = ; +close(TX); +chomp $txb_now; my ($rx_kbs, $tx_kbs); my $rxb_diff = $rxb_now - $rxb_last; -- 2.39.2