View | Details | Raw Unified | Return to bug 20919
Collapse All | Expand All

(-)a/lightsquid/graph.cgi (-66 / +127 lines)
Lines 36-41 $png = $co->param('png'); Link Here
36
$mminy=60-50;
36
$mminy=60-50;
37
$mmaxy=420-50;
37
$mmaxy=420-50;
38
38
39
# http://192.168.2.1/lightsquid/graph.cgi?year=2009&month=07&mode=month
40
#$year="2009";
41
#$month="06";
42
#$mode="month";
43
#$png=1;
44
#
45
#http://192.168.2.1/lightsquid/graph.cgi?year=2009&month=07&mode=user&user=192.168.2.1
46
#$year="2009";
47
#$month="07";
48
#$mode="user";
49
#$user="192.168.2.1";
50
39
my @MAP;
51
my @MAP;
40
52
41
sub fixnum($) {
53
sub fixnum($) {
Lines 50-64 sub fixnum($) { Link Here
50
sub GetY($) {
62
sub GetY($) {
51
    my $value    = shift;
63
    my $value    = shift;
52
    my $all      = $mmaxy - 30;
64
    my $all      = $mmaxy - 30;
53
    my $diapazon = 5;
65
#    my $diapazon = 5;
54
    my $indep    = $all / $diapazon;
66
#    my $indep    = $all / $diapazon;
55
56
    my $tmp = $all / $max;
57
58
    if ( $max < $value ) { $value = $max; }
59
60
    my $y = $mmaxy - $value * $tmp;
61
67
68
    my $tmp=$all/($automax-$automin);
69
    if ( $automax < $value ) { $value = $automax; }
70
    my $y=$mmaxy-($value-$automin)*$tmp;
62
    return int($y);
71
    return int($y);
63
} ## end sub GetY($)
72
} ## end sub GetY($)
64
73
Lines 126-131 sub InitGraph() { Link Here
126
    $black      = $im->colorAllocate(   0,   0,   0 );
135
    $black      = $im->colorAllocate(   0,   0,   0 );
127
    $blue       = $im->colorAllocate(  35,  35, 227 );
136
    $blue       = $im->colorAllocate(  35,  35, 227 );
128
    $dimgray    = $im->colorAllocate( 105, 105, 105 );
137
    $dimgray    = $im->colorAllocate( 105, 105, 105 );
138
    $dimgray2   = $im->colorAllocate( 170, 170, 170 );
129
    $darkblue   = $im->colorAllocate(   0,   0, 139 );
139
    $darkblue   = $im->colorAllocate(   0,   0, 139 );
130
    $goldenrod  = $im->colorAllocate( 234, 234, 174 );
140
    $goldenrod  = $im->colorAllocate( 234, 234, 174 );
131
    $goldenrod2 = $im->colorAllocate( 207, 181,  59 );
141
    $goldenrod2 = $im->colorAllocate( 207, 181,  59 );
Lines 190-230 sub InitGraph() { Link Here
190
    #50M-  show only line
200
    #50M-  show only line
191
    #50M.  skip this value
201
    #50M.  skip this value
192
202
193
    #MONTH
194
    $gridvalues{month} = [ "50M-", "100M", "150M-", "200M", "250M-", "300M", "350M-", "400M", "450M-", "500M", "550M.", "600M", "700M", "800M", "900M", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G", "9G" , "10G" , "15G" , "20G", "25G", "30G" ];
195
196
    #USER
197
    $gridvalues{user} = [ "5M", "10M", "15M", "20M", "25M", "30M", "35M", "40M", "45M", "50M", "55M", "60M.", "70M", "80M.", "90M", "1G", "2G", "3G", "4G", "5G" ];
198
199
    $hh{"K"} = 1024;
203
    $hh{"K"} = 1024;
200
    $hh{"M"} = 1024 * 1024;
204
    $hh{"M"} = 1024 * 1024;
201
    $hh{"G"} = 1024 * 1024 * 1024;
205
    $hh{"G"} = 1024 * 1024 * 1024;
202
    $hh{"T"} = 1024 * 1024 * 1024 * 1024;
206
    $hh{"T"} = 1024 * 1024 * 1024 * 1024;
203
207
204
    for ( $i = 0 ; $i < $#{ $gridvalues{$mode} } + 1 ; $i++ ) {
208
  $numberoflines=10;
205
        $gridvalues{$mode}[$i] =~ m/(\d*)(\D)([\.-])?/;
209
  $base=10;
206
210
  $autostep=$automax-$automin;
207
        $flag = $3;
211
  $automax=$numberoflines*1024+$automin if($autostep<$numberoflines*1024);
208
        next if ( $flag eq "." );
212
  $autostep=$automax-$automin;
209
213
  $autostep=1 if($autostep==0);
210
        $v = $1 * $hh{$2};
214
  $autostep/=($numberoflines);
211
        $y = GetY($v) - 5;
215
  $prepow=int(log($autostep)/log(2**10));
212
216
  $prepow++ if($automax/$autostep>$base);
213
        next if ( $v > $max );
217
  $autostep/=(2**10)**$prepow;
214
218
  $pow=int(log($autostep)/log($base));
215
        $im->line( 60, $y, 700, $y, $dimgray );
219
  $step=$autostep/$base**$pow;
216
220
  #print("$step\n");
217
        $im->line( 50, $y + 5, 60, $y, $dimgray );
221
  if   ($step<=0.1) {$step=0.1;}
218
        $im->line( 47, $y + 5, 50, $y + 5, $dimgray );
222
  elsif($step<=0.2) {$step=0.2;}
219
223
  elsif($step<=0.5) {$step=0.5;}
220
        next if ( $flag eq "-" );
224
  elsif($step<=1) {$step=1;}
221
225
  elsif($step<=2) {$step=2;}
222
        $im->string( gdSmallFont, 21, $y - 2, fixnum($v), $dimgray );
226
  elsif($step<=5) {$step=5;}
223
    } ## end for ( $i = 0 ; $i < $#{...
227
  else {$step=10;};
224
228
  $autostep=$step*$base**$pow*(2**10)**$prepow;
225
    #axis name
229
  $automin1=int($automin/$autostep)*$autostep;
226
    $im->stringUp( gdLargeFont, 20 - 15, 248 - 9, "BYTES", $dimgray );
230
  $automax1=int($automax/$autostep)*$autostep;
227
    $im->string( gdLargeFont, 330 + 15, $mmaxy + 20, "DAYS", $dimgray );
231
  if($automin1>$automin) {
232
    $automin=int($automin/$autostep-1)*$autostep;
233
  } else {
234
    $automin=$automin1;
235
  };
236
237
  if($automax1<$automax) {
238
    $automax=int($automax/$autostep+1)*$autostep;
239
  } else {
240
    $automax=$automax1;
241
  }
242
243
  for($v=$automin; $v<=$automax; $v+=$autostep/2) {
244
    $y=GetY($v);
245
    $im->line( 60, $y, 700, $y, $dimgray2 );
246
    $im->line( 50, $y + 5, 60, $y, $dimgray2 );
247
    $im->line( 47, $y + 5, 50, $y + 5, $dimgray2 );
248
    #$im->string( gdSmallFont, 21, $y - 2, fixnum($v), $dimgray2 );
249
  }
250
251
  for($v=$automin; $v<=$automax; $v+=$autostep) {
252
    $y=GetY($v);
253
    $im->line( 60, $y, 700, $y, $dimgray );
254
    $im->line( 50, $y + 5, 60, $y, $dimgray );
255
    $im->line( 47, $y + 5, 50, $y + 5, $dimgray );
256
    $im->string( gdSmallFont, 21, $y - 2, fixnum($v), $dimgray );
257
  }
258
259
  #axis name
260
  $im->stringUp( gdLargeFont, 20 - 15, 248 - 9, "BYTES", $dimgray );
261
  $im->string( gdLargeFont, 330 + 15, $mmaxy + 20, "DAYS", $dimgray );
228
} ## end sub InitGraph($$$)
262
} ## end sub InitGraph($$$)
229
263
230
264
Lines 233-239 sub InitGraph() { Link Here
233
if ( $mode eq "user" )  { $max = $graphmaxuser; $varname="graphmaxuser";}
267
if ( $mode eq "user" )  { $max = $graphmaxuser; $varname="graphmaxuser";}
234
if ( $mode eq "month" ) { $max = $graphmaxall;  $varname="graphmaxall";}
268
if ( $mode eq "month" ) { $max = $graphmaxall;  $varname="graphmaxall";}
235
269
236
$max=1 if ($max == 0); #div0 protection
270
$average = 0;
271
$days    = 0;
272
$automin = 0;
273
$automax = 0;
274
275
#$max=1 if ($max == 0); #div0 protection
276
$filter  = "$year$month";
277
@daylist = glob("$reportpath/$filter*");
278
foreach $daypath ( sort @daylist ) {
279
  open FF, "<$daypath/.total";
280
  $tmp  = <FF>;
281
  $size = <FF>;
282
  chomp $size;
283
  $size    =~ s/^size: //;
284
  $daypath =~ m/(\d\d\d\d)(\d\d)(\d\d)/;
285
  if ( $mode eq "month" ) {
286
    # bar( $3, $size );
287
    $bars{$3}=$size;
288
    $average += $size;
289
  }
290
  elsif ( $mode eq "user" ) {
291
    while (<FF>) {
292
      ( $user_, $size, $hit ) = split;
293
      if ( $user_ eq $user ) { 
294
      # bar( $3, $size );
295
      $bars{$3}=$size;
296
      $average += $size;
297
      }
298
    }
299
  } ## end elsif ( $mode eq "user" )
300
  $days++;
301
  close FF;
302
} ## end foreach $daypath ( sort @daylist)
303
304
if(0==$max) {
305
  while(($bday,$bytes)=each(%bars)) {
306
    $automin=$bytes if($automin==0);
307
    $automax=$bytes if($automax==0);
308
    $automin=$bytes if($automin>$bytes);
309
    $automax=$bytes if($automax<$bytes);
310
  }
311
  if($automin==$automax) {
312
    $automax=1000 if(0==$automax);
313
    $automin=0;
314
  }
315
} else {
316
    $automin=0;
317
    $automax=$max;
318
}
237
319
238
if ( $png == 1 ) {
320
if ( $png == 1 ) {
239
    print "Content-type: image/png\n\n";
321
    print "Content-type: image/png\n\n";
Lines 260-291 if ( $png == 1 ) { Link Here
260
    ReplaceTPL( MODE, $txtmode );
342
    ReplaceTPL( MODE, $txtmode );
261
}
343
}
262
344
345
while (($bday,$bytes)=each(%bars)) {
346
  bar($bday,$bytes);
347
}
263
348
264
$average = 0;
265
$days    = 0;
266
$filter  = "$year$month";
267
@daylist = glob("$reportpath/$filter*");
268
foreach $daypath ( sort @daylist ) {
269
    open FF, "<$daypath/.total";
270
    $tmp  = <FF>;
271
    $size = <FF>;
272
    chomp $size;
273
    $size    =~ s/^size: //;
274
    $daypath =~ m/(\d\d\d\d)(\d\d)(\d\d)/;
275
349
276
    if ( $mode eq "month" ) {
277
        bar( $3, $size );
278
        $average += $size;
279
    }
280
    elsif ( $mode eq "user" ) {
281
        while (<FF>) {
282
            ( $user_, $size, $hit ) = split;
283
            if ( $user_ eq $user ) { bar( $3, $size ); $average += $size; }
284
        }
285
    } ## end elsif ( $mode eq "user" )
286
    $days++;
287
    close FF;
288
} ## end foreach $daypath ( sort @daylist)
289
350
290
if ( $png == 1 ) {
351
if ( $png == 1 ) {
291
352
Lines 323-332 else { Link Here
323
384
324
385
325
    $maxaverage /= ($maxaverageday+1);
386
    $maxaverage /= ($maxaverageday+1);
326
    ReplaceTPL( VARVALUE,sprintf("%1.2f",int(($maxaverage+($maxaverage*0.30))/(1024*1024*1024/10)+1)/10));
387
      ReplaceTPL( VARVALUE,sprintf("%1.2f",int(($maxaverage+($maxaverage*0.30))/(1024*1024*1024/10)+1)/10));
327
    ReplaceTPL( VARNAME,$varname);
388
      ReplaceTPL( VARNAME,$varname);
328
    ReplaceTPL(MSG_HEADER_URL,"index.cgi");
389
    ReplaceTPL(MSG_HEADER_URL,"index.cgi");
329
    HideTPL("warning") if ($maxcntr < 7);
390
    HideTPL("warning") if(($maxcntr < 7)||(0==$max));
330
391
331
    ApplyTPL();
392
    ApplyTPL();
332
    PrintTPL();
393
    PrintTPL();
(-)a/lightsquid/lightsquid.cfg (-2 / +5 lines)
Lines 146-154 $graphreport = 1; Link Here
146
146
147
#higest value on graph report
147
#higest value on graph report
148
# for user month report (0.05*(...) = 50mb)
148
# for user month report (0.05*(...) = 50mb)
149
# 0 means autodetect
149
$graphmaxuser=0.05*(1024*1024*1024);
150
$graphmaxuser=0.05*(1024*1024*1024);
151
$graphmaxuser=0;
150
# for all user month report (1.05*(...) = 1 Gb)
152
# for all user month report (1.05*(...) = 1 Gb)
151
$graphmaxall =0.80*(1024*1024*1024);
153
# 0 means autodetect
154
$graphmaxall=0.80*(1024*1024*1024);
155
$graphmaxall=0;
152
156
153
#color scheme for GRAPHICs, avaible "orange","blue","green","yellow","brown","red"
157
#color scheme for GRAPHICs, avaible "orange","blue","green","yellow","brown","red"
154
$barcolor="orange"; 
158
$barcolor="orange"; 
155
- 

Return to bug 20919