]>
Commit | Line | Data |
---|---|---|
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 | # | |
9 | ||
10 | use strict; | |
11 | ||
12 | # enable only the following on debugging purpose | |
13 | use warnings; | |
14 | use CGI::Carp 'fatalsToBrowser'; | |
15 | ||
16 | require '/var/ipfire/general-functions.pl'; | |
17 | require "${General::swroot}/lang.pl"; | |
18 | require "${General::swroot}/header.pl"; | |
19 | require '/var/ipfire/net-traffic/net-traffic-lib.pl'; | |
20 | ||
f2fdd0c1 CS |
21 | my %color = (); |
22 | my %mainsettings = (); | |
23 | &General::readhash("${General::swroot}/main/settings", \%mainsettings); | |
24 | &General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); | |
25 | ||
10a04d70 MT |
26 | my %cgiparams; |
27 | my %pppsettings; | |
28 | my %netsettings; | |
29 | ||
30 | &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); | |
31 | &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); | |
32 | ||
33 | my @wday = ($Lang::tr{'wday1'}, $Lang::tr{'wday2'}, $Lang::tr{'wday3'}, $Lang::tr{'wday4'}, $Lang::tr{'wday5'}, $Lang::tr{'wday6'}, $Lang::tr{'wday7'}); | |
34 | ||
35 | my ($s, $min, $h, $d, $m,$y) = localtime(time); | |
36 | $y+=1900; | |
37 | $m+=1; | |
38 | $m = $m < 10 ? $m = "0".$m : $m; | |
39 | ||
40 | $cgiparams{'MONTH'} = $m; | |
41 | &Header::getcgihash(\%cgiparams); | |
42 | $cgiparams{'YEAR'} = $y; | |
43 | &Header::getcgihash(\%cgiparams); | |
44 | ||
45 | &Header::showhttpheaders(); | |
46 | ||
47 | my %selectYear; | |
10a04d70 MT |
48 | $selectYear{'YEAR'}{'2007'} = ''; |
49 | $selectYear{'YEAR'}{'2008'} = ''; | |
50 | $selectYear{'YEAR'}{'2009'} = ''; | |
1be59789 MT |
51 | $selectYear{'YEAR'}{'2010'} = ''; |
52 | $selectYear{'YEAR'}{'2011'} = ''; | |
53 | $selectYear{'YEAR'}{'2012'} = ''; | |
10a04d70 MT |
54 | $selectYear{'YEAR'}{'????'} = ''; |
55 | $selectYear{'YEAR'}{$cgiparams{'YEAR'}} = 'selected=\'selected\''; | |
56 | ||
57 | ||
58 | my %selected; | |
59 | ||
60 | $selected{'MONTH'}{'01'} = ''; | |
61 | $selected{'MONTH'}{'02'} = ''; | |
62 | $selected{'MONTH'}{'03'} = ''; | |
63 | $selected{'MONTH'}{'04'} = ''; | |
64 | $selected{'MONTH'}{'05'} = ''; | |
65 | $selected{'MONTH'}{'06'} = ''; | |
66 | $selected{'MONTH'}{'07'} = ''; | |
67 | $selected{'MONTH'}{'08'} = ''; | |
68 | $selected{'MONTH'}{'09'} = ''; | |
69 | $selected{'MONTH'}{'10'} = ''; | |
70 | $selected{'MONTH'}{'11'} = ''; | |
71 | $selected{'MONTH'}{'12'} = ''; | |
72 | $selected{'MONTH'}{'??'} = ''; | |
73 | $selected{'MONTH'}{$cgiparams{'MONTH'}} = 'selected=\'selected\''; | |
74 | ||
75 | &Header::openpage($Lang::tr{'sstraffic'}, 1, ''); | |
76 | ||
77 | &Header::openbigbox('100%', 'left'); | |
78 | ||
79 | &Header::openbox('100%', 'left', $Lang::tr{'settingsc'}); | |
80 | ||
81 | print <<END; | |
82 | <table width='80%' align='center'> | |
83 | <tr> | |
84 | <td width='95%' align='left' nowrap='nowrap'> | |
85 | <form method='post' action='/cgi-bin/traffic.cgi'> | |
86 | $Lang::tr{'selecttraffic'} | |
87 | <select name='MONTH'> | |
88 | <option $selected{'MONTH'}{'01'} value='01'>$Lang::tr{'january'}</option> | |
89 | <option $selected{'MONTH'}{'02'} value='02'>$Lang::tr{'february'}</option> | |
90 | <option $selected{'MONTH'}{'03'} value='03'>$Lang::tr{'march'}</option> | |
91 | <option $selected{'MONTH'}{'04'} value='04'>$Lang::tr{'april'}</option> | |
92 | <option $selected{'MONTH'}{'05'} value='05'>$Lang::tr{'may'}</option> | |
93 | <option $selected{'MONTH'}{'06'} value='06'>$Lang::tr{'june'}</option> | |
94 | <option $selected{'MONTH'}{'07'} value='07'>$Lang::tr{'july'}</option> | |
95 | <option $selected{'MONTH'}{'08'} value='08'>$Lang::tr{'august'}</option> | |
96 | <option $selected{'MONTH'}{'09'} value='09'>$Lang::tr{'september'}</option> | |
97 | <option $selected{'MONTH'}{'10'} value='10'>$Lang::tr{'october'}</option> | |
98 | <option $selected{'MONTH'}{'11'} value='11'>$Lang::tr{'november'}</option> | |
99 | <option $selected{'MONTH'}{'12'} value='12'>$Lang::tr{'december'}</option> | |
100 | <option $selected{'MONTH'}{'??'} value='??'>$Lang::tr{'allmsg'}</option> | |
101 | </select> | |
102 | <select name='YEAR'> | |
1be59789 MT |
103 | <option $selectYear{'YEAR'}{'2007'} value='2007'>2007</option> |
104 | <option $selectYear{'YEAR'}{'2008'} value='2008'>2008</option> | |
105 | <option $selectYear{'YEAR'}{'2009'} value='2009'>2009</option> | |
106 | <option $selectYear{'YEAR'}{'2010'} value='2010'>2010</option> | |
107 | <option $selectYear{'YEAR'}{'2011'} value='2011'>2011</option> | |
108 | <option $selectYear{'YEAR'}{'2012'} value='2012'>2012</option> | |
10a04d70 MT |
109 | <option $selectYear{'YEAR'}{'????'} value='????'>$Lang::tr{'allmsg'}</option> |
110 | </select> | |
111 | <input type='submit' name='ACTION' value='$Lang::tr{'update'}' /> | |
112 | </form> | |
113 | </td> | |
114 | <td width='5%' align='center'> | |
115 | <form method='post' action='/cgi-bin/traffics.cgi'> | |
116 | <input type='submit' name='ACTION' value=' > ' /> | |
117 | </form> | |
118 | </td> | |
119 | </tr> | |
120 | </table> | |
121 | END | |
122 | ||
123 | &Header::closebox(); | |
124 | ||
125 | &Header::openbox('100%', 'left', $Lang::tr{'traffics'}); | |
126 | ||
127 | my $dateWidth = '20%'; | |
128 | my $netWidth = '34%'; | |
129 | my $inOutWidth = '17%'; | |
130 | ||
131 | # 4 networks | |
b05768be | 132 | if ($netsettings{'CONFIG_TYPE'} =~ /^(4)$/) { |
10a04d70 MT |
133 | $dateWidth = '12%'; |
134 | $netWidth = '22%'; | |
135 | $inOutWidth = '11%'; | |
136 | } | |
137 | # 3 networks | |
b05768be | 138 | if ($netsettings{'CONFIG_TYPE'} =~ /^(2|3)$/) { |
10a04d70 MT |
139 | $dateWidth = '16%'; |
140 | $netWidth = '28%'; | |
141 | $inOutWidth = '14%'; | |
142 | } | |
143 | ||
144 | print <<END; | |
145 | <table width='100%'> | |
146 | <tr> | |
147 | <td width='$dateWidth' align='center' class='boldbase'></td> | |
148 | <td width='$netWidth' align='center' class='boldbase' ><b>$Lang::tr{'trafficgreen'}</b></td> | |
149 | END | |
150 | ||
b05768be | 151 | if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) { |
10a04d70 MT |
152 | print "<td width='$netWidth' align='center' class='boldbase' ><b>$Lang::tr{'trafficblue'}</b></td>"; |
153 | } | |
154 | ||
b05768be | 155 | if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) { |
10a04d70 MT |
156 | print "<td width='$netWidth' align='center' class='boldbase' ><b>$Lang::tr{'trafficorange'}</b></td>"; |
157 | } | |
158 | ||
b05768be CS |
159 | if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) { |
160 | print "<td width='$netWidth' align='center' class='boldbase'><b>$Lang::tr{'trafficred'}</b></td>"; | |
161 | } | |
10a04d70 | 162 | print <<END; |
10a04d70 MT |
163 | </tr> |
164 | </table> | |
165 | <table width='100%'> | |
166 | <tr> | |
167 | <td width='$dateWidth' align='center' class='boldbase'><b>$Lang::tr{'trafficdate'}</b></td> | |
168 | <td width='$inOutWidth' align='center' class='boldbase'><font color='#16A61D'><b>$Lang::tr{'trafficin'}</b></font></td> | |
169 | <td width='$inOutWidth' align='center' class='boldbase'><font color='#16A61D'><b>$Lang::tr{'trafficout'}</b></font></td> | |
170 | END | |
171 | ||
b05768be | 172 | if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) |
10a04d70 MT |
173 | { |
174 | print "<td width='$inOutWidth' align='center' class='boldbase'><font color='${Header::colourblue}'><b>$Lang::tr{'trafficin'}</b></font></td>"; | |
175 | print "<td width='$inOutWidth' align='center' class='boldbase'><font color='${Header::colourblue}'><b>$Lang::tr{'trafficout'}</b></font></td>"; | |
176 | } | |
177 | ||
b05768be | 178 | if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) |
10a04d70 MT |
179 | { |
180 | print "<td width='$inOutWidth' align='center' class='boldbase'><font color='#FF9933'><b>$Lang::tr{'trafficin'}</b></font></td>"; | |
181 | print "<td width='$inOutWidth' align='center' class='boldbase'><font color='#FF9933'><b>$Lang::tr{'trafficout'}</b></font></td>"; | |
182 | } | |
b05768be CS |
183 | if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) |
184 | { | |
185 | print "<td width='$inOutWidth' align='center' class='boldbase'><font color='#CE1B31'><b>$Lang::tr{'trafficin'}</b></font></td>"; | |
186 | print "<td width='$inOutWidth' align='center' class='boldbase'><font color='#CE1B31'><b>$Lang::tr{'trafficout'}</b></font></td>"; | |
187 | } | |
188 | print"</tr>"; | |
10a04d70 MT |
189 | |
190 | my $total_blue_in=0; | |
191 | my $total_blue_out=0; | |
192 | my $total_green_in=0; | |
193 | my $total_green_out=0; | |
194 | my $total_orange_in=0; | |
195 | my $total_orange_out=0; | |
196 | my $total_red_in=0; | |
197 | my $total_red_out=0; | |
198 | my $lines=0; | |
199 | ||
200 | my $displayMode = "daily"; | |
201 | my $startMonth = $cgiparams{'MONTH'}; | |
202 | my $endMonth = $cgiparams{'MONTH'}; | |
203 | ||
204 | if ($cgiparams{'MONTH'} eq '??') { | |
205 | $displayMode = "monthly"; | |
206 | $startMonth = '01'; | |
207 | $endMonth = '12'; | |
208 | } | |
209 | ||
210 | my $start = "$cgiparams{'YEAR'}$startMonth"."01"; | |
211 | my $end = "$cgiparams{'YEAR'}$endMonth"."32"; | |
212 | my %allDaysBytes = (); | |
213 | my @allDays = &Traffic::calcTraffic(\%allDaysBytes,$start,$end, $displayMode); | |
214 | ||
215 | ||
216 | foreach (@allDays) { | |
217 | $total_green_in += $allDaysBytes{$_}{${Traffic::green_in}}; | |
218 | $total_green_out += $allDaysBytes{$_}{${Traffic::green_out}}; | |
219 | ||
b05768be | 220 | if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) |
10a04d70 MT |
221 | { |
222 | $total_blue_in += $allDaysBytes{$_}{${Traffic::blue_in}}; | |
223 | $total_blue_out += $allDaysBytes{$_}{${Traffic::blue_out}}; | |
224 | } | |
225 | ||
b05768be | 226 | if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) |
10a04d70 MT |
227 | { |
228 | $total_orange_in += $allDaysBytes{$_}{${Traffic::orange_in}}; | |
229 | $total_orange_out += $allDaysBytes{$_}{${Traffic::orange_out}}; | |
230 | } | |
b05768be CS |
231 | |
232 | if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) | |
233 | { | |
10a04d70 MT |
234 | $total_red_in += $allDaysBytes{$_}{${Traffic::red_in}}; |
235 | $total_red_out += $allDaysBytes{$_}{${Traffic::red_out}}; | |
b05768be CS |
236 | } |
237 | ||
10a04d70 | 238 | if ($lines % 2) { |
f2fdd0c1 | 239 | print "<tr bgcolor='$color{'color20'}'>"; } |
10a04d70 | 240 | else { |
f2fdd0c1 | 241 | print "<tr bgcolor='$color{'color22'}'>"; } |
10a04d70 MT |
242 | |
243 | printf "<td align='center' nowrap='nowrap'>%s</td>\n", $allDaysBytes{$_}{'Day'}; | |
244 | printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::green_in}}/1048576); | |
245 | printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::green_out}}/1048576); | |
246 | ||
b05768be | 247 | if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) |
10a04d70 MT |
248 | { |
249 | printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::blue_in}}/1048576); | |
250 | printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::blue_out}}/1048576); | |
251 | } | |
b05768be | 252 | if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) |
10a04d70 MT |
253 | { |
254 | printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::orange_in}}/1048576); | |
255 | printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::orange_out}}/1048576); | |
256 | } | |
b05768be CS |
257 | if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) |
258 | { | |
10a04d70 MT |
259 | printf "<td align='center' nowrap='nowrap'>%.3f</td>\n", ($allDaysBytes{$_}{${Traffic::red_in}}/1048576); |
260 | printf "<td align='center' nowrap='nowrap'>%.3f</td></tr>\n", ($allDaysBytes{$_}{${Traffic::red_out}}/1048576); | |
b05768be | 261 | } |
10a04d70 MT |
262 | $lines++; |
263 | } | |
264 | ||
265 | $total_green_in=sprintf("%.2f", ($total_green_in/1048576)); | |
266 | $total_green_out=sprintf("%.2f", ($total_green_out/1048576)); | |
267 | $total_blue_in=sprintf("%.2f", ($total_blue_in/1048576)); | |
268 | $total_blue_out=sprintf("%.2f", ($total_blue_out/1048576)); | |
269 | $total_orange_in=sprintf("%.2f", ($total_orange_in/1048576)); | |
270 | $total_orange_out=sprintf("%.2f", ($total_orange_out/1048576)); | |
271 | $total_red_in=sprintf("%.2f", ($total_red_in/1048576)); | |
272 | $total_red_out=sprintf("%.2f", ($total_red_out/1048576)); | |
273 | ||
f2fdd0c1 CS |
274 | if ($lines % 2) {print "<tr bgcolor='$color{'color20'}'>"; } |
275 | else {print "<tr bgcolor='$color{'color22'}'>"; } | |
10a04d70 MT |
276 | |
277 | print <<END; | |
278 | <td align='center' class='boldbase' height='20' nowrap='nowrap'><b>$Lang::tr{'trafficsum'}</b></td> | |
279 | <td align='center' class='boldbase' nowrap='nowrap'><b>$total_green_in MB</b></td> | |
280 | <td align='center' class='boldbase' nowrap='nowrap'><b>$total_green_out MB</b></td> | |
281 | END | |
282 | ||
b05768be | 283 | if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) |
10a04d70 MT |
284 | { |
285 | print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_blue_in MB</b></td>"; | |
286 | print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_blue_out MB</b></td>"; | |
287 | } | |
288 | ||
b05768be | 289 | if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) |
10a04d70 MT |
290 | { |
291 | print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_orange_in MB</b></td>"; | |
292 | print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_orange_out MB</b></td>"; | |
293 | } | |
b05768be CS |
294 | if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) |
295 | { | |
296 | print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_red_in MB</b></td>"; | |
297 | print "<td align='center' class='boldbase' nowrap='nowrap'><b>$total_red_out MB</b></td>"; | |
298 | } | |
10a04d70 | 299 | print <<END; |
10a04d70 MT |
300 | </tr> |
301 | </table> | |
302 | END | |
303 | ||
304 | &Header::closebox(); | |
305 | ||
306 | &Header::closebigbox(); | |
307 | ||
308 | &Header::closepage(); |