X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Ftraffic.cgi;h=70e5726c907b6498b85c92bd63f04cea1d341966;hp=91101e8361367bc98745f3072a08f90e7f168a1d;hb=278280da9606d394ec7c39127ffadc26a5a3d3d0;hpb=70df830214c97a68fcb7e89ae0d7df58c35590be diff --git a/html/cgi-bin/traffic.cgi b/html/cgi-bin/traffic.cgi index 91101e836..70e5726c9 100644 --- a/html/cgi-bin/traffic.cgi +++ b/html/cgi-bin/traffic.cgi @@ -36,9 +36,6 @@ my %mainsettings = (); &General::readhash("${General::swroot}/main/settings", \%mainsettings); &General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); -my @dummy = (@NETTRAFF::months, @NETTRAFF::longmonths, $NETTRAFF::colorOk, $NETTRAFF::colorWarn, $NETTRAFF::colorMax); -undef(@dummy); - my %cgiparams; my %pppsettings; my %netsettings; @@ -46,393 +43,81 @@ my %netsettings; &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); -my @now = localtime(time); - -$now[5] = $now[5]+1900; - -$cgiparams{'STARTYEAR'} = $now[5]; -$cgiparams{'STARTMONTH'} = $now[4]; - -my $startDay = '1'; -my $endDay = '1'; - -if($NETTRAFF::settings{'MONTHLY_VOLUME_ON'} eq 'on') -{ - $startDay = $NETTRAFF::settings{'STARTDAY'}; - $endDay = $NETTRAFF::settings{'STARTDAY'}; -} - -# this periode started last month -if ($now[3] < $startDay) -{ - # 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{'STARTYEAR'} = $now[5]; - $cgiparams{'STARTMONTH'} = $now[4]-1; - } -} &Header::getcgihash(\%cgiparams); -my $selectYearALL = ""; -$selectYearALL = 'selected=\'selected\'' if($cgiparams{'STARTYEAR'} eq '????'); - -my $selectMonthALL = ""; -$selectMonthALL = 'selected=\'selected\'' if($cgiparams{'STARTMONTH'} eq '??'); - &Header::showhttpheaders(); &Header::openpage($Lang::tr{'sstraffic'}, 1, ''); &Header::openbigbox('100%', 'left'); -&Header::openbox('100%', 'left', ""); -my $firstDayTxt = ''; +&Header::openbox('100%', 'center', "$Lang::tr{'traffics'}"); -if($NETTRAFF::settings{'MONTHLY_VOLUME_ON'} eq 'on') -{ - $firstDayTxt = " ($Lang::tr{'monthly volume start day short'}: $NETTRAFF::settings{'STARTDAY'}.)"; -} - -print < - - -
- $Lang::tr{'selecttraffic'}$firstDayTxt: - - - -
- - -
- -
- - - -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'} =~ /^(4)$/) { - $dateWidth = '12%'; - $netWidth = '22%'; - $inOutWidth = '11%'; -} -# 3 networks -if ($netsettings{'CONFIG_TYPE'} =~ /^(2|3)$/) { - $dateWidth = '16%'; - $netWidth = '28%'; - $inOutWidth = '14%'; -} - -print < - - - $Lang::tr{'trafficgreen'} -END - +# Check config and display aditional Networks (BLUE and ORANGE) +# if they exist if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) { - print "$Lang::tr{'trafficblue'}"; + display_vnstat($netsettings{'BLUE_DEV'}); } if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) { - print "$Lang::tr{'trafficorange'}"; -} - -if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) { - print "$Lang::tr{'trafficred'}"; -} -print < - - - - - - -END - -if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) -{ - print ""; - print ""; -} - -if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) -{ - print ""; - print ""; -} -if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) -{ -print ""; -print ""; -} -print ""; - -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 $endYear = $cgiparams{'STARTYEAR'}; -my $startMonth = $cgiparams{'STARTMONTH'}; -my $endMonth = $cgiparams{'STARTMONTH'}; -my $displayMode = "daily_multi"; -$startDay = '1'; -$endDay = '1'; -my $selectedMonth = '0'; - -if($NETTRAFF::settings{'MONTHLY_VOLUME_ON'} eq 'on') -{ - $startDay = $NETTRAFF::settings{'STARTDAY'}; - $endDay = $NETTRAFF::settings{'STARTDAY'}; -} - -# "show All ? -if ($cgiparams{'STARTYEAR'} eq '????') -{ - # 'show all month' + 'show all years' - # OR + 'show all years' - - # if we have a , we read all traffic but display only the selected month - if($cgiparams{'STARTMONTH'} ne '??') - { - $selectedMonth = $cgiparams{'STARTMONTH'} + 1; - $selectedMonth = $selectedMonth < 10 ? $selectedMonth = "0".$selectedMonth : $selectedMonth; - } - - $displayMode = "monthly"; - # start with 1970-01-01 - $startYear = 1970; - $startMonth = '1'; - $startDay = '1'; - # end with next year: 20xx-01-01 - $endYear = $now[5] + 1; - $endMonth = '1'; - $endDay = '1'; -} -elsif ($cgiparams{'STARTMONTH'} eq '??') -{ - # 'show all month' + 200x - $displayMode = "monthly"; - # start with 200x-01-01 - $startMonth = '1'; - $startDay = '1'; - # end with (200x+1)-01-01 - $endYear = $startYear + 1; - $endMonth = '1'; - $endDay = '1'; -} -else -{ - # no "Show All" - $startMonth++; - $endMonth = $endMonth + 2; - - # this periode started last month - if ($now[3] < $startDay) - { - # when current month is january we start in last year december - if ($endMonth == 1) { - $startYear--; - $startMonth = 12; - } - } - else - { - # when we are in december, this periode ends next year january - if ($startMonth == 12) { - $endYear++; - $endMonth = 1; - } - } -} - - - -$startMonth = $startMonth < 10 ? $startMonth = "0".$startMonth : $startMonth; -$endMonth = $endMonth < 10 ? $endMonth = "0".$endMonth : $endMonth; -$startDay = $startDay < 10 ? $startDay = "0".$startDay : $startDay; -$endDay = $endDay < 10 ? $endDay = "0".$endDay : $endDay; - -my $start = "$startYear$startMonth$startDay"; -my $end = "$endYear$endMonth$endDay"; - -my %allDaysBytes = (); -my @allDays = &Traffic::calcTraffic(\%allDaysBytes,$start,$end, $displayMode); - - -foreach (@allDays) -{ - # special code for: + 'show all years' - if($cgiparams{'STARTMONTH'} ne '??' && $cgiparams{'STARTYEAR'} eq '????') - { - # show only those traffic in the selected month - if($allDaysBytes{$_}{'Day'} !~ /^\d\d\d\d-$selectedMonth$/) - { - next; - } - } - - $total_green_in += $allDaysBytes{$_}{${Traffic::green_in}}; - $total_green_out += $allDaysBytes{$_}{${Traffic::green_out}}; - - if ($netsettings{'CONFIG_TYPE'} =~ /^(3|4)$/) - { - $total_blue_in += $allDaysBytes{$_}{${Traffic::blue_in}}; - $total_blue_out += $allDaysBytes{$_}{${Traffic::blue_out}}; - } - - if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) - { - $total_orange_in += $allDaysBytes{$_}{${Traffic::orange_in}}; - $total_orange_out += $allDaysBytes{$_}{${Traffic::orange_out}}; - } - - if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) - { - $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'} =~ /^(3|4)$/) - { - printf "\n", ($allDaysBytes{$_}{${Traffic::blue_in}}/1048576); - printf "\n", ($allDaysBytes{$_}{${Traffic::blue_out}}/1048576); - } - if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) - { - printf "\n", ($allDaysBytes{$_}{${Traffic::orange_in}}/1048576); - printf "\n", ($allDaysBytes{$_}{${Traffic::orange_out}}/1048576); - } - - if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) - { - 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'} =~ /^(3|4)$/) -{ - print ""; - print ""; -} - -if ($netsettings{'CONFIG_TYPE'} =~ /^(2|4)$/) -{ - print ""; - print ""; -} -if ($netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/) -{ -print ""; -print ""; -} -print "
$Lang::tr{'trafficdate'}$Lang::tr{'trafficin'}$Lang::tr{'trafficout'}$Lang::tr{'trafficin'}$Lang::tr{'trafficout'}$Lang::tr{'trafficin'}$Lang::tr{'trafficout'}$Lang::tr{'trafficin'}$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_in MB$total_red_out MB
"; - -if($NETTRAFF::settings{'MONTHLY_VOLUME_ON'} eq 'on') -{ - my $total_red_all = sprintf("%.2f", ($total_red_in + $total_red_out)); - - my $color = $NETTRAFF::colorOk; - - my $warnTraff = ($NETTRAFF::settings{'MONTHLY_VOLUME'} * $NETTRAFF::settings{'WARN'} / 100); - if($NETTRAFF::settings{'WARN_ON'} eq 'on' - && $warnTraff < $total_red_all) - { - $color = $NETTRAFF::colorWarn; - } - if($NETTRAFF::settings{'MONTHLY_VOLUME'} < $total_red_all) - { - $color = $NETTRAFF::colorMax; - } - - print < - $Lang::tr{'monthly volume'} ($NETTRAFF::settings{'MONTHLY_VOLUME'} MB) - $total_red_all MB - -END + display_vnstat($netsettings{'ORANGE_DEV'}); } &Header::closebox(); &Header::closebigbox(); &Header::closepage(); + +sub display_vnstat +{ + my $device = $_[0]; + + my $testdata = `/usr/bin/vnstat -i $device`; + + if ( $testdata =~ 'enough') { + print"No data for $device !
"; + } else { + # Falls back to textoutput if there was no % value because vnstati hang in this case + if (!($testdata =~ 'nan%')) { + system("/usr/bin/vnstati -c 5 -s -i $device -o /srv/web/ipfire/html/graphs/vnstat-s-$device.png"); + } + # Hour graph + system("/usr/bin/vnstati -c 5 -h -i $device -o /srv/web/ipfire/html/graphs/vnstat-h-$device.png"); + # Day graph + system("/usr/bin/vnstati -c 5 -d -i $device -o /srv/web/ipfire/html/graphs/vnstat-d-$device.png"); + # Month graph + system("/usr/bin/vnstati -c 5 -m -i $device -o /srv/web/ipfire/html/graphs/vnstat-m-$device.png"); + # Top10 graph + system("/usr/bin/vnstati -c 5 -t -i $device -o /srv/web/ipfire/html/graphs/vnstat-t-$device.png"); + +# Generate HTML-Table with the graphs + print ""; + if ($testdata =~ 'nan%') { + print ""; + } else { + print""; + } +print < + + + +
";
+		system("/usr/bin/vnstat -i $device");
+		print "
+END +; + } + print"
"; +}