]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - html/cgi-bin/logs.cgi/calamaris.dat
suricata: Change midstream policy to "pass-flow"
[people/pmueller/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 my $sargdir = "/var/log/sarg";
28
29 unless (-e $reportdir) { mkdir($reportdir) }
30
31 my %cgiparams=();
32 my %reportsettings=();
33 my %selected=();
34 my %checked=();
35
36 my $errormessage='';
37
38 my $hintcolour='#FFFFCC';
39
40 my $commandline='';
41
42 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
44 my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'},
45 $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'},
46 $Lang::tr{'august'}, $Lang::tr{'september'}, $Lang::tr{'october'},
47 $Lang::tr{'november'}, $Lang::tr{'december'} );
48
49 my @now = localtime(time);
50 my $year = $now[5]+1900;
51
52 my $day_begin=0;
53 my $month_begin=0;
54 my $year_begin=0;
55 my $day_end=0;
56 my $month_end=0;
57 my $year_end=0;
58
59 $reportsettings{'ACTION'} = '';
60
61 $reportsettings{'DAY_BEGIN'} = $now[3];
62 $reportsettings{'MONTH_BEGIN'} = $now[4];
63 $reportsettings{'YEAR_BEGIN'} = $now[5]+1900;
64 $reportsettings{'DAY_END'} = $now[3];
65 $reportsettings{'MONTH_END'} = $now[4];
66 $reportsettings{'YEAR_END'} = $now[5]+1900;
67
68 $reportsettings{'ENABLE_DOMAIN'} = 'off';
69 $reportsettings{'NUM_DOMAINS'} = '10';
70 $reportsettings{'ENABLE_PERFORMANCE'} = 'off';
71 $reportsettings{'PERF_INTERVAL'} = '60';
72 $reportsettings{'ENABLE_CONTENT'} = 'off';
73 $reportsettings{'NUM_CONTENT'} = '10';
74 $reportsettings{'ENABLE_REQUESTER'} = 'off';
75 $reportsettings{'ENABLE_USERNAME'} = 'off';
76 $reportsettings{'NUM_HOSTS'} = '10';
77 $reportsettings{'NUM_URLS'} = '0';
78 $reportsettings{'ENABLE_HISTOGRAM'} = 'off';
79 $reportsettings{'HIST_LEVEL'} = '10';
80 $reportsettings{'ENABLE_VERBOSE'} = 'off';
81 $reportsettings{'BYTE_UNIT'} = 'B';
82 $reportsettings{'SKIP_GZLOGS'} = 'off';
83 $reportsettings{'RUN_BACKGROUND'} = 'off';
84
85 &Header::getcgihash(\%reportsettings);
86
87 if ($reportsettings{'ACTION'} eq $Lang::tr{'calamaris create report'})
88 {
89 $cgiparams{'DAY_BEGIN'} = $reportsettings{'DAY_BEGIN'};
90 $cgiparams{'MONTH_BEGIN'} = $reportsettings{'MONTH_BEGIN'};
91 $cgiparams{'YEAR_BEGIN'} = $reportsettings{'YEAR_BEGIN'};
92 $cgiparams{'DAY_END'} = $reportsettings{'DAY_END'};
93 $cgiparams{'MONTH_END'} = $reportsettings{'MONTH_END'};
94 $cgiparams{'YEAR_END'} = $reportsettings{'YEAR_END'};
95
96 delete $reportsettings{'DAY_BEGIN'};
97 delete $reportsettings{'MONTH_BEGIN'};
98 delete $reportsettings{'YEAR_BEGIN'};
99 delete $reportsettings{'DAY_END'};
100 delete $reportsettings{'MONTH_END'};
101 delete $reportsettings{'YEAR_END'};
102 delete $reportsettings{'REPORT'};
103
104 &General::writehash("${General::swroot}/proxy/calamaris/settings", \%reportsettings);
105
106 $reportsettings{'DAY_BEGIN'} = $cgiparams{'DAY_BEGIN'};
107 $reportsettings{'MONTH_BEGIN'} = $cgiparams{'MONTH_BEGIN'};
108 $reportsettings{'YEAR_BEGIN'} = $cgiparams{'YEAR_BEGIN'};
109 $reportsettings{'DAY_END'} = $cgiparams{'DAY_END'};
110 $reportsettings{'MONTH_END'} = $cgiparams{'MONTH_END'};
111 $reportsettings{'YEAR_END'} = $cgiparams{'YEAR_END'};
112
113 $day_begin = $reportsettings{'DAY_BEGIN'};
114 $month_begin = $reportsettings{'MONTH_BEGIN'};
115 $year_begin = $reportsettings{'YEAR_BEGIN'};
116 $day_end = $reportsettings{'DAY_END'};
117 $month_end = $reportsettings{'MONTH_END'};
118 $year_end = $reportsettings{'YEAR_END'};
119
120 if ($reportsettings{'SKIP_GZLOGS'} eq 'on') { $commandline.='nogz '; }
121
122 $commandline.="$day_begin $month_begin $year_begin $day_end $month_end $year_end";
123
124 if ($reportsettings{'ENABLE_DOMAIN'} eq 'on')
125 {
126 $commandline.=' -d ';
127 $commandline.=$reportsettings{'NUM_DOMAINS'};
128 }
129 if ($reportsettings{'ENABLE_PERFORMANCE'} eq 'on')
130 {
131 $commandline.=' -P ';
132 $commandline.=$reportsettings{'PERF_INTERVAL'};
133 }
134 if ($reportsettings{'ENABLE_CONTENT'} eq 'on')
135 {
136 $commandline.=' -t ';
137 $commandline.=$reportsettings{'NUM_CONTENT'};
138 }
139 if ($reportsettings{'ENABLE_HISTOGRAM'} eq 'on')
140 {
141 $commandline.=' -D ';
142 $commandline.=$reportsettings{'HIST_LEVEL'};
143 }
144 if ($reportsettings{'ENABLE_REQUESTER'} eq 'on')
145 {
146 if ($reportsettings{'ENABLE_USERNAME'} eq 'on')
147 {
148 $commandline.=' -u';
149 }
150 $commandline.=' -r ';
151 $commandline.=$reportsettings{'NUM_HOSTS'};
152
153 unless ($reportsettings{'NUM_URLS'} eq '0')
154 {
155 $commandline.=' -R ';
156 $commandline.=$reportsettings{'NUM_URLS'};
157 }
158 }
159 unless ($reportsettings{'BYTE_UNIT'} eq 'B')
160 {
161 $commandline.=' -U ';
162 $commandline.=$reportsettings{'BYTE_UNIT'};
163 }
164 if ($reportsettings{'ENABLE_VERBOSE'} eq 'on')
165 {
166 $commandline.=' -s';
167 }
168
169 $commandline.=' < /dev/null > /dev/null 2>&1';
170
171 if ($reportsettings{'RUN_BACKGROUND'} eq 'on') { $commandline.=" &"; }
172
173 system("${General::swroot}/proxy/calamaris/bin/mkreport $commandline")
174 }
175
176 if ($reportsettings{'ACTION'} eq $Lang::tr{'export'})
177 {
178 print "Content-type: application/octet-stream\n";
179 print "Content-length: ";
180 print (-s "$reportdir/$reportsettings{'REPORT'}");
181 print "\n";
182 print "Content-disposition: attachment; filename=$reportsettings{'REPORT'}\n\n";
183
184 open (FILE, "$reportdir/$reportsettings{'REPORT'}");
185 while (<FILE>) { print; }
186 close (FILE);
187
188 exit;
189 }
190
191 if ($reportsettings{'ACTION'} eq $Lang::tr{'delete'}) { unlink("$reportdir/$reportsettings{'REPORT'}"); }
192
193 if (-e "${General::swroot}/proxy/calamaris/settings")
194 {
195 &General::readhash("${General::swroot}/proxy/calamaris/settings", \%reportsettings);
196 }
197
198 &Header::showhttpheaders();
199
200 $checked{'ENABLE_DOMAIN'}{'off'} = '';
201 $checked{'ENABLE_DOMAIN'}{'on'} = '';
202 $checked{'ENABLE_DOMAIN'}{$reportsettings{'ENABLE_DOMAIN'}} = "checked='checked'";
203 $selected{'NUM_DOMAINS'}{$reportsettings{'NUM_DOMAINS'}} = "selected='selected'";
204 $checked{'ENABLE_PERFORMANCE'}{'off'} = '';
205 $checked{'ENABLE_PERFORMANCE'}{'on'} = '';
206 $checked{'ENABLE_PERFORMANCE'}{$reportsettings{'ENABLE_PERFORMANCE'}} = "checked='checked'";
207 $selected{'PERF_INTERVAL'}{$reportsettings{'PERF_INTERVAL'}} = "selected='selected'";
208 $checked{'ENABLE_CONTENT'}{'off'} = '';
209 $checked{'ENABLE_CONTENT'}{'on'} = '';
210 $checked{'ENABLE_CONTENT'}{$reportsettings{'ENABLE_CONTENT'}} = "checked='checked'";
211 $selected{'NUM_CONTENT'}{$reportsettings{'NUM_CONTENT'}} = "selected='selected'";
212 $checked{'ENABLE_REQUESTER'}{'off'} = '';
213 $checked{'ENABLE_REQUESTER'}{'on'} = '';
214 $checked{'ENABLE_REQUESTER'}{$reportsettings{'ENABLE_REQUESTER'}} = "checked='checked'";
215 $checked{'ENABLE_USERNAME'}{'off'} = '';
216 $checked{'ENABLE_USERNAME'}{'on'} = '';
217 $checked{'ENABLE_USERNAME'}{$reportsettings{'ENABLE_USERNAME'}} = "checked='checked'";
218 $selected{'NUM_HOSTS'}{$reportsettings{'NUM_HOSTS'}} = "selected='selected'";
219 $selected{'NUM_URLS'}{$reportsettings{'NUM_URLS'}} = "selected='selected'";
220 $checked{'ENABLE_HISTOGRAM'}{'off'} = '';
221 $checked{'ENABLE_HISTOGRAM'}{'on'} = '';
222 $checked{'ENABLE_HISTOGRAM'}{$reportsettings{'ENABLE_HISTOGRAM'}} = "checked='checked'";
223 $selected{'HIST_LEVEL'}{$reportsettings{'HIST_LEVEL'}} = "selected='selected'";
224 $checked{'ENABLE_VERBOSE'}{'off'} = '';
225 $checked{'ENABLE_VERBOSE'}{'on'} = '';
226 $checked{'ENABLE_VERBOSE'}{$reportsettings{'ENABLE_VERBOSE'}} = "checked='checked'";
227 $selected{'BYTE_UNIT'}{$reportsettings{'BYTE_UNIT'}} = "selected='selected'";
228 $checked{'SKIP_GZLOGS'}{'off'} = '';
229 $checked{'SKIP_GZLOGS'}{'on'} = '';
230 $checked{'SKIP_GZLOGS'}{$reportsettings{'SKIP_GZLOGS'}} = "checked='checked'";
231 $checked{'RUN_BACKGROUND'}{'off'} = '';
232 $checked{'RUN_BACKGROUND'}{'on'} = '';
233 $checked{'RUN_BACKGROUND'}{$reportsettings{'RUN_BACKGROUND'}} = "checked='checked'";
234
235 &Header::openpage($Lang::tr{'calamaris proxy reports'}, 1, '');
236
237 &Header::openbigbox('100%', 'left', '', $errormessage);
238
239 if ($errormessage) {
240 &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
241 print "<font class='base'>$errormessage&nbsp;</font>\n";
242 &Header::closebox();
243 }
244
245 # Link sarg reports.
246 if (-e $sargdir) {
247 &Header::openbox('100%', 'left', "$Lang::tr{'proxy reports'}:");
248
249 print <<END;
250 <table width="100%">
251 <tr>
252 END
253
254 # Today.
255 if (-e "$sargdir/today") {
256 print <<END;
257 <td width="25%" align="center">
258 <a href="/proxy-reports/today" target="_blank">$Lang::tr{'proxy reports today'}</a>
259 </td>
260 END
261 } else {
262 print <<END;
263 <td width="25%" align="center">
264 $Lang::tr{'proxy reports today'}
265 </td>
266 END
267 }
268
269 # Daily.
270 if (-e "$sargdir/daily") {
271 print <<END;
272 <td width="25%" align="center">
273 <a href="/proxy-reports/daily" target="_blank">$Lang::tr{'proxy reports daily'}</a>
274 </td>
275 END
276 } else {
277 print <<END;
278 <td width="25%" align="center">
279 $Lang::tr{'proxy reports daily'}
280 </td>
281 END
282 }
283
284 # Weekly.
285 if (-e "$sargdir/weekly") {
286 print <<END;
287 <td width="25%" align="center">
288 <a href="/proxy-reports/weekly" target="_blank">$Lang::tr{'proxy reports weekly'}</a>
289 </td>
290 END
291 } else {
292 print <<END;
293 <td width="25%" align="center">
294 $Lang::tr{'proxy reports weekly'}
295 </td>
296 END
297 }
298
299 # Monthly.
300 if (-e "$sargdir/monthly") {
301 print <<END;
302 <td width="25%" align="center">
303 <a href="/proxy-reports/monthly" target="_blank">$Lang::tr{'proxy reports monthly'}</a>
304 </td>
305 END
306 } else {
307 print <<END;
308 <td width="25%" align="center">
309 $Lang::tr{'proxy reports monthly'}
310 </td>
311 END
312 }
313
314 print <<END;
315 </tr>
316 </table>
317
318 <br><br>
319 END
320
321 &Header::closebox();
322 }
323
324
325 &Header::openbox('100%', 'left', "$Lang::tr{'settings'}:");
326
327 print <<END
328 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
329 <table width='100%' border='0'>
330 <tr>
331 <td colspan='8' class='base'><b>$Lang::tr{'calamaris report period'}</b></td>
332 </tr>
333 <tr>
334 <td width='9%' class='base'>$Lang::tr{'from'}:</td>
335 <td width='15%'>
336 <select name='MONTH_BEGIN'>
337 END
338 ;
339 for ($month_begin = 0; $month_begin < 12; $month_begin++)
340 {
341 print "\t<option ";
342 if ($month_begin == $reportsettings{'MONTH_BEGIN'}) {
343 print 'selected="selected" '; }
344 print "value='$month_begin'>$longmonths[$month_begin]</option>\n";
345 }
346 print <<END
347 </select>
348 </td>
349 <td width='9%'>
350 <select name='DAY_BEGIN'>
351 END
352 ;
353 for ($day_begin = 1; $day_begin <= 31; $day_begin++)
354 {
355 print "\t<option ";
356 if ($day_begin == $reportsettings{'DAY_BEGIN'}) {
357 print 'selected="selected" '; }
358 print "value='$day_begin'>$day_begin</option>\n";
359 }
360 print <<END
361 </select>
362 </td>
363 <td width='12%'>
364 <select name='YEAR_BEGIN'>
365 END
366 ;
367 for ($year_begin = $year-2; $year_begin <= $year+1; $year_begin++)
368 {
369 print "\t<option ";
370 if ($year_begin == $reportsettings{'YEAR_BEGIN'}) {
371 print 'selected="selected" '; }
372 print "value='$year_begin'>$year_begin</option>\n";
373 }
374 print <<END
375 </select>
376 </td>
377 <td width='9%' class='base'>$Lang::tr{'to'}:</td>
378 <td width='15%'>
379 <select name='MONTH_END'>
380 END
381 ;
382 for ($month_end = 0; $month_end < 12; $month_end++)
383 {
384 print "\t<option ";
385 if ($month_end == $reportsettings{'MONTH_END'}) {
386 print 'selected="selected" '; }
387 print "value='$month_end'>$longmonths[$month_end]</option>\n";
388 }
389 print <<END
390 </select>
391 </td>
392 <td width='9%'>
393 <select name='DAY_END'>
394 END
395 ;
396 for ($day_end = 1; $day_end <= 31; $day_end++)
397 {
398 print "\t<option ";
399 if ($day_end == $reportsettings{'DAY_END'}) {
400 print 'selected="selected" '; }
401 print "value='$day_end'>$day_end</option>\n";
402 }
403 print <<END
404 </select>
405 </td>
406 <td width='22%'>
407 <select name='YEAR_END'>
408 END
409 ;
410 for ($year_end = $year-2; $year_end <= $year+1; $year_end++)
411 {
412 print "\t<option ";
413 if ($year_end == $reportsettings{'YEAR_END'}) {
414 print 'selected="selected" '; }
415 print "value='$year_end'>$year_end</option>\n";
416 }
417 print <<END
418 </select>
419 </td>
420 </tr>
421 </table>
422
423 <hr size='1'>
424
425 <table width='100%' border='0'>
426 <tr>
427 <td colspan='4' class='base'><b>$Lang::tr{'calamaris report options'}</b></td>
428 </tr>
429 <tr>
430 <td width='30%' class='base'>$Lang::tr{'calamaris enable domain report'}:</td>
431 <td width='15%'><input type='checkbox' name='ENABLE_DOMAIN' $checked{'ENABLE_DOMAIN'}{'on'} /> [-d]</td>
432 <td width='30%' class='base'>$Lang::tr{'calamaris number of domains'}:</td>
433 <td width='25%'><select name='NUM_DOMAINS'>
434 <option value='10' $selected{'NUM_DOMAINS'}{'10'}>10</option>
435 <option value='25' $selected{'NUM_DOMAINS'}{'25'}>25</option>
436 <option value='100' $selected{'NUM_DOMAINS'}{'100'}>100</option>
437 <option value='-1' $selected{'NUM_DOMAINS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
438 </select></td>
439 </tr>
440 <tr>
441 <td class='base'>$Lang::tr{'calamaris enable performance report'}:</td>
442 <td><input type='checkbox' name='ENABLE_PERFORMANCE' $checked{'ENABLE_PERFORMANCE'}{'on'} /> [-P]</td>
443 <td class='base'>$Lang::tr{'calamaris report interval (in minutes)'}:</td>
444 <td><select name='PERF_INTERVAL'>
445 <option value='30' $selected{'PERF_INTERVAL'}{'30'}>30</option>
446 <option value='60' $selected{'PERF_INTERVAL'}{'60'}>60</option>
447 <option value='120' $selected{'PERF_INTERVAL'}{'120'}>120</option>
448 <option value='240' $selected{'PERF_INTERVAL'}{'240'}>240</option>
449 <option value='480' $selected{'PERF_INTERVAL'}{'480'}>480</option>
450 <option value='720' $selected{'PERF_INTERVAL'}{'720'}>720</option>
451 <option value='1440' $selected{'PERF_INTERVAL'}{'1440'}>1440</option>
452 </select></td>
453 </tr>
454 <tr>
455 <td class='base'>$Lang::tr{'calamaris enable content report'}:</td>
456 <td><input type='checkbox' name='ENABLE_CONTENT' $checked{'ENABLE_CONTENT'}{'on'} /> [-t]</td>
457 <td class='base'>$Lang::tr{'calamaris number of content types'}:</td>
458 <td><select name='NUM_CONTENT'>
459 <option value='10' $selected{'NUM_CONTENT'}{'10'}>10</option>
460 <option value='25' $selected{'NUM_CONTENT'}{'25'}>25</option>
461 <option value='100' $selected{'NUM_CONTENT'}{'100'}>100</option>
462 <option value='-1' $selected{'NUM_CONTENT'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
463 </select></td>
464 </tr>
465 <tr>
466 <td class='base'>$Lang::tr{'calamaris enable requester report'}:</td>
467 <td><input type='checkbox' name='ENABLE_REQUESTER' $checked{'ENABLE_REQUESTER'}{'on'} /> [-r/-R]</td>
468 <td class='base'>$Lang::tr{'calamaris number of requesting hosts'}:</td>
469 <td><select name='NUM_HOSTS'>
470 <option value='10' $selected{'NUM_HOSTS'}{'10'}>10</option>
471 <option value='25' $selected{'NUM_HOSTS'}{'25'}>25</option>
472 <option value='100' $selected{'NUM_HOSTS'}{'100'}>100</option>
473 <option value='-1' $selected{'NUM_HOSTS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
474 </tr>
475 <tr>
476 <td class='base'>$Lang::tr{'calamaris show usernames'}:</td>
477 <td><input type='checkbox' name='ENABLE_USERNAME' $checked{'ENABLE_USERNAME'}{'on'} /> [-u]</td>
478 <td class='base'>$Lang::tr{'calamaris number of requested urls'}:</td>
479 <td><select name='NUM_URLS'>
480 <option value='0' $selected{'NUM_URLS'}{'0'}>$Lang::tr{'calamaris none'}</option>
481 <option value='10' $selected{'NUM_URLS'}{'10'}>10</option>
482 <option value='25' $selected{'NUM_URLS'}{'25'}>25</option>
483 <option value='100' $selected{'NUM_URLS'}{'100'}>100</option>
484 <option value='-1' $selected{'NUM_URLS'}{'-1'}>$Lang::tr{'calamaris unlimited'}</option>
485 </select></td>
486 </tr>
487 <tr>
488 <td class='base'>$Lang::tr{'calamaris enable distribution histogram'}:</td>
489 <td><input type='checkbox' name='ENABLE_HISTOGRAM' $checked{'ENABLE_HISTOGRAM'}{'on'} /> [-D]</td>
490 <td class='base'>$Lang::tr{'calamaris histogram resolution'}:</td>
491 <td><select name='HIST_LEVEL'>
492 <option value='1000' $selected{'HIST_LEVEL'}{'1000'}>$Lang::tr{'calamaris low'}</option>
493 <option value='10' $selected{'HIST_LEVEL'}{'10'}>$Lang::tr{'calamaris medium'}</option>
494 <option value='2' $selected{'HIST_LEVEL'}{'2'}>$Lang::tr{'calamaris high'}</option>
495 </tr>
496 <tr>
497 <td class='base'>$Lang::tr{'calamaris enable verbose reporting'}:</td>
498 <td><input type='checkbox' name='ENABLE_VERBOSE' $checked{'ENABLE_VERBOSE'}{'on'} /> [-s]</td>
499 <td class='base'>$Lang::tr{'calamaris byte unit'}:</td>
500 <td><select name='BYTE_UNIT'>
501 <option value='B' $selected{'BYTE_UNIT'}{'B'}>Byte</option>
502 <option value='K' $selected{'BYTE_UNIT'}{'K'}>KByte</option>
503 <option value='M' $selected{'BYTE_UNIT'}{'M'}>MByte</option>
504 <option value='G' $selected{'BYTE_UNIT'}{'G'}>GByte</option>
505 </tr>
506 </table>
507
508 <hr size='1'>
509
510 <table width='100%' border='0'>
511 <tr>
512 <td colspan='4' class='base'><b>$Lang::tr{'calamaris performance options'}</b></td>
513 </tr>
514 <tr>
515 <td width='30%' class='base'>$Lang::tr{'calamaris skip archived logfiles'}:</td>
516 <td width='15%'><input type='checkbox' name='SKIP_GZLOGS' $checked{'SKIP_GZLOGS'}{'on'} /></td>
517 <td width='30%'class='base'>$Lang::tr{'calamaris run as background task'}:</td>
518 <td width='25%'><input type='checkbox' name='RUN_BACKGROUND' $checked{'RUN_BACKGROUND'}{'on'} /></td>
519 </tr>
520 </table>
521
522 <hr size='1'>
523
524 <table width='100%' border='0'>
525 <tr>
526 <td align='left'>&nbsp;</td>
527 <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'calamaris create report'}' /></td>
528 <td width='33%' align='right'>&nbsp;</td>
529 </tr>
530
531 </table>
532
533 END
534 ;
535
536 &Header::closebox();
537
538 &Header::openbox('100%', 'left', "$Lang::tr{'calamaris available reports'}:");
539
540 my @content=();
541 my @reports=();
542 my @reportdata=();
543 my $description;
544
545 undef @reports;
546
547 foreach (<$reportdir/*>)
548 {
549 open (FILE, "$_");
550 @content=<FILE>;
551 if ($content[3] =~ /^Report\speriod/)
552 {
553 $description = timelocal(
554 substr($content[4],31,2),
555 substr($content[4],28,2),
556 substr($content[4],25,2),
557 substr($content[4],15,2),
558 $monthidx{substr($content[4],18,3)},
559 "20".substr($content[4],22,2));
560 push(@reports,join("#",$description,substr($_,rindex($_,"/")+1),$content[3],$content[4]));
561 }
562 close FILE;
563 }
564
565 @reports=reverse(sort(@reports));
566
567
568 print <<END
569
570 <table width='100%' border='0'>
571 <tr>
572 END
573 ;
574
575 if (@reports)
576 {
577 print "<td><select name='REPORT' size='5'>\n";
578 foreach (@reports)
579 {
580 @reportdata=split(/#/);
581 print "\t<option ";
582 if ($reportsettings{'REPORT'} eq $reportdata[1]) { print "selected ";}
583 print "value='$reportdata[1]'>$reportdata[2] &nbsp;-&nbsp; $reportdata[3]</option>\n";
584 }
585 print "</select></td>\n";
586 } else { print "<td><i>$Lang::tr{'calamaris no reports available'}</i></td>\n"; }
587
588 print <<END
589 </tr>
590 </table>
591 <hr size='1'>
592 <table width='100%' cellpadding='5' border='0'>
593 <tr>
594 <td><input type='submit' name='ACTION' value='$Lang::tr{'calamaris refresh list'}' /></td>
595 END
596 ;
597
598 if (@reports)
599 {
600 print <<END
601 <td>&nbsp;</td>
602 <td>&nbsp;</td>
603 <td><input type='submit' name='ACTION' value='$Lang::tr{'calamaris view'}' /></td>
604 <td><input type='submit' name='ACTION' value='$Lang::tr{'export'}' /></td>
605 <td><input type='submit' name='ACTION' value='$Lang::tr{'delete'}' /></td>
606 <td width='95%'></td>
607 END
608 ;
609 }
610
611 print <<END
612 </tr>
613 </table>
614 </form>
615 END
616 ;
617
618 if (($reportsettings{'ACTION'} eq $Lang::tr{'calamaris view'}) && (!($reportsettings{'REPORT'} eq '')))
619 {
620 &Header::closebox();
621 &Header::openbox('100%', 'left', "$Lang::tr{'calamaris view report'}:");
622 print "<pre>\n";
623 open (FILE, "$reportdir/$reportsettings{'REPORT'}");
624 @content=<FILE>;
625 close FILE;
626 foreach (@content)
627 {
628 s/</\&lt;/;
629 s/>/\&gt;/;
630 print;
631 }
632 print "</pre>\n";
633 }
634
635 &Header::closebox();
636
637 &Header::closebigbox();
638
639 &Header::closepage();