]> git.ipfire.org Git - ipfire-2.x.git/blob - html/cgi-bin/logs.cgi/calamaris.dat
Calamaris-Proxy-Logdatei-Analyzer eingebaut.
[ipfire-2.x.git] / html / cgi-bin / logs.cgi / calamaris.dat
1 #!/usr/bin/perl
2 #
3 # This code is distributed under the terms of the GPL
4 #
5 # (c) 2005,2006 marco.s
6 #
7 # $Id: calamaris.dat,v 2.1 2006/03/12 00:00:00 marco.s Exp $
8 #
9
10 use strict;
11
12 # enable only the following on debugging purpose
13 #use warnings;
14 #use CGI::Carp 'fatalsToBrowser';
15
16 use Time::Local;
17 use IO::Socket;
18
19 require '/var/ipfire/general-functions.pl';
20 require "${General::swroot}/lang.pl";
21 require "${General::swroot}/header.pl";
22
23 my $unique=time;
24
25 my $squidlogdir = "/var/log/squid";
26 my $reportdir = "${General::swroot}/proxy/calamaris/reports";
27
28 unless (-e $reportdir) { mkdir($reportdir) }
29
30 my %cgiparams=();
31 my %reportsettings=();
32 my %selected=();
33 my %checked=();
34
35 my $errormessage='';
36
37 my $hintcolour='#FFFFCC';
38
39 my $commandline='';
40
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));
42
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'} );
47
48 my @now = localtime(time);
49 my $year = $now[5]+1900;
50
51 my $day_begin=0;
52 my $month_begin=0;
53 my $year_begin=0;
54 my $day_end=0;
55 my $month_end=0;
56 my $year_end=0;
57
58 $reportsettings{'ACTION'} = '';
59
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;
66
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';
83
84 &Header::getcgihash(\%reportsettings);
85
86 if ($reportsettings{'ACTION'} eq $Lang::tr{'calamaris create report'})
87 {
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'};
94
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
102 &General::writehash("${General::swroot}/proxy/calamaris/settings", \%reportsettings);
103
104 $reportsettings{'DAY_BEGIN'} = $cgiparams{'DAY_BEGIN'};
105 $reportsettings{'MONTH_BEGIN'} = $cgiparams{'MONTH_BEGIN'};
106 $reportsettings{'YEAR_BEGIN'} = $cgiparams{'YEAR_BEGIN'};
107 $reportsettings{'DAY_END'} = $cgiparams{'DAY_END'};
108 $reportsettings{'MONTH_END'} = $cgiparams{'MONTH_END'};
109 $reportsettings{'YEAR_END'} = $cgiparams{'YEAR_END'};
110
111 $day_begin = $reportsettings{'DAY_BEGIN'};
112 $month_begin = $reportsettings{'MONTH_BEGIN'};
113 $year_begin = $reportsettings{'YEAR_BEGIN'};
114 $day_end = $reportsettings{'DAY_END'};
115 $month_end = $reportsettings{'MONTH_END'};
116 $year_end = $reportsettings{'YEAR_END'};
117
118 if ($reportsettings{'SKIP_GZLOGS'} eq 'on') { $commandline.='nogz '; }
119
120 $commandline.="$day_begin $month_begin $year_begin $day_end $month_end $year_end";
121
122 if ($reportsettings{'ENABLE_DOMAIN'} eq 'on')
123 {
124 $commandline.=' -d ';
125 $commandline.=$reportsettings{'NUM_DOMAINS'};
126 }
127 if ($reportsettings{'ENABLE_PERFORMANCE'} eq 'on')
128 {
129 $commandline.=' -P ';
130 $commandline.=$reportsettings{'PERF_INTERVAL'};
131 }
132 if ($reportsettings{'ENABLE_CONTENT'} eq 'on')
133 {
134 $commandline.=' -t ';
135 $commandline.=$reportsettings{'NUM_CONTENT'};
136 }
137 if ($reportsettings{'ENABLE_HISTOGRAM'} eq 'on')
138 {
139 $commandline.=' -D ';
140 $commandline.=$reportsettings{'HIST_LEVEL'};
141 }
142 if ($reportsettings{'ENABLE_REQUESTER'} eq 'on')
143 {
144 if ($reportsettings{'ENABLE_USERNAME'} eq 'on')
145 {
146 $commandline.=' -u';
147 }
148 $commandline.=' -r ';
149 $commandline.=$reportsettings{'NUM_HOSTS'};
150
151 unless ($reportsettings{'NUM_URLS'} eq '0')
152 {
153 $commandline.=' -R ';
154 $commandline.=$reportsettings{'NUM_URLS'};
155 }
156 }
157 unless ($reportsettings{'BYTE_UNIT'} eq 'B')
158 {
159 $commandline.=' -U ';
160 $commandline.=$reportsettings{'BYTE_UNIT'};
161 }
162 if ($reportsettings{'ENABLE_VERBOSE'} eq 'on')
163 {
164 $commandline.=' -s';
165 }
166
167 $commandline.=' < /dev/null > /dev/null 2>&1';
168
169 if ($reportsettings{'RUN_BACKGROUND'} eq 'on') { $commandline.=" &"; }
170
171 system("${General::swroot}/proxy/calamaris/bin/mkreport $commandline")
172 }
173
174 if ($reportsettings{'ACTION'} eq $Lang::tr{'export'})
175 {
176 print "Content-type: application/octet-stream\n";
177 print "Content-length: ";
178 print (-s "$reportdir/$reportsettings{'REPORT'}");
179 print "\n";
180 print "Content-disposition: attachment; filename=$reportsettings{'REPORT'}\n\n";
181
182 open (FILE, "$reportdir/$reportsettings{'REPORT'}");
183 while (<FILE>) { print; }
184 close (FILE);
185
186 exit;
187 }
188
189 if ($reportsettings{'ACTION'} eq $Lang::tr{'delete'}) { unlink("$reportdir/$reportsettings{'REPORT'}"); }
190
191 if (-e "${General::swroot}/proxy/calamaris/settings")
192 {
193 &General::readhash("${General::swroot}/proxy/calamaris/settings", \%reportsettings);
194 }
195
196 &Header::showhttpheaders();
197
198 $checked{'ENABLE_DOMAIN'}{'off'} = '';
199 $checked{'ENABLE_DOMAIN'}{'on'} = '';
200 $checked{'ENABLE_DOMAIN'}{$reportsettings{'ENABLE_DOMAIN'}} = "checked='checked'";
201 $selected{'NUM_DOMAINS'}{$reportsettings{'NUM_DOMAINS'}} = "selected='selected'";
202 $checked{'ENABLE_PERFORMANCE'}{'off'} = '';
203 $checked{'ENABLE_PERFORMANCE'}{'on'} = '';
204 $checked{'ENABLE_PERFORMANCE'}{$reportsettings{'ENABLE_PERFORMANCE'}} = "checked='checked'";
205 $selected{'PERF_INTERVAL'}{$reportsettings{'PERF_INTERVAL'}} = "selected='selected'";
206 $checked{'ENABLE_CONTENT'}{'off'} = '';
207 $checked{'ENABLE_CONTENT'}{'on'} = '';
208 $checked{'ENABLE_CONTENT'}{$reportsettings{'ENABLE_CONTENT'}} = "checked='checked'";
209 $selected{'NUM_CONTENT'}{$reportsettings{'NUM_CONTENT'}} = "selected='selected'";
210 $checked{'ENABLE_REQUESTER'}{'off'} = '';
211 $checked{'ENABLE_REQUESTER'}{'on'} = '';
212 $checked{'ENABLE_REQUESTER'}{$reportsettings{'ENABLE_REQUESTER'}} = "checked='checked'";
213 $checked{'ENABLE_USERNAME'}{'off'} = '';
214 $checked{'ENABLE_USERNAME'}{'on'} = '';
215 $checked{'ENABLE_USERNAME'}{$reportsettings{'ENABLE_USERNAME'}} = "checked='checked'";
216 $selected{'NUM_HOSTS'}{$reportsettings{'NUM_HOSTS'}} = "selected='selected'";
217 $selected{'NUM_URLS'}{$reportsettings{'NUM_URLS'}} = "selected='selected'";
218 $checked{'ENABLE_HISTOGRAM'}{'off'} = '';
219 $checked{'ENABLE_HISTOGRAM'}{'on'} = '';
220 $checked{'ENABLE_HISTOGRAM'}{$reportsettings{'ENABLE_HISTOGRAM'}} = "checked='checked'";
221 $selected{'HIST_LEVEL'}{$reportsettings{'HIST_LEVEL'}} = "selected='selected'";
222 $checked{'ENABLE_VERBOSE'}{'off'} = '';
223 $checked{'ENABLE_VERBOSE'}{'on'} = '';
224 $checked{'ENABLE_VERBOSE'}{$reportsettings{'ENABLE_VERBOSE'}} = "checked='checked'";
225 $selected{'BYTE_UNIT'}{$reportsettings{'BYTE_UNIT'}} = "selected='selected'";
226 $checked{'SKIP_GZLOGS'}{'off'} = '';
227 $checked{'SKIP_GZLOGS'}{'on'} = '';
228 $checked{'SKIP_GZLOGS'}{$reportsettings{'SKIP_GZLOGS'}} = "checked='checked'";
229 $checked{'RUN_BACKGROUND'}{'off'} = '';
230 $checked{'RUN_BACKGROUND'}{'on'} = '';
231 $checked{'RUN_BACKGROUND'}{$reportsettings{'RUN_BACKGROUND'}} = "checked='checked'";
232
233 &Header::openpage($Lang::tr{'calamaris proxy reports'}, 1, '');
234
235 &Header::openbigbox('100%', 'left', '', $errormessage);
236
237 if ($errormessage) {
238 &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
239 print "<font class='base'>$errormessage&nbsp;</font>\n";
240 &Header::closebox();
241 }
242
243 &Header::openbox('100%', 'left', "$Lang::tr{'settings'}:");
244
245 print <<END
246 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
247 <table width='100%' border='0'>
248 <tr>
249 <td colspan='8' class='base'><b>$Lang::tr{'calamaris report period'}</b></td>
250 </tr>
251 <tr>
252 <td width='9%' class='base'>$Lang::tr{'from'}:</td>
253 <td width='15%'>
254 <select name='MONTH_BEGIN'>
255 END
256 ;
257 for ($month_begin = 0; $month_begin < 12; $month_begin++)
258 {
259 print "\t<option ";
260 if ($month_begin == $reportsettings{'MONTH_BEGIN'}) {
261 print 'selected="selected" '; }
262 print "value='$month_begin'>$longmonths[$month_begin]</option>\n";
263 }
264 print <<END
265 </select>
266 </td>
267 <td width='9%'>
268 <select name='DAY_BEGIN'>
269 END
270 ;
271 for ($day_begin = 1; $day_begin <= 31; $day_begin++)
272 {
273 print "\t<option ";
274 if ($day_begin == $reportsettings{'DAY_BEGIN'}) {
275 print 'selected="selected" '; }
276 print "value='$day_begin'>$day_begin</option>\n";
277 }
278 print <<END
279 </select>
280 </td>
281 <td width='12%'>
282 <select name='YEAR_BEGIN'>
283 END
284 ;
285 for ($year_begin = $year-2; $year_begin <= $year+1; $year_begin++)
286 {
287 print "\t<option ";
288 if ($year_begin == $reportsettings{'YEAR_BEGIN'}) {
289 print 'selected="selected" '; }
290 print "value='$year_begin'>$year_begin</option>\n";
291 }
292 print <<END
293 </select>
294 </td>
295 <td width='9%' class='base'>$Lang::tr{'to'}:</td>
296 <td width='15%'>
297 <select name='MONTH_END'>
298 END
299 ;
300 for ($month_end = 0; $month_end < 12; $month_end++)
301 {
302 print "\t<option ";
303 if ($month_end == $reportsettings{'MONTH_END'}) {
304 print 'selected="selected" '; }
305 print "value='$month_end'>$longmonths[$month_end]</option>\n";
306 }
307 print <<END
308 </select>
309 </td>
310 <td width='9%'>
311 <select name='DAY_END'>
312 END
313 ;
314 for ($day_end = 1; $day_end <= 31; $day_end++)
315 {
316 print "\t<option ";
317 if ($day_end == $reportsettings{'DAY_END'}) {
318 print 'selected="selected" '; }
319 print "value='$day_end'>$day_end</option>\n";
320 }
321 print <<END
322 </select>
323 </td>
324 <td width='22%'>
325 <select name='YEAR_END'>
326 END
327 ;
328 for ($year_end = $year-2; $year_end <= $year+1; $year_end++)
329 {
330 print "\t<option ";
331 if ($year_end == $reportsettings{'YEAR_END'}) {
332 print 'selected="selected" '; }
333 print "value='$year_end'>$year_end</option>\n";
334 }
335 print <<END
336 </select>
337 </td>
338 </tr>
339 </table>
340
341 <hr size='1'>
342
343 <table width='100%' border='0'>
344 <tr>
345 <td colspan='4' class='base'><b>$Lang::tr{'calamaris report options'}</b></td>
346 </tr>
347 <tr>
348 <td width='30%' class='base'>$Lang::tr{'calamaris enable domain report'}:</td>
349 <td width='15%'><input type='checkbox' name='ENABLE_DOMAIN' $checked{'ENABLE_DOMAIN'}{'on'} /> [-d]</td>
350 <td width='30%' class='base'>$Lang::tr{'calamaris number of domains'}:</td>
351 <td width='25%'><select name='NUM_DOMAINS'>
352 <option value='10' $selected{'NUM_DOMAINS'}{'10'}>10</option>
353 <option value='25' $selected{'NUM_DOMAINS'}{'25'}>25</option>
354 <option value='100' $selected{'NUM_DOMAINS'}{'100'}>100</option>
355 <option value='-1' $selected{'NUM_DOMAINS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
356 </select></td>
357 </tr>
358 <tr>
359 <td class='base'>$Lang::tr{'calamaris enable performance report'}:</td>
360 <td><input type='checkbox' name='ENABLE_PERFORMANCE' $checked{'ENABLE_PERFORMANCE'}{'on'} /> [-P]</td>
361 <td class='base'>$Lang::tr{'calamaris report interval (in minutes)'}:</td>
362 <td><select name='PERF_INTERVAL'>
363 <option value='30' $selected{'PERF_INTERVAL'}{'30'}>30</option>
364 <option value='60' $selected{'PERF_INTERVAL'}{'60'}>60</option>
365 <option value='120' $selected{'PERF_INTERVAL'}{'120'}>120</option>
366 <option value='240' $selected{'PERF_INTERVAL'}{'240'}>240</option>
367 <option value='480' $selected{'PERF_INTERVAL'}{'480'}>480</option>
368 <option value='720' $selected{'PERF_INTERVAL'}{'720'}>720</option>
369 <option value='1440' $selected{'PERF_INTERVAL'}{'1440'}>1440</option>
370 </select></td>
371 </tr>
372 <tr>
373 <td class='base'>$Lang::tr{'calamaris enable content report'}:</td>
374 <td><input type='checkbox' name='ENABLE_CONTENT' $checked{'ENABLE_CONTENT'}{'on'} /> [-t]</td>
375 <td class='base'>$Lang::tr{'calamaris number of content types'}:</td>
376 <td><select name='NUM_CONTENT'>
377 <option value='10' $selected{'NUM_CONTENT'}{'10'}>10</option>
378 <option value='25' $selected{'NUM_CONTENT'}{'25'}>25</option>
379 <option value='100' $selected{'NUM_CONTENT'}{'100'}>100</option>
380 <option value='-1' $selected{'NUM_CONTENT'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
381 </select></td>
382 </tr>
383 <tr>
384 <td class='base'>$Lang::tr{'calamaris enable requester report'}:</td>
385 <td><input type='checkbox' name='ENABLE_REQUESTER' $checked{'ENABLE_REQUESTER'}{'on'} /> [-r/-R]</td>
386 <td class='base'>$Lang::tr{'calamaris number of requesting hosts'}:</td>
387 <td><select name='NUM_HOSTS'>
388 <option value='10' $selected{'NUM_HOSTS'}{'10'}>10</option>
389 <option value='25' $selected{'NUM_HOSTS'}{'25'}>25</option>
390 <option value='100' $selected{'NUM_HOSTS'}{'100'}>100</option>
391 <option value='-1' $selected{'NUM_HOSTS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
392 </tr>
393 <tr>
394 <td class='base'>$Lang::tr{'calamaris show usernames'}:</td>
395 <td><input type='checkbox' name='ENABLE_USERNAME' $checked{'ENABLE_USERNAME'}{'on'} /> [-u]</td>
396 <td class='base'>$Lang::tr{'calamaris number of requested urls'}:</td>
397 <td><select name='NUM_URLS'>
398 <option value='0' $selected{'NUM_URLS'}{'0'}>$Lang::tr{'calamaris none'}</option>
399 <option value='10' $selected{'NUM_URLS'}{'10'}>10</option>
400 <option value='25' $selected{'NUM_URLS'}{'25'}>25</option>
401 <option value='100' $selected{'NUM_URLS'}{'100'}>100</option>
402 <option value='-1' $selected{'NUM_URLS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
403 </select></td>
404 </tr>
405 <tr>
406 <td class='base'>$Lang::tr{'calamaris enable distribution histogram'}:</td>
407 <td><input type='checkbox' name='ENABLE_HISTOGRAM' $checked{'ENABLE_HISTOGRAM'}{'on'} /> [-D]</td>
408 <td class='base'>$Lang::tr{'calamaris histogram resolution'}:</td>
409 <td><select name='HIST_LEVEL'>
410 <option value='1000' $selected{'HIST_LEVEL'}{'1000'}>$Lang::tr{'calamaris low'}</option>
411 <option value='10' $selected{'HIST_LEVEL'}{'10'}>$Lang::tr{'calamaris medium'}</option>
412 <option value='2' $selected{'HIST_LEVEL'}{'2'}>$Lang::tr{'calamaris high'}</option>
413 </tr>
414 <tr>
415 <td class='base'>$Lang::tr{'calamaris enable verbose reporting'}:</td>
416 <td><input type='checkbox' name='ENABLE_VERBOSE' $checked{'ENABLE_VERBOSE'}{'on'} /> [-s]</td>
417 <td class='base'>$Lang::tr{'calamaris byte unit'}:</td>
418 <td><select name='BYTE_UNIT'>
419 <option value='B' $selected{'BYTE_UNIT'}{'B'}>Byte</option>
420 <option value='K' $selected{'BYTE_UNIT'}{'K'}>KByte</option>
421 <option value='M' $selected{'BYTE_UNIT'}{'M'}>MByte</option>
422 <option value='G' $selected{'BYTE_UNIT'}{'G'}>GByte</option>
423 </tr>
424 </table>
425
426 <hr size='1'>
427
428 <table width='100%' border='0'>
429 <tr>
430 <td colspan='4' class='base'><b>$Lang::tr{'calamaris performance options'}</b></td>
431 </tr>
432 <tr>
433 <td width='30%' class='base'>$Lang::tr{'calamaris skip archived logfiles'}:</td>
434 <td width='15%'><input type='checkbox' name='SKIP_GZLOGS' $checked{'SKIP_GZLOGS'}{'on'} /></td>
435 <td width='30%'class='base'>$Lang::tr{'calamaris run as background task'}:</td>
436 <td width='25%'><input type='checkbox' name='RUN_BACKGROUND' $checked{'RUN_BACKGROUND'}{'on'} /></td>
437 </tr>
438 </table>
439
440 <hr size='1'>
441
442 <table width='100%' border='0'>
443 <tr>
444 <td align='left'>&nbsp;</td>
445 <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'calamaris create report'}' /></td>
446 <td width='33%' align='right'>&nbsp;</td>
447 </tr>
448
449 </table>
450
451 END
452 ;
453
454 &Header::closebox();
455
456 &Header::openbox('100%', 'left', "$Lang::tr{'calamaris available reports'}:");
457
458 my @content=();
459 my @reports=();
460 my @reportdata=();
461 my $description;
462
463 undef @reports;
464
465 foreach (<$reportdir/*>)
466 {
467 open (FILE, "$_");
468 @content=<FILE>;
469 if ($content[3] =~ /^Report\speriod/)
470 {
471 $description = timelocal(
472 substr($content[4],31,2),
473 substr($content[4],28,2),
474 substr($content[4],25,2),
475 substr($content[4],15,2),
476 $monthidx{substr($content[4],18,3)},
477 "20".substr($content[4],22,2));
478 push(@reports,join("#",$description,substr($_,rindex($_,"/")+1),$content[3],$content[4]));
479 }
480 close FILE;
481 }
482
483 @reports=reverse(sort(@reports));
484
485
486 print <<END
487
488 <table width='100%' border='0'>
489 <tr>
490 END
491 ;
492
493 if (@reports)
494 {
495 print "<td><select name='REPORT' size='5'>\n";
496 my $n=0;
497 foreach (@reports)
498 {
499 @reportdata=split(/#/);
500 print "\t<option ";
501 if ($n eq '0') { print "selected "; $reportsettings{'REPORT'}=$reportdata[1]; $n++}
502 print "value='$reportdata[1]'>$reportdata[2] &nbsp;-&nbsp; $reportdata[3]</option>\n";
503 }
504 print "</select></td>\n";
505 } else { print "<td><i>$Lang::tr{'calamaris no reports available'}</i></td>\n"; }
506
507 print <<END
508 </tr>
509 </table>
510 <hr size='1'>
511 <table width='100%' cellpadding='5' border='0'>
512 <tr>
513 <td><input type='submit' name='ACTION' value='$Lang::tr{'calamaris refresh list'}' /></td>
514 END
515 ;
516
517 if (@reports)
518 {
519 print <<END
520 <td>&nbsp;</td>
521 <td>&nbsp;</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>
526 END
527 ;
528 }
529
530 print <<END
531 </tr>
532 </table>
533 </form>
534 END
535 ;
536
537 if (($reportsettings{'ACTION'} eq $Lang::tr{'calamaris view'}) && (!($reportsettings{'REPORT'} eq '')))
538 {
539 &Header::closebox();
540 &Header::openbox('100%', 'left', "$Lang::tr{'calamaris view report'}:");
541 print "<pre>\n";
542 open (FILE, "$reportdir/$reportsettings{'REPORT'}");
543 @content=<FILE>;
544 close FILE;
545 foreach (@content)
546 {
547 s/</\&lt;/;
548 s/>/\&gt;/;
549 print;
550 }
551 print "</pre>\n";
552 }
553
554 &Header::closebox();
555
556 &Header::closebigbox();
557
558 &Header::closepage();