X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Fsystem.cgi;h=487ba996c2e4ef38169c27788d324b3902253d4b;hp=d556abc084d55a3e0fa28634902aa1bf3005b5dc;hb=56947acb12176f397cbd5078c5544cdc4f19b27b;hpb=72fe12a934084f7127b252bdfa3ab6d24e0bf5cb diff --git a/html/cgi-bin/system.cgi b/html/cgi-bin/system.cgi index d556abc084..487ba996c2 100644 --- a/html/cgi-bin/system.cgi +++ b/html/cgi-bin/system.cgi @@ -1,221 +1,75 @@ #!/usr/bin/perl -# -# SmoothWall CGIs -# -# This code is distributed under the terms of the GPL -# -# (c) The SmoothWall Team -# -# +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2005-2010 IPFire Team # +# # +# 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 . # +# # +############################################################################### use strict; # enable only the following on debugging purpose -use warnings; -use CGI::Carp 'fatalsToBrowser'; +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; - -#workaround to suppress a warning when a variable is used only once -my @dummy = ( ${Header::colourred} ); -undef (@dummy); - -my %netsettings=(); -&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); - -my %cgiparams=(); -# Maps a nice printable name to the changing part of the pid file, which -# is also the name of the program -my %servicenames = -( - $Lang::tr{'dhcp server'} => 'dhcpd', - $Lang::tr{'web server'} => 'httpd', - $Lang::tr{'cron server'} => 'fcron', - $Lang::tr{'dns proxy server'} => 'dnsmasq', - $Lang::tr{'logging server'} => 'syslogd', - $Lang::tr{'kernel logging server'} => 'klogd', - $Lang::tr{'ntp server'} => 'ntpd', - $Lang::tr{'secure shell server'} => 'sshd', - $Lang::tr{'vpn'} => 'pluto', - $Lang::tr{'web proxy'} => 'squid', - 'OpenVPN' => 'openvpn' -); - -my $iface = ''; -if (open(FILE, "${General::swroot}/red/iface")) -{ - $iface = ; - close FILE; - chomp $iface; -} -$servicenames{"$Lang::tr{'intrusion detection system'} (RED)"} = "snort_${iface}"; -$servicenames{"$Lang::tr{'intrusion detection system'} (GREEN)"} = "snort_$netsettings{'GREEN_DEV'}"; -if ($netsettings{'ORANGE_DEV'} ne '') { - $servicenames{"$Lang::tr{'intrusion detection system'} (ORANGE)"} = "snort_$netsettings{'ORANGE_DEV'}"; -} -if ($netsettings{'BLUE_DEV'} ne '') { - $servicenames{"$Lang::tr{'intrusion detection system'} (BLUE)"} = "snort_$netsettings{'BLUE_DEV'}"; -} - -&Header::showhttpheaders(); - -&Header::getcgihash(\%cgiparams); - -&Header::openpage($Lang::tr{'status information'}, 1, ''); - -&Header::openbigbox('100%', 'left'); - -&Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}"); -if (-e "$Header::graphdir/cpu-day.png") { - my $ftime = localtime((stat("$Header::graphdir/cpu-day.png"))[9]); - print "
$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; - print ""; - print ""; - print ""; -} else { - print $Lang::tr{'no information available'}; -} -print "
\n"; -&Header::closebox(); - -&Header::openbox('100%', 'center', "Load $Lang::tr{'graph'}"); -if (-e "$Header::graphdir/load-day.png") { - my $ftime = localtime((stat("$Header::graphdir/load-day.png"))[9]); - print "
$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; - print ""; - print ""; - print ""; -} else { - print $Lang::tr{'no information available'}; -} -print "
\n"; -&Header::closebox(); - -&Header::openbox('100%', 'left', $Lang::tr{'services'}); - -print < - -END -; - -my $lines = 0; -my $key = ''; -foreach $key (sort keys %servicenames) -{ - if ($lines % 2) { - print "\n"; } - else { - print "\n"; } - print "\n"; - my $shortname = $servicenames{$key}; - my $status = &isrunning($shortname); - print "$status\n"; - print "\n"; - $lines++; -} - - -print "
$key
\n"; - -&Header::closebox(); - -&Header::openbox('100%', 'left', $Lang::tr{'loaded modules'}); -my $module = qx(/bin/lsmod | awk -F" " '{print \$1}'); -my $size = qx(/bin/lsmod | awk -F" " '{print \$2}'); -my $used = qx(/bin/lsmod | awk -F" " '{print \$3}'); -my @usedby = qx(/bin/lsmod | awk -F" " '{print \$4}'); -my @usedbyf; -my $usedbyline; - -foreach $usedbyline(@usedby) -{ -my $laenge = length($usedbyline); - -if ( $laenge > 30) - { - my $usedbylinef=substr($usedbyline,0,30); - $usedbyline="$usedbylinef ...\n"; - push(@usedbyf,$usedbyline); - } -else - {push(@usedbyf,$usedbyline);} -} -print < -
$module
-
$size
-
$used
-
@usedbyf
- -END -; - -print ""; -&Header::closebox(); - -&Header::closebigbox(); - -&Header::closepage(); - -sub isrunning -{ - my $cmd = $_[0]; - my $status = "$Lang::tr{'stopped'}"; - my $pid = ''; - my $testcmd = ''; - my $exename; - - $cmd =~ /(^[a-z]+)/; - $exename = $1; - - if (open(FILE, "/var/run/${cmd}.pid")) - { - $pid = ; chomp $pid; - close FILE; - if (open(FILE, "/proc/${pid}/status")) - { - while () - { - if (/^Name:\W+(.*)/) { - $testcmd = $1; } - } - close FILE; - if ($testcmd =~ /$exename/) - { - $status = "$Lang::tr{'running'}"; - } - } - } - - return $status; -} - -sub percentbar -{ - my $percent = $_[0]; - my $fg = '#a0a0a0'; - my $bg = '#e2e2e2'; - - if ($percent =~ m/^(\d+)%$/ ) - { - print < - -END -; - if ($percent eq "100%") { - print "" - } elsif ($percent eq "0%") { - print "" - } else { - print "" - } - print < -END -; - } +require "${General::swroot}/graphs.pl"; + +my %color = (); +my %mainsettings = (); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); +&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); + +my @querry = split(/\?/,$ENV{'QUERY_STRING'}); +$querry[0] = '' unless defined $querry[0]; +$querry[1] = 'hour' unless defined $querry[1]; + +if ( $querry[0] =~ "cpufreq"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatecpufreqgraph($querry[1]); +}elsif ( $querry[0] =~ "cpu"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatecpugraph($querry[1]); +}elsif ( $querry[0] =~ "load"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updateloadgraph($querry[1]); +}else{ + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'status information'}, 1, ''); + &Header::openbigbox('100%', 'left'); + + &Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}"); + &Graphs::makegraphbox("system.cgi","cpu","day"); + &Header::closebox(); + + if ( -e "$mainsettings{'RRDLOG'}/collectd/localhost/cpufreq/cpufreq-0.rrd"){ + &Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}"); + &Graphs::makegraphbox("system.cgi","cpufreq","day"); + &Header::closebox(); + } + + &Header::openbox('100%', 'center', "Load $Lang::tr{'graph'}"); + &Graphs::makegraphbox("system.cgi","load","day"); + &Header::closebox(); + + &Header::closebigbox(); + &Header::closepage(); }