+<table>
+<tr><td class='boldbase'><b>$Lang::tr{'updxlrtr disk usage'}</b></td></tr>
+</table>
+<table cellpadding='3'>
+<tr>
+<td align='left' class='base'><i>$Lang::tr{'updxlrtr cache dir'}</i></td>
+<td align='center' class='base'><i>$Lang::tr{'size'}</i></td>
+<td align='center' class='base'><i>$Lang::tr{'used'}</i></td>
+<td align='center' class='base'><i>$Lang::tr{'free'}</i></td>
+<td align='left' class='base' colspan='2'><i>$Lang::tr{'percentage'}</i></td>
+</tr>
+END
+;
+
+open(DF,"/bin/df -h $repository|");
+@dfdata = <DF>;
+close DF;
+shift(@dfdata);
+chomp(@dfdata);
+$dfstr = join(' ',@dfdata);
+my ($device,$size,$used,$free,$percent,$mount) = split(' ',$dfstr);
+
+print <<END
+<tr>
+<td>[$repository]</td>
+<td align='right'>$size</td>
+<td align='right'>$used</td>
+<td align='right'>$free</td>
+<td>
+END
+;
+&percentbar($percent);
+print <<END
+</td>
+<td align='right'>$percent</td>
+</tr>
+</table>
+END
+;
+
+if ($numfiles)
+{
+ print <<END
+<hr size='1'>
+<table width='100%'>
+<tr>
+ <td colspan='5'><b>$Lang::tr{'updxlrtr summary'}</b></td>
+</tr>
+<tr>
+ <td class='base' width='25%'>$Lang::tr{'updxlrtr total files'}:</td>
+ <td class='base' width='20%'><font color='$colourgray'>$numfiles</font></td>
+ <td class='base' width='25%'>$Lang::tr{'updxlrtr total cache size'}:</td>
+ <td class='base' width='15%' align='right'><font color='$colourgray'>$filesize</font></td>
+ <td class='base'></td>
+</tr>
+<tr>
+ <td class='base'>$Lang::tr{'updxlrtr efficiency index'}:</td>
+ <td class='base'><font color='$colourgray'>$efficiency</font></td>
+ <td class='base'>$Lang::tr{'updxlrtr total data from cache'}:</td>
+ <td class='base' align='right'><font color='$colourgray'>$cachedtraffic</font></td>
+ <td class='base'></td>
+</tr>
+</table>
+<hr size='1'>
+<table>
+<tr>
+ <td colspan='17'><b>$Lang::tr{'updxlrtr statistics by source'}</b></td>
+</tr>
+<tr>
+ <td class='base' colspan='2'><i>$Lang::tr{'updxlrtr source'}</i></td>
+ <td class='base' width='7%'> </td>
+ <td class='base' align='right'><i>$Lang::tr{'updxlrtr files'}</i></td>
+ <td class='base' width='7%'> </td>
+ <td class='base' align='right'><nobr><i>$Lang::tr{'updxlrtr cache size'}</i></nobr></td>
+ <td class='base' width='7%'> </td>
+ <td class='base' align='right'><nobr><i>$Lang::tr{'updxlrtr data from cache'}</i></nobr></td>
+ <td class='base' width='15%'> </td>
+ <td class='base'><img src="/images/updbooster/updxl-led-green.gif" /></td>
+ <td class='base' width='15%'> </td>
+ <td class='base'><img src="/images/updbooster/updxl-led-yellow.gif" /></td>
+ <td class='base' width='15%'> </td>
+ <td class='base'><img src="/images/updbooster/updxl-led-red.gif" /></td>
+ <td class='base' width='15%'> </td>
+ <td class='base'><img src="/images/updbooster/updxl-led-gray.gif" /></td>
+ <td class='base' width='90%'> </td>
+</tr>
+END
+;
+
+$id = 0;
+
+foreach (@vendors)
+{
+ $vendorid = $_;
+
+ unless ($vendorstats{$vendorid . "_files"}) { next; }
+
+ $id++;
+ if ($id % 2) {
+ print "<tr bgcolor=''$color{'color20'}'>\n"; }
+ else {
+ print "<tr bgcolor=''$color{'color22'}'>\n"; }
+
+ print "<td class='base' align='center'><nobr> ";
+
+ if ($vendorid =~ /^Adobe$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-adobe.gif' alt='Adobe'}' /> </nobr></td>\n";
+ print "<td class='base'> Adobe </td>\n";
+ } elsif ($vendorid =~ /^Microsoft$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-windows.gif' alt='Microsoft'}' /> </nobr></td>\n";
+ print "<td class='base'> Microsoft </td>\n";
+ } elsif ($vendorid =~ /^Symantec$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-symantec.gif' alt='Symantec'}' /> </nobr></td>\n";
+ print "<td class='base'> Symantec </td>\n";
+ } elsif ($vendorid =~ /^Linux$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-linux.gif' alt='Linux'}' /> </nobr></td>\n";
+ print "<td class='base'> Linux </td>\n";
+ } elsif ($vendorid =~ /^TrendMicro$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-trendmicro.gif' alt='Trend Micro'}' /> </nobr></td>\n";
+ print "<td class='base'> Trend Micro </td>\n";
+ } elsif ($vendorid =~ /^Apple$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-apple.gif' alt='Apple'}' /> </nobr></td>\n";
+ print "<td class='base'> Apple </td>\n";
+ } elsif ($vendorid =~ /^Avast$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-avast.gif' alt='Avast'}' /> </nobr></td>\n";
+ print "<td class='base'> Avast </td>\n";
+ } elsif ($vendorid =~ /^Avira$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-avira.gif' alt='Avira' /> </td>\n";
+ print "<td class='base'> Avira </td>\n";
+ } elsif ($vendorid =~ /^AVG$/i)
+ {
+ print "<img src='/images/updbooster/updxl-src-avg.gif' alt='AVG' /> </td>\n";
+ print "<td class='base'> AVG </td>\n";
+ } elsif ($vendorid =~ /^Ipfire$/i)
+ {
+ print "<img src='/images/IPFire.png' width='18' height='18' alt='IPFire' /> </td>\n";
+ print "<td class='base'> IPFire </td>\n";
+ } else
+ {
+ if (-e "/srv/web/ipfire/html/images/updbooster/updxl-src-" . $vendorid . ".gif")
+ {
+ print "<img src='/images/updbooster/updxl-src-" . $vendorid . ".gif' alt='" . ucfirst $vendorid . "' /> </nobr></td>\n";
+ } else {
+ print "<img src='/images/updbooster/updxl-src-unknown.gif' alt='" . ucfirst $vendorid . "' /> </nobr></td>\n";
+ }
+ print "<td class='base'> " . ucfirst $vendorid . " </td>\n";
+ }
+
+ print "<td class='base' colspan=2 align='right'>";
+ printf "%5d", $vendorstats{$vendorid."_files"};
+ print " </td>\n";
+
+ unless ($vendorstats{$vendorid."_filesize"}) { $vendorstats{$vendorid."_filesize"} = '0'; }
+ 1 while $vendorstats{$vendorid."_filesize"} =~ s/^(-?\d+)(\d{3})/$1.$2/;
+ print "<td class='base' colspan=2 align='right'>";
+ printf "%15s", $vendorstats{$vendorid."_filesize"};
+ print " </td>\n";
+
+ unless ($vendorstats{$vendorid."_cachehits"}) { $vendorstats{$vendorid."_cachehits"} = '0'; }
+ 1 while $vendorstats{$vendorid."_cachehits"} =~ s/^(-?\d+)(\d{3})/$1.$2/;
+ print "<td class='base' colspan=2 align='right'>";
+ printf "%15s", $vendorstats{$vendorid."_cachehits"};
+ print " </td>\n";
+
+ print "<td class='base' colspan=2 align='right'>";
+ printf "%5d", $vendorstats{$vendorid."_1"};
+ print " </td>\n";
+
+ print "<td class='base' colspan=2 align='right'>";
+ printf "%5d", $vendorstats{$vendorid."_3"};
+ print " </td>\n";
+
+ print "<td class='base' colspan=2 align='right'>";
+ printf "%5d", $vendorstats{$vendorid."_2"};
+ print " </td>\n";
+
+ print "<td class='base' colspan=2 align='right'>";
+ printf "%5d", $vendorstats{$vendorid."_0"};
+ print " </td>\n";
+
+ print "<td class='base'> </td>\n";
+ print "</tr>\n";
+}
+
+print "</table>\n";
+
+print <<END
+<br>