]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - html/cgi-bin/traffics.cgi
Debuginformationen aus den CGIs entfernt
[people/pmueller/ipfire-2.x.git] / html / cgi-bin / traffics.cgi
CommitLineData
10a04d70
MT
1#!/usr/bin/perl
2#
3# SmoothWall CGIs
4#
5# This code is distributed under the terms of the GPL
6#
7# (c) The SmoothWall Team
8#
d81292e0
CS
9# $Id: traffics.cgi,v 1.12 2006/11/15 21:14:02 dotzball Exp $
10#
11# traffics.cgi, v1.1.0 2003/10/18
12# supports now:
13# * IPCop v1.3.0
14# * choosing year
10a04d70
MT
15
16use strict;
17
18# enable only the following on debugging purpose
cb5e9c6c
CS
19#use warnings;
20#use CGI::Carp 'fatalsToBrowser';
10a04d70
MT
21
22require '/var/ipfire/general-functions.pl';
23require "${General::swroot}/lang.pl";
24require "${General::swroot}/header.pl";
d81292e0
CS
25require "${General::swroot}/net-traffic/net-traffic-admin.pl";
26require "${General::swroot}/net-traffic/net-traffic-lib.pl";
10a04d70 27
a08a5f33
CS
28my %color = ();
29my %mainsettings = ();
30&General::readhash("${General::swroot}/main/settings", \%mainsettings);
31&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
32
d81292e0 33my %cgiparams;
10a04d70
MT
34my %netsettings;
35
36&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
37
10a04d70
MT
38my @days = ( 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 );
39
d81292e0 40my @now = localtime(time);
10a04d70
MT
41
42$now[5] = $now[5]+1900;
43
d81292e0
CS
44$cgiparams{'STARTDAY'} = 10;
45$cgiparams{'STOPDAY'} = 11;
46$cgiparams{'STARTYEAR'} = $now[5];
47$cgiparams{'STOPYEAR'} = $now[5];
48
49if($NETTRAFF::settings{'MONTHLY_VOLUME_ON'} eq 'on')
50{
51 $cgiparams{'STARTDAY'} = $NETTRAFF::settings{'STARTDAY'};
52 $cgiparams{'STOPDAY'} = $NETTRAFF::settings{'STARTDAY'};
53}
10a04d70
MT
54
55# this periode started last month
d81292e0 56if ($now[3] < $cgiparams{'STARTDAY'}) {
10a04d70
MT
57 $cgiparams{'STARTMONTH'} = $now[4]-1;
58 $cgiparams{'STOPMONTH'} = $now[4];
59 # when current month is january we start in last year december
d81292e0 60 if ($cgiparams{'STOPMONTH'} == 0) {
10a04d70 61 $cgiparams{'STARTYEAR'} = $now[5]-1;
d81292e0 62 $cgiparams{'STARTMONTH'} = 11;
10a04d70
MT
63 }
64}
65else {
66 $cgiparams{'STARTMONTH'} = $now[4];
67 $cgiparams{'STOPMONTH'} = $now[4]+1;
d81292e0
CS
68 # when we are in december, this periode ends next year january
69 if ($cgiparams{'STARTMONTH'} == 11) {
70 $cgiparams{'STOPYEAR'} = $now[5]+1;
10a04d70
MT
71 $cgiparams{'STOPMONTH'} = 0;
72 }
73}
10a04d70 74
d81292e0 75&Header::getcgihash(\%cgiparams);
10a04d70 76&Header::showhttpheaders();
10a04d70 77&Header::openpage($Lang::tr{'sstraffic'}, 1, '');
10a04d70 78&Header::openbigbox('100%', 'left');
d81292e0 79&Header::openbox('100%', 'left', "");
10a04d70
MT
80
81print <<END;
82<table width='100%' align='center'>
83<tr>
d81292e0 84 <td width='90%' class='base' align='center'>
10a04d70
MT
85 <form method='post' action='/cgi-bin/traffics.cgi'>
86 $Lang::tr{'trafficfrom'}
87 <select name='STARTDAY'>
88END
89
d81292e0 90foreach my $day (@days)
10a04d70
MT
91{
92 print "\t<option ";
d81292e0 93 if ($day == $cgiparams{'STARTDAY'}) {
10a04d70 94 print 'selected=\'selected\' '; }
d81292e0 95 print "value='$day'>$day</option>\n";
10a04d70
MT
96}
97print <<END;
98 </select>
99 <select name='STARTMONTH'>
100END
101
d81292e0 102foreach my $month (@NETTRAFF::months)
10a04d70
MT
103{
104 print "\t<option ";
d81292e0 105 if ($month == $cgiparams{'STARTMONTH'}) {
10a04d70 106 print 'selected=\'selected\' '; }
d81292e0 107 print "value='$month'>$NETTRAFF::longmonths[$month]</option>\n";
10a04d70
MT
108}
109
110print <<END;
111 </select>
112 <select name='STARTYEAR'>
113END
114
d81292e0 115foreach my $year (@NETTRAFF::years) {
10a04d70 116 print "\t<option ";
d81292e0 117 if ($year == $cgiparams{'STARTYEAR'}) {
10a04d70 118 print 'selected=\'selected\' '; }
d81292e0 119 print "value='$year'>$year</option>\n";
10a04d70
MT
120}
121
122print <<END;
123 </select>
124 $Lang::tr{'trafficto'}
125 <select name='STOPDAY'>
126END
127
d81292e0 128foreach my $day (@days)
10a04d70
MT
129{
130 print "\t<option ";
d81292e0 131 if ($day == $cgiparams{'STOPDAY'})
10a04d70
MT
132 {
133 print 'selected=\'selected\' '; }
d81292e0 134 print "value='$day'>$day</option>\n";
10a04d70
MT
135}
136
137print <<END;
138 </select>
139 <select name='STOPMONTH'>
140END
141
d81292e0 142foreach my $month (@NETTRAFF::months)
10a04d70
MT
143{
144 print "\t<option ";
d81292e0 145 if ($month == $cgiparams{'STOPMONTH'}) {
10a04d70 146 print 'selected=\'selected\' '; }
d81292e0 147 print "value='$month'>$NETTRAFF::longmonths[$month]</option>\n";
10a04d70
MT
148}
149
150print <<END;
151 </select>
152 <select name='STOPYEAR'>
153END
154
d81292e0 155foreach my $year (@NETTRAFF::years) {
10a04d70 156 print "\t<option ";
d81292e0 157 if ($year == $cgiparams{'STOPYEAR'}) {
10a04d70 158 print 'selected=\'selected\' '; }
d81292e0 159 print "value='$year'>$year</option>\n";
10a04d70
MT
160}
161
162
163print <<END;
164 </select>
165 <input type='submit' name='ACTION' value='$Lang::tr{'update'}' />
d81292e0
CS
166 </form>
167 </td>
10a04d70
MT
168 <td width='5%' align='center'>
169 <form method='post' action='/cgi-bin/traffic.cgi'>
170 <input type='submit' name='ACTION' value=' > ' />
171 </form>
d81292e0 172 </td>
10a04d70
MT
173 </tr>
174 </table>
175END
176
177&Header::closebox();
178
d81292e0 179&Header::openbox('100%', 'left', "$Lang::tr{'traffics'}");
10a04d70
MT
180
181my $dateWidth = '20%';
182my $netWidth = '34%';
183my $inOutWidth = '17%';
184
185# 4 networks
a08a5f33 186if ($netsettings{'CONFIG_TYPE'} =~ /^(4)$/) {
10a04d70
MT
187 $dateWidth = '12%';
188 $netWidth = '22%';
189 $inOutWidth = '11%';
190}
191# 3 networks
a08a5f33 192if ($netsettings{'CONFIG_TYPE'} =~ /^(2|3)$/) {
10a04d70
MT
193 $dateWidth = '16%';
194 $netWidth = '28%';
195 $inOutWidth = '14%';
196}
197
198print <<END;
199 <table width='100%'>
200 <tr>
201 <td width='$dateWidth' align='center' class='boldbase'></td>
202 <td width='$netWidth' align='center' class='boldbase' ><b>$Lang::tr{'trafficgreen'}</b></td>
203END
204
a08a5f33 205if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) {
10a04d70
MT
206 print "<td width='$netWidth' align='center' class='boldbase' ><b>$Lang::tr{'trafficblue'}</b></td>";
207}
208
a08a5f33 209if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) {
10a04d70
MT
210 print "<td width='$netWidth' align='center' class='boldbase' ><b>$Lang::tr{'trafficorange'}</b></td>";
211}
212
d81292e0
CS
213if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/)
214{
215print "<td width='$netWidth' align='center' class='boldbase'><b>$Lang::tr{'trafficred'}</b></td>";
216}
10a04d70 217print <<END;
10a04d70
MT
218 </tr>
219 </table>
220 <table width='100%'>
221 <tr>
222 <td width='$dateWidth' align='center' class='boldbase'><b>$Lang::tr{'trafficdate'}</b></td>
d81292e0
CS
223 <td width='$inOutWidth' align='center' class='boldbase'><font color='$Header::colourgreen'><b>$Lang::tr{'trafficin'}</b></font></td>
224 <td width='$inOutWidth' align='center' class='boldbase'><font color='$Header::colourgreen'><b>$Lang::tr{'trafficout'}</b></font></td>
10a04d70
MT
225END
226
a08a5f33 227if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/)
d81292e0 228{
10a04d70
MT
229 print "<td width='$inOutWidth' align='center' class='boldbase'><font color='${Header::colourblue}'><b>$Lang::tr{'trafficin'}</b></font></td>";
230 print "<td width='$inOutWidth' align='center' class='boldbase'><font color='${Header::colourblue}'><b>$Lang::tr{'trafficout'}</b></font></td>";
d81292e0 231}
10a04d70 232
a08a5f33 233if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/)
d81292e0
CS
234{
235 print "<td width='$inOutWidth' align='center' class='boldbase'><font color='$Header::colourorange'><b>$Lang::tr{'trafficin'}</b></font></td>";
236 print "<td width='$inOutWidth' align='center' class='boldbase'><font color='$Header::colourorange'><b>$Lang::tr{'trafficout'}</b></font></td>";
237}
a08a5f33 238if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/)
d81292e0
CS
239{
240print "<td width='$inOutWidth' align='center' class='boldbase'><font color='$Header::colourred'><b>$Lang::tr{'trafficin'}</b></font></td>";
241print "<td width='$inOutWidth' align='center' class='boldbase'><font color='$Header::colourred'><b>$Lang::tr{'trafficout'}</b></font></td>";
a08a5f33 242}
d81292e0 243print "</tr>";
10a04d70
MT
244
245my $total_blue_in=0;
246my $total_blue_out=0;
247my $total_green_in=0;
248my $total_green_out=0;
249my $total_orange_in=0;
250my $total_orange_out=0;
251my $total_red_in=0;
252my $total_red_out=0;
253my $lines=0;
254
255
256my $startyear = $cgiparams{'STARTYEAR'};
257my $stopyear = $cgiparams{'STOPYEAR'};
258
259my $startMonth = $cgiparams{'STARTMONTH'}+1;
260$startMonth = $startMonth < 10 ? $startMonth = "0".$startMonth : $startMonth;
261
262my $endMonth = $cgiparams{'STOPMONTH'}+1;
263$endMonth = $endMonth < 10 ? $endMonth = "0".$endMonth : $endMonth;
264
265my $startDay = $cgiparams{'STARTDAY'};
266$startDay = $startDay < 10 ? $startDay = "0".$startDay : $startDay;
267
268my $endDay = $cgiparams{'STOPDAY'}+1;
269$endDay = $endDay < 10 ? $endDay = "0".$endDay : $endDay;
270
271my $displayMode = "daily_multi";
272my $start = $startyear.$startMonth.$startDay;
273my $end = $stopyear.$endMonth.$endDay;
274
275my %allDaysBytes = ();
276my @allDays = &Traffic::calcTraffic(\%allDaysBytes,$start,$end, $displayMode);
277
278
279foreach (@allDays) {
280 $total_green_in += $allDaysBytes{$_}{${Traffic::green_in}};
281 $total_green_out += $allDaysBytes{$_}{${Traffic::green_out}};
d81292e0 282
a08a5f33 283 if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/)
10a04d70
MT
284 {
285 $total_blue_in += $allDaysBytes{$_}{${Traffic::blue_in}};
286 $total_blue_out += $allDaysBytes{$_}{${Traffic::blue_out}};
287 }
d81292e0 288
a08a5f33 289 if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/)
10a04d70
MT
290 {
291 $total_orange_in += $allDaysBytes{$_}{${Traffic::orange_in}};
292 $total_orange_out += $allDaysBytes{$_}{${Traffic::orange_out}};
293 }
d81292e0 294
a08a5f33
CS
295 if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/)
296 {
10a04d70
MT
297 $total_red_in += $allDaysBytes{$_}{${Traffic::red_in}};
298 $total_red_out += $allDaysBytes{$_}{${Traffic::red_out}};
a08a5f33 299 }
d81292e0 300
10a04d70 301 if ($lines % 2) {
a08a5f33 302 print "<tr bgcolor='$color{'color20'}'>"; }
10a04d70 303 else {
a08a5f33 304 print "<tr bgcolor='$color{'color22'}'>"; }
d81292e0 305
10a04d70
MT
306 printf "<td align='center' nowrap='nowrap'>%s</td>\n", $allDaysBytes{$_}{'Day'};
307 printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::green_in}}/1048576);
308 printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::green_out}}/1048576);
d81292e0 309
a08a5f33 310 if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/)
d81292e0 311 {
10a04d70
MT
312 printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::blue_in}}/1048576);
313 printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::blue_out}}/1048576);
d81292e0 314 }
a08a5f33 315 if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/)
d81292e0 316 {
10a04d70
MT
317 printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::orange_in}}/1048576);
318 printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::orange_out}}/1048576);
d81292e0
CS
319 }
320 if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/)
a08a5f33 321 {
10a04d70
MT
322 printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::red_in}}/1048576);
323 printf "<td align='center' nowrap='nowrap'>%.3f</td></tr>\n", ($allDaysBytes{$_}{${Traffic::red_out}}/1048576);
d81292e0 324 }
10a04d70
MT
325 $lines++;
326}
327
328$total_green_in=sprintf("%.2f", ($total_green_in/1048576));
329$total_green_out=sprintf("%.2f", ($total_green_out/1048576));
330$total_blue_in=sprintf("%.2f", ($total_blue_in/1048576));
331$total_blue_out=sprintf("%.2f", ($total_blue_out/1048576));
332$total_orange_in=sprintf("%.2f", ($total_orange_in/1048576));
d81292e0 333$total_orange_out=sprintf("%.2f", ($total_orange_out/1048576));
10a04d70
MT
334$total_red_in=sprintf("%.2f", ($total_red_in/1048576));
335$total_red_out=sprintf("%.2f", ($total_red_out/1048576));
d81292e0 336
c85ec3b4 337if ($lines % 2) {print "<tr bgcolor='$color{'color20'}'>"; }
a08a5f33 338else {print "<tr bgcolor='$color{'color22'}'>"; }
d81292e0 339
10a04d70
MT
340print <<END;
341 <td align='center' class='boldbase' height='20' nowrap='nowrap'><b>$Lang::tr{'trafficsum'}</b></td>
342 <td align='center' class='boldbase' nowrap='nowrap'><b>$total_green_in MB</b></td>
343 <td align='center' class='boldbase' nowrap='nowrap'><b>$total_green_out MB</b></td>
344END
d81292e0 345
a08a5f33 346if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/)
d81292e0 347{
10a04d70
MT
348 print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_blue_in MB</b></td>";
349 print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_blue_out MB</b></td>";
350}
351
a08a5f33 352if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/)
d81292e0 353{
10a04d70
MT
354 print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_orange_in MB</b></td>";
355 print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_orange_out MB</b></td>";
356}
d81292e0 357
a08a5f33
CS
358if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/)
359{
d81292e0
CS
360print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_red_in MB</b></td>";
361print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_red_out MB</b></td>";
362}
363print "</tr></table>";
10a04d70
MT
364
365&Header::closebox();
10a04d70 366&Header::closebigbox();
10a04d70 367&Header::closepage();