]>
git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - html/cgi-bin/logs.cgi/calamaris.dat
3 # This code is distributed under the terms of the GPL
5 # (c) 2005,2006 marco.s
7 # $Id: calamaris.dat,v 2.1 2006/03/12 00:00:00 marco.s Exp $
12 # enable only the following on debugging purpose
14 #use CGI::Carp 'fatalsToBrowser';
19 require '/var/ipfire/general-functions.pl';
20 require "${General::swroot}/lang.pl";
21 require "${General::swroot}/header.pl";
25 my $squidlogdir = "/var/log/squid";
26 my $reportdir = "${General::swroot}/proxy/calamaris/reports";
28 unless (-e
$reportdir) { mkdir($reportdir) }
31 my %reportsettings=();
37 my $hintcolour='#FFFFCC';
41 my %monthidx = (qw(Jan 0 Feb 1 Mar 2 Apr 3 May 4 Jun 5 Jul 6 Aug 7 Sep 8 Oct 9 Nov 10 Dec 11));
43 my @longmonths = ( $Lang::tr
{'january'}, $Lang::tr
{'february'}, $Lang::tr
{'march'},
44 $Lang::tr
{'april'}, $Lang::tr
{'may'}, $Lang::tr
{'june'}, $Lang::tr
{'july'},
45 $Lang::tr
{'august'}, $Lang::tr
{'september'}, $Lang::tr
{'october'},
46 $Lang::tr
{'november'}, $Lang::tr
{'december'} );
48 my @now = localtime(time);
49 my $year = $now[5]+1900;
58 $reportsettings{'ACTION'} = '';
60 $reportsettings{'DAY_BEGIN'} = $now[3];
61 $reportsettings{'MONTH_BEGIN'} = $now[4];
62 $reportsettings{'YEAR_BEGIN'} = $now[5]+1900;
63 $reportsettings{'DAY_END'} = $now[3];
64 $reportsettings{'MONTH_END'} = $now[4];
65 $reportsettings{'YEAR_END'} = $now[5]+1900;
67 $reportsettings{'ENABLE_DOMAIN'} = 'off';
68 $reportsettings{'NUM_DOMAINS'} = '10';
69 $reportsettings{'ENABLE_PERFORMANCE'} = 'off';
70 $reportsettings{'PERF_INTERVAL'} = '60';
71 $reportsettings{'ENABLE_CONTENT'} = 'off';
72 $reportsettings{'NUM_CONTENT'} = '10';
73 $reportsettings{'ENABLE_REQUESTER'} = 'off';
74 $reportsettings{'ENABLE_USERNAME'} = 'off';
75 $reportsettings{'NUM_HOSTS'} = '10';
76 $reportsettings{'NUM_URLS'} = '0';
77 $reportsettings{'ENABLE_HISTOGRAM'} = 'off';
78 $reportsettings{'HIST_LEVEL'} = '10';
79 $reportsettings{'ENABLE_VERBOSE'} = 'off';
80 $reportsettings{'BYTE_UNIT'} = 'B';
81 $reportsettings{'SKIP_GZLOGS'} = 'off';
82 $reportsettings{'RUN_BACKGROUND'} = 'off';
84 &Header
::getcgihash
(\
%reportsettings);
86 if ($reportsettings{'ACTION'} eq $Lang::tr
{'calamaris create report'})
88 $cgiparams{'DAY_BEGIN'} = $reportsettings{'DAY_BEGIN'};
89 $cgiparams{'MONTH_BEGIN'} = $reportsettings{'MONTH_BEGIN'};
90 $cgiparams{'YEAR_BEGIN'} = $reportsettings{'YEAR_BEGIN'};
91 $cgiparams{'DAY_END'} = $reportsettings{'DAY_END'};
92 $cgiparams{'MONTH_END'} = $reportsettings{'MONTH_END'};
93 $cgiparams{'YEAR_END'} = $reportsettings{'YEAR_END'};
95 delete $reportsettings{'DAY_BEGIN'};
96 delete $reportsettings{'MONTH_BEGIN'};
97 delete $reportsettings{'YEAR_BEGIN'};
98 delete $reportsettings{'DAY_END'};
99 delete $reportsettings{'MONTH_END'};
100 delete $reportsettings{'YEAR_END'};
101 delete $reportsettings{'REPORT'};
103 &General
::writehash
("${General::swroot}/proxy/calamaris/settings", \
%reportsettings);
105 $reportsettings{'DAY_BEGIN'} = $cgiparams{'DAY_BEGIN'};
106 $reportsettings{'MONTH_BEGIN'} = $cgiparams{'MONTH_BEGIN'};
107 $reportsettings{'YEAR_BEGIN'} = $cgiparams{'YEAR_BEGIN'};
108 $reportsettings{'DAY_END'} = $cgiparams{'DAY_END'};
109 $reportsettings{'MONTH_END'} = $cgiparams{'MONTH_END'};
110 $reportsettings{'YEAR_END'} = $cgiparams{'YEAR_END'};
112 $day_begin = $reportsettings{'DAY_BEGIN'};
113 $month_begin = $reportsettings{'MONTH_BEGIN'};
114 $year_begin = $reportsettings{'YEAR_BEGIN'};
115 $day_end = $reportsettings{'DAY_END'};
116 $month_end = $reportsettings{'MONTH_END'};
117 $year_end = $reportsettings{'YEAR_END'};
119 if ($reportsettings{'SKIP_GZLOGS'} eq 'on') { $commandline.='nogz '; }
121 $commandline.="$day_begin $month_begin $year_begin $day_end $month_end $year_end";
123 if ($reportsettings{'ENABLE_DOMAIN'} eq 'on')
125 $commandline.=' -d ';
126 $commandline.=$reportsettings{'NUM_DOMAINS'};
128 if ($reportsettings{'ENABLE_PERFORMANCE'} eq 'on')
130 $commandline.=' -P ';
131 $commandline.=$reportsettings{'PERF_INTERVAL'};
133 if ($reportsettings{'ENABLE_CONTENT'} eq 'on')
135 $commandline.=' -t ';
136 $commandline.=$reportsettings{'NUM_CONTENT'};
138 if ($reportsettings{'ENABLE_HISTOGRAM'} eq 'on')
140 $commandline.=' -D ';
141 $commandline.=$reportsettings{'HIST_LEVEL'};
143 if ($reportsettings{'ENABLE_REQUESTER'} eq 'on')
145 if ($reportsettings{'ENABLE_USERNAME'} eq 'on')
149 $commandline.=' -r ';
150 $commandline.=$reportsettings{'NUM_HOSTS'};
152 unless ($reportsettings{'NUM_URLS'} eq '0')
154 $commandline.=' -R ';
155 $commandline.=$reportsettings{'NUM_URLS'};
158 unless ($reportsettings{'BYTE_UNIT'} eq 'B')
160 $commandline.=' -U ';
161 $commandline.=$reportsettings{'BYTE_UNIT'};
163 if ($reportsettings{'ENABLE_VERBOSE'} eq 'on')
168 $commandline.=' < /dev/null > /dev/null 2>&1';
170 if ($reportsettings{'RUN_BACKGROUND'} eq 'on') { $commandline.=" &"; }
172 system("${General::swroot}/proxy/calamaris/bin/mkreport $commandline")
175 if ($reportsettings{'ACTION'} eq $Lang::tr
{'export'})
177 print "Content-type: application/octet-stream\n";
178 print "Content-length: ";
179 print (-s
"$reportdir/$reportsettings{'REPORT'}");
181 print "Content-disposition: attachment; filename=$reportsettings{'REPORT'}\n\n";
183 open (FILE
, "$reportdir/$reportsettings{'REPORT'}");
184 while (<FILE
>) { print; }
190 if ($reportsettings{'ACTION'} eq $Lang::tr
{'delete'}) { unlink("$reportdir/$reportsettings{'REPORT'}"); }
192 if (-e
"${General::swroot}/proxy/calamaris/settings")
194 &General
::readhash
("${General::swroot}/proxy/calamaris/settings", \
%reportsettings);
197 &Header
::showhttpheaders
();
199 $checked{'ENABLE_DOMAIN'}{'off'} = '';
200 $checked{'ENABLE_DOMAIN'}{'on'} = '';
201 $checked{'ENABLE_DOMAIN'}{$reportsettings{'ENABLE_DOMAIN'}} = "checked='checked'";
202 $selected{'NUM_DOMAINS'}{$reportsettings{'NUM_DOMAINS'}} = "selected='selected'";
203 $checked{'ENABLE_PERFORMANCE'}{'off'} = '';
204 $checked{'ENABLE_PERFORMANCE'}{'on'} = '';
205 $checked{'ENABLE_PERFORMANCE'}{$reportsettings{'ENABLE_PERFORMANCE'}} = "checked='checked'";
206 $selected{'PERF_INTERVAL'}{$reportsettings{'PERF_INTERVAL'}} = "selected='selected'";
207 $checked{'ENABLE_CONTENT'}{'off'} = '';
208 $checked{'ENABLE_CONTENT'}{'on'} = '';
209 $checked{'ENABLE_CONTENT'}{$reportsettings{'ENABLE_CONTENT'}} = "checked='checked'";
210 $selected{'NUM_CONTENT'}{$reportsettings{'NUM_CONTENT'}} = "selected='selected'";
211 $checked{'ENABLE_REQUESTER'}{'off'} = '';
212 $checked{'ENABLE_REQUESTER'}{'on'} = '';
213 $checked{'ENABLE_REQUESTER'}{$reportsettings{'ENABLE_REQUESTER'}} = "checked='checked'";
214 $checked{'ENABLE_USERNAME'}{'off'} = '';
215 $checked{'ENABLE_USERNAME'}{'on'} = '';
216 $checked{'ENABLE_USERNAME'}{$reportsettings{'ENABLE_USERNAME'}} = "checked='checked'";
217 $selected{'NUM_HOSTS'}{$reportsettings{'NUM_HOSTS'}} = "selected='selected'";
218 $selected{'NUM_URLS'}{$reportsettings{'NUM_URLS'}} = "selected='selected'";
219 $checked{'ENABLE_HISTOGRAM'}{'off'} = '';
220 $checked{'ENABLE_HISTOGRAM'}{'on'} = '';
221 $checked{'ENABLE_HISTOGRAM'}{$reportsettings{'ENABLE_HISTOGRAM'}} = "checked='checked'";
222 $selected{'HIST_LEVEL'}{$reportsettings{'HIST_LEVEL'}} = "selected='selected'";
223 $checked{'ENABLE_VERBOSE'}{'off'} = '';
224 $checked{'ENABLE_VERBOSE'}{'on'} = '';
225 $checked{'ENABLE_VERBOSE'}{$reportsettings{'ENABLE_VERBOSE'}} = "checked='checked'";
226 $selected{'BYTE_UNIT'}{$reportsettings{'BYTE_UNIT'}} = "selected='selected'";
227 $checked{'SKIP_GZLOGS'}{'off'} = '';
228 $checked{'SKIP_GZLOGS'}{'on'} = '';
229 $checked{'SKIP_GZLOGS'}{$reportsettings{'SKIP_GZLOGS'}} = "checked='checked'";
230 $checked{'RUN_BACKGROUND'}{'off'} = '';
231 $checked{'RUN_BACKGROUND'}{'on'} = '';
232 $checked{'RUN_BACKGROUND'}{$reportsettings{'RUN_BACKGROUND'}} = "checked='checked'";
234 &Header
::openpage
($Lang::tr
{'calamaris proxy reports'}, 1, '');
236 &Header
::openbigbox
('100%', 'left', '', $errormessage);
239 &Header
::openbox
('100%', 'left', $Lang::tr
{'error messages'});
240 print "<font class='base'>$errormessage </font>\n";
244 &Header
::openbox
('100%', 'left', "$Lang::tr{'settings'}:");
247 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
248 <table width='100%' border='0'>
250 <td colspan='8' class='base'><b>$Lang::tr{'calamaris report period'}</b></td>
253 <td width='9%' class='base'>$Lang::tr{'from'}:</td>
255 <select name='MONTH_BEGIN'>
258 for ($month_begin = 0; $month_begin < 12; $month_begin++)
261 if ($month_begin == $reportsettings{'MONTH_BEGIN'}) {
262 print 'selected="selected" '; }
263 print "value='$month_begin'>$longmonths[$month_begin]</option>\n";
269 <select name='DAY_BEGIN'>
272 for ($day_begin = 1; $day_begin <= 31; $day_begin++)
275 if ($day_begin == $reportsettings{'DAY_BEGIN'}) {
276 print 'selected="selected" '; }
277 print "value='$day_begin'>$day_begin</option>\n";
283 <select name='YEAR_BEGIN'>
286 for ($year_begin = $year-2; $year_begin <= $year+1; $year_begin++)
289 if ($year_begin == $reportsettings{'YEAR_BEGIN'}) {
290 print 'selected="selected" '; }
291 print "value='$year_begin'>$year_begin</option>\n";
296 <td width='9%' class='base'>$Lang::tr{'to'}:</td>
298 <select name='MONTH_END'>
301 for ($month_end = 0; $month_end < 12; $month_end++)
304 if ($month_end == $reportsettings{'MONTH_END'}) {
305 print 'selected="selected" '; }
306 print "value='$month_end'>$longmonths[$month_end]</option>\n";
312 <select name='DAY_END'>
315 for ($day_end = 1; $day_end <= 31; $day_end++)
318 if ($day_end == $reportsettings{'DAY_END'}) {
319 print 'selected="selected" '; }
320 print "value='$day_end'>$day_end</option>\n";
326 <select name='YEAR_END'>
329 for ($year_end = $year-2; $year_end <= $year+1; $year_end++)
332 if ($year_end == $reportsettings{'YEAR_END'}) {
333 print 'selected="selected" '; }
334 print "value='$year_end'>$year_end</option>\n";
344 <table width='100%' border='0'>
346 <td colspan='4' class='base'><b>$Lang::tr{'calamaris report options'}</b></td>
349 <td width='30%' class='base'>$Lang::tr{'calamaris enable domain report'}:</td>
350 <td width='15%'><input type='checkbox' name='ENABLE_DOMAIN' $checked{'ENABLE_DOMAIN'}{'on'} /> [-d]</td>
351 <td width='30%' class='base'>$Lang::tr{'calamaris number of domains'}:</td>
352 <td width='25%'><select name='NUM_DOMAINS'>
353 <option value='10' $selected{'NUM_DOMAINS'}{'10'}>10</option>
354 <option value='25' $selected{'NUM_DOMAINS'}{'25'}>25</option>
355 <option value='100' $selected{'NUM_DOMAINS'}{'100'}>100</option>
356 <option value='-1' $selected{'NUM_DOMAINS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
360 <td class='base'>$Lang::tr{'calamaris enable performance report'}:</td>
361 <td><input type='checkbox' name='ENABLE_PERFORMANCE' $checked{'ENABLE_PERFORMANCE'}{'on'} /> [-P]</td>
362 <td class='base'>$Lang::tr{'calamaris report interval (in minutes)'}:</td>
363 <td><select name='PERF_INTERVAL'>
364 <option value='30' $selected{'PERF_INTERVAL'}{'30'}>30</option>
365 <option value='60' $selected{'PERF_INTERVAL'}{'60'}>60</option>
366 <option value='120' $selected{'PERF_INTERVAL'}{'120'}>120</option>
367 <option value='240' $selected{'PERF_INTERVAL'}{'240'}>240</option>
368 <option value='480' $selected{'PERF_INTERVAL'}{'480'}>480</option>
369 <option value='720' $selected{'PERF_INTERVAL'}{'720'}>720</option>
370 <option value='1440' $selected{'PERF_INTERVAL'}{'1440'}>1440</option>
374 <td class='base'>$Lang::tr{'calamaris enable content report'}:</td>
375 <td><input type='checkbox' name='ENABLE_CONTENT' $checked{'ENABLE_CONTENT'}{'on'} /> [-t]</td>
376 <td class='base'>$Lang::tr{'calamaris number of content types'}:</td>
377 <td><select name='NUM_CONTENT'>
378 <option value='10' $selected{'NUM_CONTENT'}{'10'}>10</option>
379 <option value='25' $selected{'NUM_CONTENT'}{'25'}>25</option>
380 <option value='100' $selected{'NUM_CONTENT'}{'100'}>100</option>
381 <option value='-1' $selected{'NUM_CONTENT'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
385 <td class='base'>$Lang::tr{'calamaris enable requester report'}:</td>
386 <td><input type='checkbox' name='ENABLE_REQUESTER' $checked{'ENABLE_REQUESTER'}{'on'} /> [-r/-R]</td>
387 <td class='base'>$Lang::tr{'calamaris number of requesting hosts'}:</td>
388 <td><select name='NUM_HOSTS'>
389 <option value='10' $selected{'NUM_HOSTS'}{'10'}>10</option>
390 <option value='25' $selected{'NUM_HOSTS'}{'25'}>25</option>
391 <option value='100' $selected{'NUM_HOSTS'}{'100'}>100</option>
392 <option value='-1' $selected{'NUM_HOSTS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
395 <td class='base'>$Lang::tr{'calamaris show usernames'}:</td>
396 <td><input type='checkbox' name='ENABLE_USERNAME' $checked{'ENABLE_USERNAME'}{'on'} /> [-u]</td>
397 <td class='base'>$Lang::tr{'calamaris number of requested urls'}:</td>
398 <td><select name='NUM_URLS'>
399 <option value='0' $selected{'NUM_URLS'}{'0'}>$Lang::tr{'calamaris none'}</option>
400 <option value='10' $selected{'NUM_URLS'}{'10'}>10</option>
401 <option value='25' $selected{'NUM_URLS'}{'25'}>25</option>
402 <option value='100' $selected{'NUM_URLS'}{'100'}>100</option>
403 <option value='-1' $selected{'NUM_URLS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
407 <td class='base'>$Lang::tr{'calamaris enable distribution histogram'}:</td>
408 <td><input type='checkbox' name='ENABLE_HISTOGRAM' $checked{'ENABLE_HISTOGRAM'}{'on'} /> [-D]</td>
409 <td class='base'>$Lang::tr{'calamaris histogram resolution'}:</td>
410 <td><select name='HIST_LEVEL'>
411 <option value='1000' $selected{'HIST_LEVEL'}{'1000'}>$Lang::tr{'calamaris low'}</option>
412 <option value='10' $selected{'HIST_LEVEL'}{'10'}>$Lang::tr{'calamaris medium'}</option>
413 <option value='2' $selected{'HIST_LEVEL'}{'2'}>$Lang::tr{'calamaris high'}</option>
416 <td class='base'>$Lang::tr{'calamaris enable verbose reporting'}:</td>
417 <td><input type='checkbox' name='ENABLE_VERBOSE' $checked{'ENABLE_VERBOSE'}{'on'} /> [-s]</td>
418 <td class='base'>$Lang::tr{'calamaris byte unit'}:</td>
419 <td><select name='BYTE_UNIT'>
420 <option value='B' $selected{'BYTE_UNIT'}{'B'}>Byte</option>
421 <option value='K' $selected{'BYTE_UNIT'}{'K'}>KByte</option>
422 <option value='M' $selected{'BYTE_UNIT'}{'M'}>MByte</option>
423 <option value='G' $selected{'BYTE_UNIT'}{'G'}>GByte</option>
429 <table width='100%' border='0'>
431 <td colspan='4' class='base'><b>$Lang::tr{'calamaris performance options'}</b></td>
434 <td width='30%' class='base'>$Lang::tr{'calamaris skip archived logfiles'}:</td>
435 <td width='15%'><input type='checkbox' name='SKIP_GZLOGS' $checked{'SKIP_GZLOGS'}{'on'} /></td>
436 <td width='30%'class='base'>$Lang::tr{'calamaris run as background task'}:</td>
437 <td width='25%'><input type='checkbox' name='RUN_BACKGROUND' $checked{'RUN_BACKGROUND'}{'on'} /></td>
443 <table width='100%' border='0'>
445 <td align='left'> </td>
446 <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'calamaris create report'}' /></td>
447 <td width='33%' align='right'> </td>
457 &Header
::openbox
('100%', 'left', "$Lang::tr{'calamaris available reports'}:");
466 foreach (<$reportdir/*>)
470 if ($content[3] =~ /^Report\speriod/)
472 $description = timelocal
(
473 substr($content[4],31,2),
474 substr($content[4],28,2),
475 substr($content[4],25,2),
476 substr($content[4],15,2),
477 $monthidx{substr($content[4],18,3)},
478 "20".substr($content[4],22,2));
479 push(@reports,join("#",$description,substr($_,rindex($_,"/")+1),$content[3],$content[4]));
484 @reports=reverse(sort(@reports));
489 <table width='100%' border='0'>
496 print "<td><select name='REPORT' size='5'>\n";
499 @reportdata=split(/#/);
501 if ($reportsettings{'REPORT'} eq $reportdata[1]) { print "selected ";}
502 print "value='$reportdata[1]'>$reportdata[2] - $reportdata[3]</option>\n";
504 print "</select></td>\n";
505 } else { print "<td><i>$Lang::tr{'calamaris no reports available'}</i></td>\n"; }
511 <table width='100%' cellpadding='5' border='0'>
513 <td><input type='submit' name='ACTION' value='$Lang::tr{'calamaris refresh list'}' /></td>
522 <td><input type='submit' name='ACTION' value='$Lang::tr{'calamaris view'}' /></td>
523 <td><input type='submit' name='ACTION' value='$Lang::tr{'export'}' /></td>
524 <td><input type='submit' name='ACTION' value='$Lang::tr{'delete'}' /></td>
525 <td width='95%'></td>
537 if (($reportsettings{'ACTION'} eq $Lang::tr
{'calamaris view'}) && (!($reportsettings{'REPORT'} eq '')))
540 &Header
::openbox
('100%', 'left', "$Lang::tr{'calamaris view report'}:");
542 open (FILE
, "$reportdir/$reportsettings{'REPORT'}");
556 &Header
::closebigbox
();
558 &Header
::closepage
();