X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Fhardwaregraphs.cgi;h=b0a5d3a36de7d94e506ec5d2f06f5cb13a319029;hp=911a63281f92af0c55c0fa74c3ba4fc0b5cd4490;hb=d7050fc04a06f0decd8faf12c559e899b3848191;hpb=3961e8317ff6be3eeb27dd8baee6268aaedc0b63 diff --git a/html/cgi-bin/hardwaregraphs.cgi b/html/cgi-bin/hardwaregraphs.cgi index 911a63281..b0a5d3a36 100644 --- a/html/cgi-bin/hardwaregraphs.cgi +++ b/html/cgi-bin/hardwaregraphs.cgi @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2005-2011 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 # @@ -30,23 +30,16 @@ require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; require "${General::swroot}/graphs.pl"; -my %sensorsettings = (); -my %cgiparams=(); -my @cgigraphs=(); -my $rrdlog = "/var/log/rrd"; - -&Header::showhttpheaders(); +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 $graphdir = "/srv/web/ipfire/html/graphs"; - -$ENV{'QUERY_STRING'} =~ s/&//g; -@cgigraphs = split(/graph=/,$ENV{'QUERY_STRING'}); -$cgigraphs[1] = '' unless defined $cgigraphs[1]; +my %sensorsettings = (); my @sensorsgraphs = (); -my @sensorsdir = `ls -dA $rrdlog/collectd/localhost/sensors-*/`; -foreach (@sensorsdir) -{ +my @sensorsdir = `ls -dA $mainsettings{'RRDLOG'}/collectd/localhost/sensors-*/`; +foreach (@sensorsdir){ chomp($_);chop($_); foreach (`ls $_/*`){ chomp($_); @@ -54,167 +47,127 @@ foreach (@sensorsdir) } } -&Header::getcgihash(\%sensorsettings); +my @querry = split(/\?/,$ENV{'QUERY_STRING'}); +$querry[0] = '' unless defined $querry[0]; +$querry[1] = 'hour' unless defined $querry[1]; + +if ( $querry[0] =~ "hwtemp"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatehwtempgraph($querry[1]); +}elsif ( $querry[0] =~ "hwfan"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatehwfangraph($querry[1]); +}elsif ( $querry[0] =~ "hwvolt"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatehwvoltgraph($querry[1]); +}elsif ( $querry[0] =~ "thermaltemp"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatethermaltempgraph($querry[1]); +}elsif ( $querry[0] =~ "sd?" ){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatehddgraph($querry[0],$querry[1]); +}else{ + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'harddisk temperature graphs'}, 1, ''); + &Header::openbigbox('100%', 'left'); + + &Header::getcgihash(\%sensorsettings); + + if ( $sensorsettings{'ACTION'} eq $Lang::tr{'save'} ) { + foreach(@sensorsgraphs){ + chomp($_); + $_ =~ /\/(.*)sensors-(.*)\/(.*)\.rrd/; + my $label = $2.$3;$label=~ s/-//g; + if ( $sensorsettings{'LINE-'.$label} ne "on" ){ + $sensorsettings{'LINE-'.$label} = 'off'; + } elsif ($sensorsettings{'LINE-'.$label} eq "on" ){ + $sensorsettings{'LINE-'.$label} = 'checked'; + } + $sensorsettings{'LABEL-'.$label} =~ s/\W//g; + } + &General::writehash("${General::swroot}/sensors/settings", \%sensorsettings); + } -if ( $sensorsettings{'ACTION'} eq $Lang::tr{'save'} ) { - foreach(@sensorsgraphs){ - chomp($_); - $_ =~ /\/(.*)sensors-(.*)\/(.*)\.rrd/; - my $label = $2.$3;$label=~ s/-//g; - if ( $sensorsettings{'LINE-'.$label} ne "on" ){$sensorsettings{'LINE-'.$label} = 'off';} - elsif ( $sensorsettings{'LINE-'.$label} eq "on" ){$sensorsettings{'LINE-'.$label} = 'checked';} + my @disks = `ls -1 /sys/block | grep -E '^sd' | sort | uniq`; + + foreach (@disks){ + my $disk = $_; + chomp $disk; + my @array = split(/\//,$disk); + + &Header::openbox('100%', 'center', "$array[$#array] $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi",$array[$#array],"day"); + &Header::closebox(); } - &General::writehash("${General::swroot}/sensors/settings", \%sensorsettings); -} -my @disks = `kudzu -qps -c HD | grep device: | cut -d" " -f2 | sort | uniq`; - -&Header::openpage($Lang::tr{'harddisk temperature graphs'}, 1, ''); -&Header::openbigbox('100%', 'left'); - -if ($cgigraphs[1] =~ /hwtemp/) {&Graphs::updatehwtempgraph ("hour");&Graphs::updatehwtempgraph ("week");&Graphs::updatehwtempgraph ("month");&Graphs::updatehwtempgraph ("year");graphbox("hwtemp");} -elsif ($cgigraphs[1] =~ /hwfan/) {&Graphs::updatehwfangraph ("hour");&Graphs::updatehwfangraph ("week");&Graphs::updatehwfangraph ("month");&Graphs::updatehwfangraph ("year");graphbox("hwfan");} -elsif ($cgigraphs[1] =~ /hwvolt/) {&Graphs::updatehwvoltgraph ("hour");&Graphs::updatehwvoltgraph ("week");&Graphs::updatehwvoltgraph ("month");&Graphs::updatehwvoltgraph ("year");graphbox("hwvolt");} -elsif ($cgigraphs[1] =~ /hddtemp/) { - foreach (@disks){ - my $disk = $_; - chomp $disk; - my @array = split(/\//,$disk); - &Graphs::updatehddgraph ($array[$#array],"week");&Graphs::updatehddgraph ($array[$#array],"month");&Graphs::updatehddgraph ($array[$#array],"year"); - hddtempbox($array[$#array]); + if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/thermal-thermal_zone* 2>/dev/null` ) { + &Header::openbox('100%', 'center', "ACPI Thermal-Zone Temp $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","thermaltemp","day"); + &Header::closebox(); } -} -else -{ - &Graphs::updatehwtempgraph ("day");&Graphs::updatehwfangraph ("day");&Graphs::updatehwvoltgraph ("day"); - foreach (@disks){ - my $disk = $_; - chomp $disk; - my @array = split(/\//,$disk); - &Graphs::updatehddgraph ($array[$#array],"day"); - if (-e "$graphdir/hddtemp-$disk-day.png") { - - &Header::openbox('100%', 'center', "Disk $disk $Lang::tr{'graph'}"); - my $ftime = localtime((stat("$graphdir/hddtemp-$disk-day.png"))[9]); - print "
$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; - print ""; - print ""; - print ""; - print "
\n"; - &Header::closebox(); - } - } - - my @graphs = ("hwtemp","hwfan","hwvolt"); - foreach (@graphs){ - &Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}"); - if (-e "$graphdir/sensors-$_-day.png"){ - my $ftime = localtime((stat("$graphdir/sensors-$_-day.png"))[9]); - print "
"; - print "$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; - print ""; - print ""; - print "
"; - } - else{print $Lang::tr{'no information available'};} - &Header::closebox(); - } - sensorsbox(); -} -&Header::closebigbox(); -&Header::closepage(); - -sub hddtempbox { - my $disk = $_[0]; - if (-e "$graphdir/hddtemp-$disk-week.png") { - - &Header::openbox('100%', 'center', "Disk $disk $Lang::tr{'graph'}"); - my $ftime = localtime((stat("$graphdir/hddtemp-$disk-week.png"))[9]); - print "
$Lang::tr{'the statistics were last updated at'}: $ftime

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

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

\n"; - print ""; - print "
\n"; - &Header::closebox(); - } -} + if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/sensors-*/temperature-* 2>/dev/null` ) { + &Header::openbox('100%', 'center', "hwtemp $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","hwtemp","day","375"); + Header::closebox(); + } + + if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/sensors-*/fanspeed-* 2>/dev/null` ) { + &Header::openbox('100%', 'center', "hwfan $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","hwfan","day"); + &Header::closebox(); + } + + if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/sensors-*/voltage-* 2>/dev/null` ) { + &Header::openbox('100%', 'center', "hwvolt $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","hwvolt","day","435"); + &Header::closebox(); + } + + if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/sensors-* 2>/dev/null` ) { + sensorsbox(); + } + &Header::closebigbox(); + &Header::closepage(); -sub graphbox { - my $graph = $_[0]; - - &Header::openbox('100%', 'center', "$graph $Lang::tr{'graph'}"); - if (-e "$graphdir/sensors-$graph-week.png"){ - my $ftime = localtime((stat("$graphdir/sensors-$graph-week.png"))[9]); - print "
"; - print "$Lang::tr{'the statistics were last updated at'}: $ftime

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

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

\n"; - print "
"; - } - else{print $Lang::tr{'no information available'};} - &Header::closebox(); } -sub sensorsbox{ - &Header::openbox('100%', 'center', "$Lang::tr{'mbmon settings'}"); - if ( $cgiparams{'ACTION'} eq $Lang::tr{'save'} ){print "Test";} +sub sensorsbox { + &Header::openbox('100%', 'center', "$Lang::tr{'mbmon settings'}"); - print < - - - - + print < +
$Lang::tr{'mbmon display'}$Lang::tr{'mbmon label'}
+ + + + END ; -foreach (@sensorsgraphs){ - $_ =~ /\/(.*)sensors-(.*)\/(.*)\.rrd/; - my $label = $2.$3;$label=~ s/-//g; - $sensorsettings{'LABEL-'.$label}="$label"; - $sensorsettings{'LINE-'.$label}="checked"; - &General::readhash("${General::swroot}/sensors/settings", \%sensorsettings); - print(""); - print("\n"); -} - print < -
$Lang::tr{'mbmon display'}$Lang::tr{'mbmon label'}
- + + foreach (@sensorsgraphs){ + $_ =~ /\/(.*)sensors-(.*)\/(.*)\.rrd/; + my $label = $2.$3;$label=~ s/-//g; + $sensorsettings{'LABEL-'.$label}="$label"; + $sensorsettings{'LINE-'.$label}="checked"; + &General::readhash("${General::swroot}/sensors/settings", \%sensorsettings); + print(""); + print("\n"); + } + + print < + + + + END ; - &Header::closebox(); + &Header::closebox(); }