#!/usr/bin/perl # # SmoothWall CGIs # # This code is distributed under the terms of the GPL # # (c) The SmoothWall Team # use strict; # enable only the following on debugging purpose use warnings; use CGI::Carp 'fatalsToBrowser'; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; require '/var/ipfire/net-traffic/net-traffic-lib.pl'; my %cgiparams; my %netsettings; &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); my @years=("2001","2002","2003","2004","2005","2006","2007","2008","2009"); my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'}, $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'}, $Lang::tr{'august'}, $Lang::tr{'september'}, $Lang::tr{'october'}, $Lang::tr{'november'}, $Lang::tr{'december'} ); my @months = ( 0,1,2,3,4,5,6,7,8,9,10,11 ); my @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 ); my @wday = ($Lang::tr{'wday1'}, $Lang::tr{'wday2'}, $Lang::tr{'wday3'}, $Lang::tr{'wday4'}, $Lang::tr{'wday5'}, $Lang::tr{'wday6'}, $Lang::tr{'wday7'}); my @now = localtime(time); $now[5] = $now[5]+1900; $cgiparams{'STARTDAY'} = 10; $cgiparams{'STOPDAY'} = 11; $cgiparams{'STARTYEAR'} = $now[5]; $cgiparams{'STOPYEAR'} = $now[5]; # this periode started last month if ($now[3] < 10) { $cgiparams{'STARTMONTH'} = $now[4]-1; $cgiparams{'STOPMONTH'} = $now[4]; # when current month is january we start in last year december if ($now[4] == 0) { $cgiparams{'STARTYEAR'} = $now[5]-1; $cgiparams{'STARTMONTH'} = 11; } } else { $cgiparams{'STARTMONTH'} = $now[4]; $cgiparams{'STOPMONTH'} = $now[4]+1; # when we are december, this periode ends next year january if ($now[4] == 11) { $cgiparams{'STOPYEAR'} = $now[5]+1; $cgiparams{'STOPMONTH'} = 0; } } &Header::getcgihash(\%cgiparams); &Header::showhttpheaders(); &Header::openpage($Lang::tr{'sstraffic'}, 1, ''); &Header::openbigbox('100%', 'left'); &Header::openbox('100%', 'left', $Lang::tr{'settingsc'}); print <
$Lang::tr{'trafficfrom'} END foreach (@months) { print "\t\n"; } print < END foreach (@days) { print "\t\n"; } print < END for (my $index = 0; $index <=$#years; $index++) { print "\t\n"; } print <
END &Header::closebox(); &Header::openbox('100%', 'left', $Lang::tr{'traffics'}); my $dateWidth = '20%'; my $netWidth = '34%'; my $inOutWidth = '17%'; # 4 networks if ($netsettings{'CONFIG_TYPE'} =~ /^(5|7)$/) { $dateWidth = '12%'; $netWidth = '22%'; $inOutWidth = '11%'; } # 3 networks if ($netsettings{'CONFIG_TYPE'} =~ /^(1|3|4|6)$/) { $dateWidth = '16%'; $netWidth = '28%'; $inOutWidth = '14%'; } print < $Lang::tr{'trafficgreen'} END if ($netsettings{'CONFIG_TYPE'} =~ /^(4|5|6|7)$/) { print "$Lang::tr{'trafficblue'}"; } if ($netsettings{'CONFIG_TYPE'} =~ /^(1|3|5|7)$/) { print "$Lang::tr{'trafficorange'}"; } print <$Lang::tr{'trafficred'} END if ($netsettings{'CONFIG_TYPE'} =~ /^(4|5|6|7)$/) { print ""; print ""; } if ($netsettings{'CONFIG_TYPE'} =~ /^(1|3|5|7)$/) { print ""; print ""; } print <$Lang::tr{'trafficin'} END my $total_blue_in=0; my $total_blue_out=0; my $total_green_in=0; my $total_green_out=0; my $total_orange_in=0; my $total_orange_out=0; my $total_red_in=0; my $total_red_out=0; my $lines=0; my $startyear = $cgiparams{'STARTYEAR'}; my $stopyear = $cgiparams{'STOPYEAR'}; my $startMonth = $cgiparams{'STARTMONTH'}+1; $startMonth = $startMonth < 10 ? $startMonth = "0".$startMonth : $startMonth; my $endMonth = $cgiparams{'STOPMONTH'}+1; $endMonth = $endMonth < 10 ? $endMonth = "0".$endMonth : $endMonth; my $startDay = $cgiparams{'STARTDAY'}; $startDay = $startDay < 10 ? $startDay = "0".$startDay : $startDay; my $endDay = $cgiparams{'STOPDAY'}+1; $endDay = $endDay < 10 ? $endDay = "0".$endDay : $endDay; my $displayMode = "daily_multi"; my $start = $startyear.$startMonth.$startDay; my $end = $stopyear.$endMonth.$endDay; my %allDaysBytes = (); my @allDays = &Traffic::calcTraffic(\%allDaysBytes,$start,$end, $displayMode); foreach (@allDays) { $total_green_in += $allDaysBytes{$_}{${Traffic::green_in}}; $total_green_out += $allDaysBytes{$_}{${Traffic::green_out}}; if ($netsettings{'CONFIG_TYPE'} =~ /^(4|5|6|7)$/) { $total_blue_in += $allDaysBytes{$_}{${Traffic::blue_in}}; $total_blue_out += $allDaysBytes{$_}{${Traffic::blue_out}}; } if ($netsettings{'CONFIG_TYPE'} =~ /^(1|3|5|7)$/) { $total_orange_in += $allDaysBytes{$_}{${Traffic::orange_in}}; $total_orange_out += $allDaysBytes{$_}{${Traffic::orange_out}}; } $total_red_in += $allDaysBytes{$_}{${Traffic::red_in}}; $total_red_out += $allDaysBytes{$_}{${Traffic::red_out}}; if ($lines % 2) { print ""; } else { print ""; } printf "\n", $allDaysBytes{$_}{'Day'}; printf "\n", ($allDaysBytes{$_}{${Traffic::green_in}}/1048576); printf "\n", ($allDaysBytes{$_}{${Traffic::green_out}}/1048576); if ($netsettings{'CONFIG_TYPE'} =~ /^(4|5|6|7)$/) { printf "\n", ($allDaysBytes{$_}{${Traffic::blue_in}}/1048576); printf "\n", ($allDaysBytes{$_}{${Traffic::blue_out}}/1048576); } if ($netsettings{'CONFIG_TYPE'} =~ /^(1|3|5|7)$/) { printf "\n", ($allDaysBytes{$_}{${Traffic::orange_in}}/1048576); printf "\n", ($allDaysBytes{$_}{${Traffic::orange_out}}/1048576); } printf "\n", ($allDaysBytes{$_}{${Traffic::red_in}}/1048576); printf "\n", ($allDaysBytes{$_}{${Traffic::red_out}}/1048576); $lines++; } $total_green_in=sprintf("%.2f", ($total_green_in/1048576)); $total_green_out=sprintf("%.2f", ($total_green_out/1048576)); $total_blue_in=sprintf("%.2f", ($total_blue_in/1048576)); $total_blue_out=sprintf("%.2f", ($total_blue_out/1048576)); $total_orange_in=sprintf("%.2f", ($total_orange_in/1048576)); $total_orange_out=sprintf("%.2f", ($total_orange_out/1048576)); $total_red_in=sprintf("%.2f", ($total_red_in/1048576)); $total_red_out=sprintf("%.2f", ($total_red_out/1048576)); if ($lines % 2) {print ""; } else {print ""; } print <$Lang::tr{'trafficsum'} END if ($netsettings{'CONFIG_TYPE'} =~ /^(4|5|6|7)$/) { print ""; print ""; } if ($netsettings{'CONFIG_TYPE'} =~ /^(1|3|5|7)$/) { print ""; print ""; } print <$total_red_in MB
$Lang::tr{'trafficdate'} $Lang::tr{'trafficin'} $Lang::tr{'trafficout'}$Lang::tr{'trafficin'}$Lang::tr{'trafficout'}$Lang::tr{'trafficin'}$Lang::tr{'trafficout'}$Lang::tr{'trafficout'}
%s%.3f%.3f%.3f%.3f%.3f%.3f%.3f%.3f
$total_green_in MB $total_green_out MB$total_blue_in MB$total_blue_out MB$total_orange_in MB$total_orange_out MB$total_red_out MB
END &Header::closebox(); &Header::closebigbox(); &Header::closepage();