-#!/usr/bin/perl\r
-#\r
-# SmoothWall CGIs\r
-#\r
-# This code is distributed under the terms of the GPL\r
-#\r
-# (c) The SmoothWall Team\r
-#\r
-# $Id: graphs.cgi,v 1.9.2.6 2005/02/22 22:21:55 gespinasse Exp $\r
-#\r
-\r
-use strict;\r
-\r
-# enable only the following on debugging purpose\r
-#use warnings;\r
-#use CGI::Carp 'fatalsToBrowser';\r
-\r
-require 'CONFIG_ROOT/general-functions.pl';\r
-require "${General::swroot}/lang.pl";\r
-require "${General::swroot}/header.pl";\r
-\r
-my %cgiparams=();\r
-my %pppsettings=();\r
-my %netsettings=();\r
-my @cgigraphs=();\r
-my @graphs=();\r
-my $iface='';\r
-\r
-&Header::showhttpheaders();\r
-\r
-my $graphdir = "/home/httpd/html/graphs";\r
-&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);\r
-\r
-$ENV{'QUERY_STRING'} =~ s/&//g;\r
-@cgigraphs = split(/graph=/,$ENV{'QUERY_STRING'});\r
-$cgigraphs[1] = '' unless defined $cgigraphs[1];\r
-\r
-if ($cgigraphs[1] =~ /(network|GREEN|BLUE|ORANGE|RED)/) {\r
- &Header::openpage($Lang::tr{'network traffic graphs'}, 1, '');\r
-} else {\r
- &Header::openpage($Lang::tr{'system graphs'}, 1, '');\r
-}\r
-&Header::openbigbox('100%', 'left');\r
-\r
-if ($cgigraphs[1] =~ /(GREEN|BLUE|ORANGE|RED|cpu|memory|swap|disk)/) {\r
- my $graph = $cgigraphs[1];\r
- my $graphname = ucfirst(lc($cgigraphs[1]));\r
- &Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}");\r
-\r
- if (-e "$graphdir/${graph}-day.png") {\r
- my $ftime = localtime((stat("$graphdir/${graph}-day.png"))[9]);\r
- print "<center>";\r
- print "<b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br /><hr />\n";\r
- print "<img src='/graphs/${graph}-day.png' border='0' /><hr />";\r
- print "<img src='/graphs/${graph}-week.png' border='0' /><hr />";\r
- print "<img src='/graphs/${graph}-month.png' border='0' /><hr />";\r
- print "<img src='/graphs/${graph}-year.png' border='0' />";\r
- } else {\r
- print $Lang::tr{'no information available'};\r
- }\r
- &Header::closebox();\r
- print "<div align='center'><table width='80%'><tr><td align='center'>";\r
- if ($cgigraphs[1] =~ /(GREEN|BLUE|ORANGE|RED)/) {\r
- print "<a href='/cgi-bin/graphs.cgi?graph=network'>";\r
- } else {\r
- print "<a href='/cgi-bin/graphs.cgi'>";\r
- }\r
- print "$Lang::tr{'back'}</a></td></tr></table></div>\n";\r
- ;\r
-} elsif ($cgigraphs[1] =~ /network/) {\r
- push (@graphs, ('GREEN'));\r
- if ($netsettings{'BLUE_DEV'}) {\r
- push (@graphs, ('BLUE')); }\r
- if ($netsettings{'ORANGE_DEV'}) {\r
- push (@graphs, ('ORANGE')); }\r
- push (@graphs, ("RED"));\r
-\r
- foreach my $graphname (@graphs) {\r
- &Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}");\r
-\r
- if (-e "$graphdir/${graphname}-day.png") {\r
- my $ftime = localtime((stat("$graphdir/${graphname}-day.png"))[9]);\r
- print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";\r
- print "<a href='/cgi-bin/graphs.cgi?graph=$graphname'>";\r
- print "<img src='/graphs/${graphname}-day.png' border='0' />";\r
- print "</a>";\r
- } else {\r
- print $Lang::tr{'no information available'};\r
- }\r
- print "<br />\n";\r
- &Header::closebox();\r
- }\r
-} else {\r
- &Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}");\r
- if (-e "$graphdir/cpu-day.png") {\r
- my $ftime = localtime((stat("$graphdir/cpu-day.png"))[9]);\r
- print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";\r
- print "<a href='/cgi-bin/graphs.cgi?graph=cpu'>";\r
- print "<img src='/graphs/cpu-day.png' border='0' />";\r
- print "</a>";\r
- } else {\r
- print $Lang::tr{'no information available'};\r
- }\r
- print "<br />\n";\r
- &Header::closebox();\r
-\r
- &Header::openbox('100%', 'center', "Memory $Lang::tr{'graph'}");\r
- if (-e "$graphdir/memory-day.png") {\r
- my $ftime = localtime((stat("$graphdir/memory-day.png"))[9]);\r
- print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";\r
- print "<a href='/cgi-bin/graphs.cgi?graph=memory'>";\r
- print "<img src='/graphs/memory-day.png' border='0' />";\r
- print "</a>";\r
- } else {\r
- print $Lang::tr{'no information available'};\r
- }\r
- print "<br />\n";\r
- &Header::closebox();\r
-\r
- &Header::openbox('100%', 'center', "Swap $Lang::tr{'graph'}");\r
- if (-e "$graphdir/swap-day.png") {\r
- my $ftime = localtime((stat("$graphdir/swap-day.png"))[9]);\r
- print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";\r
- print "<a href='/cgi-bin/graphs.cgi?graph=swap'>";\r
- print "<img src='/graphs/swap-day.png' border='0' />";\r
- print "</a>";\r
- } else {\r
- print $Lang::tr{'no information available'};\r
- }\r
- print "<br />\n";\r
- &Header::closebox();\r
-\r
- &Header::openbox('100%', 'center', "Disk $Lang::tr{'graph'}");\r
- if (-e "$graphdir/disk-day.png") {\r
- my $ftime = localtime((stat("$graphdir/disk-day.png"))[9]);\r
- print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";\r
- print "<a href='/cgi-bin/graphs.cgi?graph=disk'>";\r
- print "<img src='/graphs/disk-day.png' border='0' />";\r
- print "</a>";\r
- } else {\r
- print $Lang::tr{'no information available'};\r
- }\r
- print "<br />\n";\r
- &Header::closebox();\r
-}\r
-\r
-&Header::closebigbox();\r
-&Header::closepage();\r
+#!/usr/bin/perl
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# #
+# 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 #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+use strict;
+
+# enable only the following on debugging purpose
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+require "${General::swroot}/graphs.pl";
+
+my %cgiparams=();
+my %pppsettings=();
+my %netsettings=();
+my @cgigraphs=();
+my @graphs=();
+my $iface='';
+
+&Header::showhttpheaders();
+
+my $graphdir = "/srv/web/ipfire/html/graphs";
+&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
+
+$ENV{'QUERY_STRING'} =~ s/&//g;
+@cgigraphs = split(/graph=/,$ENV{'QUERY_STRING'});
+$cgigraphs[1] = '' unless defined $cgigraphs[1];
+
+if ($cgigraphs[1] =~ /(load)/) {&Graphs::updateloadgraph ("week");&Graphs::updateloadgraph ("month");&Graphs::updateloadgraph ("year");}
+if ($cgigraphs[1] =~ /(cpu)/) {&Graphs::updatecpugraph ("week");&Graphs::updatecpugraph ("month");&Graphs::updatecpugraph ("year");}
+if ($cgigraphs[1] =~ /(memory|swap)/) {&Graphs::updatememgraph ("week");&Graphs::updatememgraph ("month");&Graphs::updatememgraph ("year");}
+if ($cgigraphs[1] =~ /disk/){
+ my @devices = `kudzu -qps -c HD | grep device: | cut -d" " -f2 | sort | uniq`;
+
+ foreach (@devices) {
+ my $device = $_;
+ chomp($device);
+ &Graphs::updatediskgraph ("week",$device);
+ &Graphs::updatediskgraph ("month",$device);
+ &Graphs::updatediskgraph ("year",$device);}}
+if ($cgigraphs[1] =~ /lq/) {&Graphs::updatelqgraph("week");&Graphs::updatelqgraph("month");&Graphs::updatelqgraph("year");}
+if ($cgigraphs[1] =~ /RED/) {&Graphs::updateifgraph("RED", "week");&Graphs::updateifgraph("RED", "month");&Graphs::updateifgraph("RED", "year");}
+if ($cgigraphs[1] =~ /GREEN/) {&Graphs::updateifgraph("GREEN", "week");&Graphs::updateifgraph("GREEN", "month");&Graphs::updateifgraph("GREEN", "year");}
+if ($cgigraphs[1] =~ /BLUE/) {&Graphs::updateifgraph("BLUE", "week");&Graphs::updateifgraph("BLUE", "month");&Graphs::updateifgraph("BLUE", "year");}
+if ($cgigraphs[1] =~ /ORANGE/) {&Graphs::updateifgraph("ORANGE", "week");&Graphs::updateifgraph("ORANGE", "month");&Graphs::updateifgraph("ORANGE", "year");}
+
+if ($cgigraphs[1] =~ /(network|GREEN|BLUE|ORANGE|RED|lq)/) {
+ &Header::openpage($Lang::tr{'network traffic graphs'}, 1, '');
+} else {
+ &Header::openpage($Lang::tr{'system graphs'}, 1, '');
+}
+
+&Header::openbigbox('100%', 'left');
+
+if ($cgigraphs[1] =~ /(GREEN|BLUE|ORANGE|RED|lq|cpu|memory|swap|disk|load)/) {
+ my $graph = $cgigraphs[1];
+ my $graphname = ucfirst(lc($cgigraphs[1]));
+ &Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}");
+
+ if (-e "$graphdir/${graph}-day.png") {
+ my $ftime = localtime((stat("$graphdir/${graph}-day.png"))[9]);
+ print "<center>";
+ print "<b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br /><hr />\n";
+ print "<img alt='' src='/graphs/${graph}-day.png' border='0' /><hr />";
+ print "<img alt='' src='/graphs/${graph}-week.png' border='0' /><hr />";
+ print "<img alt='' src='/graphs/${graph}-month.png' border='0' /><hr />";
+ print "<img alt='' src='/graphs/${graph}-year.png' border='0' />";
+ } else {
+ print $Lang::tr{'no information available'};
+ }
+ &Header::closebox();
+} elsif ($cgigraphs[1] =~ /network/) {
+ push (@graphs, ('GREEN'));
+ if ($netsettings{'BLUE_DEV'}) {
+ push (@graphs, ('BLUE')); }
+ if ($netsettings{'ORANGE_DEV'}) {
+ push (@graphs, ('ORANGE')); }
+ push (@graphs, ("RED"));
+ push (@graphs, ('lq'));
+
+ foreach my $graphname (@graphs) {
+ &Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}");
+
+ if (-e "$graphdir/${graphname}-day.png") {
+ my $ftime = localtime((stat("$graphdir/${graphname}-day.png"))[9]);
+ print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";
+ print "<a href='/cgi-bin/graphs.cgi?graph=$graphname'>";
+ print "<img alt='' src='/graphs/${graphname}-day.png' border='0' />";
+ print "</a>";
+ } else {
+ print $Lang::tr{'no information available'};
+ }
+ print "<br />\n";
+ &Header::closebox();
+ }
+}
+
+&Header::closebigbox();
+&Header::closepage();