]>
Commit | Line | Data |
---|---|---|
069ae085 MT |
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 </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'> </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'> </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] - $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> </td> | |
521 | <td> </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/</\</; | |
548 | s/>/\>/; | |
549 | print; | |
550 | } | |
551 | print "</pre>\n"; | |
552 | } | |
553 | ||
554 | &Header::closebox(); | |
555 | ||
556 | &Header::closebigbox(); | |
557 | ||
558 | &Header::closepage(); |