#!/usr/bin/perl
#
-# SmoothWall CGIs
-#
-# This code is distributed under the terms of the GPL
-#
-# (c) The SmoothWall Team
+# This code is based on hddGraph and mbmongraph
+# written by weizen_42 and distributed under the
+# terms of the GPLv2.
+# http://www.ban-solms.de/t/IPCop-mbmongraph.html
+# http://www.ban-solms.de/t/IPCop-hddgraph.html
#
use strict;
require '/var/ipfire/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
+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 %cgiparams=();
my @cgigraphs=();
-my @graphs=();
&Header::showhttpheaders();
-my $graphdir = "/home/httpd/html/graphs";
+my $graphdir = "/srv/web/ipfire/html/graphs";
+
+my @disks = `kudzu -qps -c HD | grep device: | cut -d" " -f2 | sort | uniq`;
+foreach (@disks){
+ my $disk = $_;
+ chomp $disk;
+ &Graphs::updatehddgraph ($disk,"day");&Graphs::updatehddgraph ($disk,"week");&Graphs::updatehddgraph ($disk,"month");&Graphs::updatehddgraph ($disk,"year");
+}
+
+ &Graphs::updatetempgraph ("day");
+ &Graphs::updatefangraph ("day");
+ &Graphs::updatevoltgraph ("day");
+
+my @graphs=();
&Header::getcgihash(\%cgiparams);
# print "$line = $cgiparams{$line}<br />\n";
# $debugCount++;
#}
-#print " Count: $debugCount\n";
+#print " Count: $debugCount<br />\n";
+#print " CGIParams: $cgigraphs[1]\n";
#&Header::closebox();
# DEBUG DEBUG
###############
-if ($cgigraphs[1] =~ /(temp|fan|volt)/)
+if ($cgigraphs[1] =~ /hddtemp/)
{
+ my $graph = $cgigraphs[1];
+ my $graphname = $Lang::tr{"harddisk temperature"};
+ &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 src='/graphs/${graph}-day.png' border='0' /><hr />";
+ print "<img src='/graphs/${graph}-week.png' border='0' /><hr />";
+ print "<img src='/graphs/${graph}-month.png' border='0' /><hr />";
+ print "<img src='/graphs/${graph}-year.png' border='0' />";
+ if ( -e "/var/log/smartctl_out_${graph}" )
+ {
+ my $output = `/bin/cat /var/log/smartctl_out_${graph}`;
+ $output = &Header::cleanhtml($output);
+ print "<hr><table border=0><tr><td align=left><pre>$output</pre></table>\n";
+ }
+ }
+ else
+ {
+ print $Lang::tr{'no information available'};
+ }
+ &Header::closebox();
+ print "<div align='center'><table width='80%'><tr><td align='center'>";
+ print "<a href='/cgi-bin/hardwaregraphs.cgi'>";
+ print "$Lang::tr{'back'}</a></td></tr></table></div>\n";
+}
+elsif ($cgigraphs[1] =~ /(temp|fan|volt)/)
+{
+if ($cgigraphs[1] =~ /temp/) {&Graphs::updatetempgraph ("week");&Graphs::updatetempgraph ("month");&Graphs::updatetempgraph ("year");}
+if ($cgigraphs[1] =~ /fan/) {&Graphs::updatefangraph ("week");&Graphs::updatefangraph ("month");&Graphs::updatefangraph ("year");}
+if ($cgigraphs[1] =~ /volt/) {&Graphs::updatevoltgraph ("week");&Graphs::updatevoltgraph ("month");&Graphs::updatevoltgraph ("year");}
+
my $graph = $cgigraphs[1];
my $graphname = $Lang::tr{"mbmon $cgigraphs[1]"};
&Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}");
}
&Header::closebox();
print "<div align='center'><table width='80%'><tr><td align='center'>";
- print "<a href='/cgi-bin/mbmongraph.cgi'>";
- print "$Lang::tr{'back'}</a></td></tr></table></div>\n";
-}
-elsif ($cgigraphs[1] =~ /(hdd)/)
-{
- my $graph = $cgigraphs[1];
- my $graphname = $Lang::tr{"harddisk temperature"};
- &Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}");
-
- if (-e "$graphdir/hddtemp-day.png")
- {
- my $ftime = localtime((stat("$graphdir/hddtemp-day.png"))[9]);
- print "<center>";
- print "<b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br /><hr />\n";
- print "<img src='/graphs/hddtemp-day.png' border='0' /><hr />";
- print "<img src='/graphs/hddtemp-week.png' border='0' /><hr />";
- print "<img src='/graphs/hddtemp-month.png' border='0' /><hr />";
- print "<img src='/graphs/hddtemp-year.png' border='0' />";
- if ( -e "/var/log/hddgraph_smartctl_out" )
- {
- my $output = `/bin/cat /var/log/hddgraph_smartctl_out`;
- $output = &Header::cleanhtml($output);
- print "<hr><pre>$output</pre>\n";
- }
- }
- else
- {
- print $Lang::tr{'no information available'};
- }
- &Header::closebox();
- print "<div align='center'><table width='80%'><tr><td align='center'>";
- print "<a href='/cgi-bin/mbmongraph.cgi'>";
+ print "<a href='/cgi-bin/hardwaregraphs.cgi'>";
print "$Lang::tr{'back'}</a></td></tr></table></div>\n";
}
else
{
my $ftime = localtime((stat("$graphdir/mbmon-temp-day.png"))[9]);
print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";
- print "<a href='/cgi-bin/mbmongraph.cgi?graph=temp'>";
+ print "<a href='/cgi-bin/hardwaregraphs.cgi?graph=temp'>";
print "<img src='/graphs/mbmon-temp-day.png' border='0' />";
print "</a>";
}
{
my $ftime = localtime((stat("$graphdir/mbmon-fan-day.png"))[9]);
print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";
- print "<a href='/cgi-bin/mbmongraph.cgi?graph=fan'>";
+ print "<a href='/cgi-bin/hardwaregraphs.cgi?graph=fan'>";
print "<img src='/graphs/mbmon-fan-day.png' border='0' />";
print "</a>";
}
{
my $ftime = localtime((stat("$graphdir/mbmon-volt-day.png"))[9]);
print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";
- print "<a href='/cgi-bin/mbmongraph.cgi?graph=volt'>";
+ print "<a href='/cgi-bin/hardwaregraphs.cgi?graph=volt'>";
print "<img src='/graphs/mbmon-volt-day.png' border='0' />";
print "</a>";
}
if ( $mbmon_settings{'GRAPH_HDD'} == 1 )
{
- &Header::openbox('100%', 'center', $Lang::tr{'harddisk temperature'});
- if (-e "$graphdir/hddtemp-day.png")
- {
- my $ftime = localtime((stat("$graphdir/hddtemp-day.png"))[9]);
- print "<center>";
- print "<b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br /><hr />\n";
- print "<a href='/cgi-bin/hddgraph.cgi?graph=hdd'>";
- print "<img src='/graphs/hddtemp-day.png' border='0' /><hr />";
- print "</a>";
- }
- else
- {
- print $Lang::tr{'no information available'};
- }
- print "<br />\n";
- &Header::closebox();
+ my @devices = `kudzu -qps -c HD | grep device: | cut -d" " -f2 | sort | uniq`;
+ foreach (@devices) {
+ my $device = $_;
+ chomp($device);
+ hddtempbox($device);}
}
&Header::openbox('100%', 'center', $Lang::tr{'settings'});
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<table width='100%'>
-<tr><td colspan='2'><input type='checkbox' name='TEMP' $selected_temp /> $Lang::tr{'mbmon temp'} $Lang::tr{'graph'}</td></tr>
-<tr><td colspan='2'><input type='checkbox' name='FAN' $selected_fan /> $Lang::tr{'mbmon fan'} $Lang::tr{'graph'}</td></tr>
-<tr><td colspan='2'><input type='checkbox' name='VOLT' $selected_volt /> $Lang::tr{'mbmon volt'} $Lang::tr{'graph'}</td></tr>
-<tr><td colspan='2'><input type='checkbox' name='HDD' $selected_hdd /> $Lang::tr{'harddisk temperature'}-$Lang::tr{'graph'}</td></tr>
+<tr><td colspan='2' align='left'><input type='checkbox' name='TEMP' $selected_temp /> $Lang::tr{'mbmon temp'} $Lang::tr{'graph'}</td></tr>
+<tr><td colspan='2' align='left'><input type='checkbox' name='FAN' $selected_fan /> $Lang::tr{'mbmon fan'} $Lang::tr{'graph'}</td></tr>
+<tr><td colspan='2' align='left'><input type='checkbox' name='VOLT' $selected_volt /> $Lang::tr{'mbmon volt'} $Lang::tr{'graph'}</td></tr>
+<tr><td colspan='2' align='left'><input type='checkbox' name='HDD' $selected_hdd /> $Lang::tr{'harddisk temperature'}-$Lang::tr{'graph'}</td></tr>
</table>
<hr />
<table width='100%' border='0' cellspacing='1' cellpadding='0'>
{
if ( $i % 2 )
{
- print("<tr bgcolor='$Header::table2colour'>");
+ print("<tr bgcolor='$color{'color22'}'>");
}
else
{
- print("<tr bgcolor='$Header::table1colour'>");
+ print("<tr bgcolor='$color{'color20'}'>");
}
$mbmon_settings{'LABEL-'.$key} = &Header::cleanhtml($mbmon_settings{'LABEL-'.$key});
print("<td align='center'><input type='checkbox' name='LINE-$key' $mbmon_graphs{$key}/></td>");
&Header::closebox();
}
-&Header::closebox();
-
&Header::closebigbox();
&Header::closepage();
+
+sub hddtempbox {
+ my $disk = $_[0];
+ if (-e "$graphdir/hddtemp-$disk-day.png") {
+
+ &Header::openbox('100%', 'center', "Disk /dev/$disk $Lang::tr{'graph'}");
+ my $ftime = localtime((stat("$graphdir/hddtemp-$disk-day.png"))[9]);
+ print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";
+ print "<a href='/cgi-bin/hardwaregraphs.cgi?graph=hddtemp-$disk'>";
+ print "<img src='/graphs/hddtemp-$disk-day.png' border='0' />";
+ print "</a>";
+ print "<br />\n";
+ &Header::closebox();
+ }
+}