chiark / gitweb /
blow ups; sensible scales on disk
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 26 Jun 2010 16:13:55 +0000 (17:13 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 26 Jun 2010 16:13:55 +0000 (17:13 +0100)
cgi

diff --git a/cgi b/cgi
index bf5ea7dbb1597567a0e7210807af35bd13e98608..de792b38bf9f1b0490f5f9e75124645b866c52ac 100755 (executable)
--- a/cgi
+++ b/cgi
@@ -96,7 +96,7 @@ foreach my $src (<$R/df/df-*.rrd>) {
     graph('Disk space', $vol, {
             Slower => 1,
           },
-         [
+         [ '-A','-l',0,'-r',
           qw(-b 1024 -l 0),
           (map { "DEF:$_=$src:$_:AVERAGE" } qw(free used)),
           "AREA:used#000:used:STACK",
@@ -133,12 +133,25 @@ navsetting({
 
 my $gname= param('graph');
 
+sub num_param ($$$$) {
+    my ($param,$def,$min,$max) = @_;
+    my $v= param($param);
+    return $def if !defined $v;
+    $v =~ m/^([1-9]\d{0,8})$/ or die;
+    $v= $1;
+    die unless $v >= $min && $v <= $max;
+    return $v + 0;
+}
+
 if ($gname) {
     my $g= $graphs{$section,$gname};
     die unless $g;
 
     my @args= @{ $g->{Args} };
 
+    my $width= num_param('w',370,100,1600);
+    my $height= num_param('h',200,100,1600);
+
     my $end= param('end');
     if (defined $end) {
         $end =~ m/^(\d+)$/ or die;
@@ -153,7 +166,9 @@ if ($gname) {
     $title .= " $g->{Units}" if $g->{Units};
     unshift @args, '-t', $title;
     
-    exec qw(rrdtool graph - -a PNG --full-size-mode -w 370 -h 200), @args;
+    exec (qw(rrdtool graph - -a PNG --full-size-mode),
+         '-w',$width, '-h',$height,
+         @args);
     die $!;
 }
 
@@ -198,7 +213,8 @@ if ($detail) {
     die unless $g;
     start_page("$detail graphs");
     foreach my $end (@timeranges[$g->{Slower}..$g->{Slower}+3]) {
-        print "<img src=\"$self?graph=$detail&section=$section&end=$end\">\n";
+       my $imgurl= "$self?graph=$detail&section=$section&end=$end";
+        print "<a href=\"$imgurl&w=780&h=800\"><img src=\"$imgurl\"></a>\n";
     }
     print end_html();
     exit 0;