--- /dev/null
+#!/usr/bin/perl
+
+#
+# A little daemon that I use to clean links created by the bandwidth
+# module for Apache when they weren't removed properly by the server.
+# (Ie: when a httpd process didn't terminated in the usual way.)
+#
+# Change the value of TIME to how often (in seconds) you want to
+# do the cleaning.
+#
+
+$TIME=120;
+
+$PS="ps -auxw";
+$LINKDIR="/var/run/apache-mod_bandwidth/link";
+
+unless(fork) {
+ unless (fork) {
+ sleep 1 until getppid == 1;
+ while (1) {
+ &do_clean;
+ sleep($TIME);
+ }
+ exit 0;
+ }
+ exit 0;
+} wait;
+
+sub do_clean {
+ local(%ppid);
+
+ open(INP, "$PS |");
+ while(<INP>) {
+ if (($process) =/^\S+\s+(\d+)\s+.+httpd\s/) {
+ $ppid{$process}=1;
+ }
+ }
+ close(INP);
+
+ opendir(DIR, $LINKDIR);
+ local(@filename)=readdir(DIR);
+ closedir(DIR);
+
+ for($i=0; $i <= $#filename; $i++) {
+ if ($filename[$i] =~ /^\d+$/) {
+ if (! $ppid{$filename[$i]}) {
+ unlink("$LINKDIR/$filename[$i]");
+ }
+ }
+ }
+}
--- /dev/null
+<HTML>
+<HEAD>
+<TITLE>CohProg SaRL - Network Consulting</TITLE>
+<!--INCLUDE="/v3/template/style.txt"-->
+<style type="text/css">
+<!--
+
+TD.main {
+ background-image:url("/v3/graph/bgmain.jpg");
+}
+
+TD.top {
+ background-image:url("/v3/graph/bgtop.gif");
+}
+
+TD.normal {
+ background-image:url("/v3/graph/empty.gif");
+}
+
+DIV.ctitle {
+ font-family: arial, verdana, helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+DIV.ctext {
+ font-family: verdana, helvetica, sans-serif;
+ font-weight: normal;
+ font-size: 12px;
+}
+
+B.ctextbold {
+ font-family: verdana, helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 12px;
+}
+
+-->
+</style>
+<!--INCLUDE="/v3/javascript/script-en.txt"-->
+<style type="text/css">
+a.mlink {
+text-decoration: none;
+color: black;}
+
+.title
+{position: absolute;
+width: 100px;
+height: 25px;
+left: 0px;
+z-index: 10;
+font-family: verdana, helvetica, sans-serif;
+font-weight: bold;
+font-size: 12px;}
+
+.submenu
+{position: absolute;
+left: 90px;
+width: 120px;
+border: 1px solid black;
+margin: 0pt;
+padding: 0pt;
+color: black;
+background-color: lightgrey;
+layer-background-color: lightgrey;
+font-family: verdana, helvetica, sans-serif;
+font-size: 10px;
+visibility: hidden;}
+
+</style>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Original: Fredrik Fridsten (fredrik.fridsten@home.se) -->
+<!-- Web Site: http://hem.passagen.se/dred -->
+
+<!-- This script and many more are available free online at -->
+<!-- The JavaScript Source!! http://javascript.internet.com -->
+
+<!-- Begin
+
+// ADDITIONAL NOTES
+// The input variables to the toggle function are the number of the submenu to open/close,
+// starting with 0, and the number of pixels to move the objects below.
+// For example toggle(1,60) opens/closes the second submenu and moves the objects below 60 pixels.
+
+var nom = 9; // Number of menus
+var submenuheigh = 13;
+var submenuspacing = 10;
+var usePictures = 1; // use pictures? 1 = yes, 0 = no
+
+var ttls = new Array(); // An array for the title objects
+var subs = new Array(); // An array for the submenu objects
+var lastn;
+var lastmove;
+
+var mimageo = new Array();
+var mimagec = new Array();
+
+mimageo[1] = '/v3/menu/home-en.jpg';
+mimageo[2] = '/v3/menu/hosting-en.jpg';
+mimageo[3] = '/v3/menu/line-en.jpg';
+mimageo[4] = '/v3/menu/produces-en.jpg';
+mimageo[5] = '/v3/menu/consulting-en.jpg';
+mimageo[6] = '/v3/menu/support-en.jpg';
+mimageo[7] = '/v3/menu/info-en.jpg';
+mimageo[8] = '/v3/menu/webmail-en.jpg';
+mimageo[9] = '/v3/menu/mod-en.jpg';
+
+mimagec[1] = '/v3/menu/home-en.jpg';
+mimagec[2] = '/v3/menu/hosting-en.jpg';
+mimagec[3] = '/v3/menu/line-en.jpg';
+mimagec[4] = '/v3/menu/produces-en.jpg';
+mimagec[5] = '/v3/menu/consulting-en.jpg';
+mimagec[6] = '/v3/menu/support-en.jpg';
+mimagec[7] = '/v3/menu/info-en.jpg';
+mimagec[8] = '/v3/menu/webmail-en.jpg';
+mimagec[9] = '/v3/menu/mod-en.jpg';
+
+if (document.layers) {
+visible = 'show';
+hidden = 'hide';
+}
+else
+if (document.all) {
+visible = 'visible';
+hidden = 'hidden';
+}
+for (var i = 1; i <= nom; i++) {
+ttls[i] = ('title' + i);
+subs[i] = ('submenu' +i);
+}
+function picopen(n) {
+title = ('title' + n);
+pic = ('pic' + n);
+if (document.layers) {
+document.layers[title].document.images[pic].src = mimageo[n];
+}
+else if (document.all) {
+document.all(pic).src = mimageo[n];
+ }
+}
+function picclose(n) {
+title = ('title' + n);
+pic = ('pic' + n);
+if (document.layers) {
+document.layers[title].document.images[pic].src = mimagec[n];
+}
+else if (document.all) {
+document.all(pic).src = mimagec[n];
+ }
+}
+lastn = (nom + 1);
+lastmove = 0;
+function lasttoggle(n,move) {
+if (n <= nom) {
+menu = ('submenu' + n);
+if (document.layers) {
+submenu = document.layers[menu];
+}
+else if (document.all) {
+submenu = document.all(menu).style;
+}
+if (submenu.visibility == visible) {
+submenu.visibility = hidden;
+picclose(n); // Remove this if you don't use pictures
+for (var i = (n+1); i <= nom; i++) {
+if (document.layers) {
+document.layers[ttls[i]].top -= move;
+document.layers[subs[i]].top -= move;
+}
+else if (document.all) {
+document.all(ttls[i]).style.pixelTop -= move;
+document.all(subs[i]).style.pixelTop -= move;
+ }
+ }
+ }
+ }
+}
+function toggle(n,tmove) {
+move = (tmove*submenuheigh)+submenuspacing;
+menu = ('submenu' + n);
+if (document.layers) {
+submenu = document.layers[menu];
+}
+else if (document.all) {
+submenu = document.all(menu).style;
+}
+if (submenu.visibility == visible) {
+submenu.visibility = hidden;
+if (usePictures) picclose(n);
+for (var i = (n+1); i <= nom; i++) {
+if (document.layers) {
+document.layers[ttls[i]].top -= move;
+document.layers[subs[i]].top -= move;
+}
+else if (document.all) {
+document.all(ttls[i]).style.pixelTop -= move;
+document.all(subs[i]).style.pixelTop -= move;
+ }
+ }
+}
+else {
+submenu.visibility = visible;
+if (usePictures) picopen(n);
+if (lastn != n) {
+lasttoggle(lastn,lastmove);
+}
+for (var i = (n+1); i <= nom; i++) {
+if (document.layers) {
+document.layers[ttls[i]].top += move;
+document.layers[subs[i]].top += move;
+}
+if (document.all) {
+document.all(ttls[i]).style.pixelTop += move;
+document.all(subs[i]).style.pixelTop += move;
+ }
+ }
+}
+lastn = n;
+lastmove = move;
+}
+// End -->
+</script>
+
+
+<SCRIPT LANGUAGE="JavaScript">
+function open() {return true;}
+</SCRIPT>
+</HEAD>
+<!--INCLUDE="/v3/template/header.txt"-->
+<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="0000FF" VLINK="blueviolet" BACKGROUND="/v3/graph/bg.gif" TOPMARGIN="0" LEFTMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
+<!--INCLUDE="/v3/template/top-en.txt"-->
+<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH="100%" HEIGHT="100%">
+<TR>
+ <TD VALIGN=TOP bgcolor=black width=83 height=90><img src="/v3/graph/topleft.jpg" width=83 height=90></TD>
+ <TD VALIGN=TOP bgcolor=black width=134 height=90><img src="/v3/graph/topcohprog1.jpg" width=134 height=90></TD>
+ <TD VALIGN=TOP bgcolor=black width=277 height=90 class=top><img src="/v3/graph/topcohprog2.jpg" width=277 height=90></TD>
+ <TD VALIGN=TOP width="100%" class=top><IMG SRC="/v3/graph/empty.gif" width=1 height=90></TD>
+</TR>
+<TR>
+ <TD valign=top width=83 height="100%"><img src="/v3/graph/left1.jpg" width=83 height=171></TD>
+ <TD bgcolor=white valign=top width=134 height="100%"><img src="/v3/graph/left2.jpg" width=134 height=171></TD>
+ <TD HEIGHT="100%" width="100%" colspan=2 valign=top class=main>
+<!-- Being page content -->
+<br>
+<br>
+<br>
+<br>
+<table border=0 cellspacing=0 cellpadding=0 width="480">
+<tr>
+ <td class=normal colspan=3><img src="/v3/graph/blue1.gif" width=100 height=2></td>
+</tr><tr>
+ <td valign=top class=normal rowspan=2><img src="/v3/graph/blue1.gif" width=2 height=50></td>
+ <td valign=top width="100%" bgcolor="lightgrey" class=normal>
+ <table border=0 width="100%" cellpadding=20 cellspacing=0>
+ <tr><td width="476">
+ <div class=ctitle>Mod_bandwidth documentation</div><P>
+ <div class=ctext>
+
+<b class=ctextbold>Installation :</b><P>
+WARNING: It is very important to give the lowest priority to mod_bandwidth
+so other modules will have the time to do their job before the documents
+are transmited ! For that reason, it is important to follow those steps :<P>
+<OL>
+<LI> <b class=ctextbold>APACI installation</b><br>
+<UL>
+ <LI>Copy the file mod_bandwidth.c to your Apache source directory.<br>
+ <LI>Run the ./configure script with the following directives : --add-module=mod_bandwidth.c \<br>--permute-module=BEGIN:bandwidth<br>
+ <LI>Compile and install Apache.<P>
+</UL>
+ <b class=ctextbold>Manual installation</b><br>
+<UL>
+ <LI>Copy the file mod_bandwidth.c to the "src/modules/extra" directory of your Apache sources.<br>
+ <LI>Copy the "src/Configuration.tmpl" file to "src/Configuration"<br>
+ <LI>Edit the "src/Configuration" file and add near the begining :<br>
+ AddModule modules/extra/mod_bandwidth.o<br>
+ (This is the reverse of old Apache versions)<br>
+ <LI>Run the "./Configure" script<br>
+ <LI>Compile and install Apache
+</UL>
+<P>
+<LI>Create the needed directories and make sure that they are "read/write/execute" for the user under which Apache run. By default, mod_bandwidth use the following directories but they can be changed using the BandWidthDataDir configuration directive:<P>
+ /tmp/apachebw<BR>
+ /tmp/apachebw/link<br>
+ /tmp/apachebw/master<P>
+
+ Note that if any of those directories doesn't exist, or if they can't
+ be accessed by the server, the module is totaly disabled except for
+ logging an error message in the logfile.
+<P>
+ Be careful that on some systems the content of the /tmp directory
+ is deleted at boot time or every so often by a cronjob. If that the
+ case, either disable this feature or change the location of the
+ directories used by the module using the BandWidthDataDir configuration directive.
+</OL>
+<P>
+ <b class=ctextbold>Global configuration directives :</b><P>
+
+ <UL>
+ <LI><b class=ctextbold>BandWidthDataDir</b><br>
+ Syntax : BandWidthDataDir <directory><br>
+ Default : "/tmp/apachebw"<br>
+ Context : server config
+<P>
+ Sets the name of the root directory used by mod_bandwidth to store
+ its internal temporary information. Don't forget to create the needed
+ directories : <directory>/master and <directory>/link<P>
+<LI><b class=ctextbold>BandWidthModule</b><br>
+ Syntax : BandWidthModule <On|Off><br>
+ Default : Off<br>
+ Context : per server config<P>
+
+ Enable or disable totaly the whole module. By default, the module is
+ disable so it is safe to compile it in the server anyway.
+<P>
+ PLEASE, NOTE THAT IF YOU SET A BANDWIDTH LIMIT INSIDE A VIRTUALHOST
+ BLOCK, YOU ALSO __NEED__ TO PUT THE "BandWidthModule On" DIRECTIVE
+ INSIDE THAT VIRTUALHOST BLOCK !
+<P>
+ IF YOU SET BANDWIDTH LIMITS INSIDE DIRECTORY BLOCKS (OUTSIDE OF
+ ANY VIRTUALHOST BLOCK), YOU ONLY NEED TO PUT THE "BandWidthModule On"
+ DIRECTIVE ONCE, OUTSIDE OF ANY VIRTUALHOST OR DIRECTORY BLOCK.
+<P>
+<LI><b class=ctextbold>BandWidthPulse</b><br>
+ Syntax : BandWidthPulse <microseconds><br>
+ Default :<BR>
+ Context : per server config<P>
+
+ Change the algorithm used to calculate bandwidth and transmit data.
+ In normal mode (old mode), the module try to transmit data in packets
+ of 1KB. That mean that if the bandwidth available is of 512B, the
+ module will transmit 1KB, wait 2 seconds, transmit another 1KB and
+ so one.
+<P>
+ Seting a value with "BandWidthPulse", will change the algorithm so
+ that the server will always wait the same amount of time between
+ sending packets but the size of the packets will change.
+ The value is in microseconds.
+ For example, if you set "BandWidthPulse 1000000" (1 sec) and the
+ bandwidth available is of 512B, the sever will transmit 512B,
+ wait 1 second, transmit 512B and so on.
+<P>
+ The advantage is a smother flow of data. The disadvantage is
+ a bigger overhead of data transmited for packet header.
+ Setting too small a value (bellow 1/5 of a sec) is not realy
+ useful and will put more load on the system and generate more
+ traffic for packet header.
+<P>
+ Note also that the operating system may do some buffering on
+ it's own and so defeat the purpose of setting small values.
+<P>
+ This may be very useful on especialy crowded network connection :
+ In normal mode, several seconds may happen between the sending of
+ a full packet. This may lead to timeout or people may believe that
+ the connection is hanging. Seting a value of 1000000 (1 sec) would
+ guarantee that some data are sent every seconds...
+<P>
+</UL>
+<b class=ctextbold>Directory / VirtualServer configuration directives</b><P>
+<UL>
+<LI><b class=ctextbold>BandWidth</b><br>
+ Syntax : BandWidth <domain|ip|all> <rate><br>
+ Default : none<BR>
+ Context : per directory, .htaccess<P>
+
+ Limit the bandwidth for files in this directory and
+ sub-directories based on the remote host <domain> or
+ <ip> address or for <all> remote hosts.
+ <P>
+ Ip addresses may now be specified in the network/mask format.
+ (Ie: 192.168.0.0/21 )
+ <P>
+ The <rate> is in Bytes/second.
+ A <rate> of "0" means no bandwidth limit.
+ <P>
+ Several BandWidth limits can be set for the same
+ directory to set different limits for different
+ hosts. In this case, the order of the "BandWidth"
+ keywords is important as the module will take the
+ first entry which matches the client address.
+<P>
+ Example :<br>
+ <Directory /home/www><BR>
+ BandWidth ecp.fr 0<BR>
+ BandWidth 138.195 0<BR>
+ BandWidth all 1024<BR>
+ </Directory><P>
+<P>
+ This will limit the bandwith for directory /home/www and
+ all it's subdirectories to 1024Bytes/sec, except for
+ .ecp.fr or 138.195..where no limit is set.
+<P>
+<LI><b class=ctextbold>LargeFileLimit</b><br>
+ Syntax : LargeFileLimit <filesize> <rate><br>
+ Default : none<br>
+ Context : per directory, .htaccess<P>
+
+ Set a maximal <rate> (in bytes/sec) to use when transfering
+ a file of <filesize> KBytes or more.
+<P>
+ Several "LargeFileLimit" can be set for various files sizes
+ to create range. The rate used for a given file size will be
+ the one of the matching range.
+ <P>
+ A <rate> of "0" mean that there isn't any limit based on
+ the size.
+<P>
+ A <rate> of "-1" mean that there isn't any limit for that type
+ of file. It's override even a BandWidth limit. I found this usefull
+ to give priority to very small files (html pages, very small pictures)
+ while seting limits for larger files... (users with their video files
+ can go to hell ! :)
+<P>
+ Example :<BR>
+ If the following limits are set :<BR>
+ LargeFileLimit 200 3072<BR>
+ LargeFileLimit 1024 2048<P>
+
+ That's mean that a file of less than 200KBytes won't be
+ limited based on his size. A file with a size between
+ 200KBytes (included) and 1023Kbytes (included) will be
+ limited to 3072Bytes/sec and a file of 1024Kbytes or more
+ will be limited to 2048Bytes/sec.
+<P>
+<LI><b class=ctextbold>MinBandWidth</b><br>
+ Syntax : MinBandWidth <domain|ip|all> <rate><BR>
+ Default : all 256<BR>
+ Context : per directory, .htaccess<P>
+
+ Set a minimal bandwidth to use for transfering data. This
+ over-ride both BandWidth and LargeFileLimit rules as well
+ as the calculated rate based on the number of connections.
+<P>
+ The first argument is used in the same way as the first
+ argument of BandWidth.
+<P>
+ <rate> is in bytes per second.
+<P>
+ A rate of "0" explicitly means to use the default minimal
+ value (256 Bytes/sec).
+<P>
+ A rate of "-1" means that the minimal rate is equal to the
+ actual rate defined by BandWidth and LargeFileLimit.
+ In fact, that means that the final rate won't depend
+ of the number of connections but only on what was defined.
+<P>
+ Example :<br>
+ If BandWidth is set to "3072" (3KBytes/sec) and MinBandWidth
+ is set to "1024" (1KBytes/sec) that means :<BR>
+ - if there is one connection, the file will be transfered
+ at 3072 Bytes/sec.<BR>
+ - if there is two connections, each files will be transfered
+ at 1536 Bytes/sec.<BR>
+ - if there is three or more connections, each files will be
+ transfered at 1024 Bytes/sec. (Minimal of 1024 Bytes/sec).
+<P>
+ If MinBandWidth is set to "-1" that means :<BR>
+ - if there is one connection, the file will be transfered
+ at 3072 Bytes/sec.<BR>
+ - if there is two or more connections, each files will be
+ transfered at 3072 Bytes/sec. In effect, the rate doesn't
+ depend anymore on the number of connections but only on
+ the configuration values.
+<P>
+ Note that the total transfer rate will never exceed your physical
+ bandwidth limitation.
+<P>
+ Note : If both a "BandWidth" and a "LargeFileLimit" limit apply,
+ the lowest one will be used. (But never lower than the
+ "MinBandWidth" rate)
+<P>
+ If both a virtual server limit is defined and another
+ apply for a directory under this virtual server, the
+ directory limit will over-ride it.
+ <P>
+ If a limit is defined outside a Directory or VirtualHost
+ directive, it will act as default on a per virtual server
+ basis. (Ie: each virtual server will have that limit,
+ _independantly_ of the other servers)
+</UL>
+<P>
+<B class=ctextbold>Runing Apache with mod_bandwidth :</B><P>
+For correct results, it is important that there isn't any "dead" links in
+the "link" directory of mod_bandwidth when you start the server.<P>
+It may be a good idee to run the "cleanlink.pl" script we provide to
+automaticaly remove dead links<br>
+ </div>
+ </td></tr>
+ </table>
+ </td>
+ <td valign=bottom width=2 class=normal rowspan=2><img src="/v3/graph/blue1.gif" width=2 height=50></td>
+</tr><tr>
+ <td colspan=2 class=normal align=right><img src="/v3/graph/blue1.gif" width=100 height=2></td>
+</tr>
+</table>
+<!-- End page content -->
+<!--INCLUDE="/v3/template/footer-en.txt"-->
+</center>
+</TD>
+</TR>
+<TR>
+<TD COLSPAN=2>
+<div class="title" id="title1" style="top: 260px">
+<a class="mlink" href="http://www.cohprog.com/"><img name="pic1" src="/v3/menu/home-en.jpg" border="0"></a>
+</div>
+
+<div class="title" id="title2" style="top: 285px">
+<a class="mlink" href="#" onclick="javascript: toggle(2,7); return false"><img name="pic2" src="/v3/menu/hosting-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu2" style="top: 305px">
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/intro-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Introduction</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/mailprices-en.html" ><img src="/v3/graph/arrow.jpg" border=0>E-mail / DNS</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/webprices-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Hosting prices</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/coprices-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Co-location and<br><img src="/v3/graph/empty.gif" width="9" border=0>Dedicated hosting</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/domain-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Domain registration</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/whois-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Domain availability</a>
+</div>
+
+<div class="title" id="title3" style="top: 310px">
+<a class="mlink" href="#" onclick="javascript: toggle(3,3); return false"><img name="pic3" src="/v3/menu/line-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu3" style="top: 330px">
+ <a class="mlink" href="http://www.cohprog.com/v3/dsl/intro-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Intoduction</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/dsl/location-en.html" ><img src="/v3/graph/arrow.jpg" border=0>POP Locations</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/dsl/prices-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Prices</a>
+</div>
+
+<div class="title" id="title4" style="top: 335px">
+<a class="mlink" href="#" ><img name="pic4" src="/v3/menu/produces-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu4" style="top: 355px">
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Database</a><br>
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Shopping cart</a><br>
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>On-line auction</a><br>
+</div>
+
+<div class="title" id="title5" style="top: 360px">
+<a class="mlink" href="#" ><img name="pic5" src="/v3/menu/consulting-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu5" style="top: 380px">
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Network</a><br>
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Administration</a><br>
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Development</a><br>
+</div>
+
+<div class="title" id="title6" style="top: 385px">
+<a class="mlink" href="#" onclick="javascript: toggle(6,4); return false"><img name="pic6" src="/v3/menu/support-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu6" style="top: 405px">
+ <a class="mlink" href="http://www.cohprog.com/v3/support/linefaq-en.html" ><img src="/v3/graph/arrow.jpg" border=0>E-mail/Line FAQ</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/support/webfaq-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Webhosting FAQ</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/support/stat-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Web statistics</a><br>
+ <a class="mlink" href="mailto:support@cohprog.com" ><img src="/v3/graph/arrow.jpg" border=0>Email support</a><br>
+</div>
+
+<div class="title" id="title7" style="top: 410px">
+<a class="mlink" href="#" onclick="javascript: toggle(7,3); return false"><img name="pic7" src="/v3/menu/info-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu7" style="top: 430px">
+ <a class="mlink" href="http://www.cohprog.com/v3/info/about-en.html" ><img src="/v3/graph/arrow.jpg" border=0>About us</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/info/customers-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Our customers</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/info/contact-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Contact us</a><br>
+</div>
+
+<div class="title" id="title8" style="top: 435px">
+<a class="mlink" href="#" onclick="javascript: toggle(8,3); return false"><img name="pic8" src="/v3/menu/webmail-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu8" style="top: 455px">
+ <a class="mlink" href="http://webmail.cohprog.com" ><img src="/v3/graph/arrow.jpg" border=0>Login</a><br>
+ <a class="mlink" href="https://webmail.cohprog.com" ><img src="/v3/graph/arrow.jpg" border=0>Secure login</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webmail/help-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Help</a><br>
+</div>
+
+<div class="title" id="title9" style="top: 485px">
+<a class="mlink" href="#" onclick="javascript: toggle(9,4); return false"><img name="pic9" src="/v3/menu/mod-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu9" style="top: 505px">
+ <a class="mlink" href="http://www.cohprog.com/v3/bandwidth/intro-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Introduction</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/bandwidth/doc-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Documentation</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/bandwidth/download-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Download</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/bandwidth/faq-en.html" ><img src="/v3/graph/arrow.jpg" border=0>FAQ</a><br>
+</div>
+
+<!--INCLUDE="/v3/javascript/menu-en.txt"-->
+</TR>
+</TR>
+<tr>
+<td colspan=2><br></td>
+<td colspan=2>
+<table>
+<tr><td align=center class=normal>
+<a href="/v3/webhosting/intro-en.html">Web hosting</a> |
+<a href="/v3/dsl/intro-en.html">Leased lines</a> |
+Produces |
+Consulting |
+<a href="/v3/support/">Support</a> |
+<a href="/v3/info/about-en.html">About us</a> |
+<a href="/v3/info/contact-en.html">Contact us</a>
+</td></tr>
+<tr><td align=center class=normal>
+<a href="/v3/info/customers-en.html">Our customers</a> |
+<a href="/v3/webmail/help-en.html">Webmail</a> |
+<a href="/v3/bandwidth/intro-en.html">Apache mod_bandwidth</a>
+</td></tr>
+</table>
+<br>
+<br>
+</td>
+</tr>
+<TR>
+<TD><br></TD><TD colspan=2>
+<font size="2">Copyright ©2000 CohProg Sàrl. All rights reserved.</font></td></tr>
+</TABLE>
+</BODY>
+</HTML>
--- /dev/null
+#!/usr/bin/perl
+
+#
+# A little daemon that I use to clean links created by the bandwidth
+# module for Apache when they weren't removed properly by the server.
+# (Ie: when a httpd process didn't terminated in the usual way.)
+#
+# Change the value of TIME to how often (in seconds) you want to
+# do the cleaning.
+#
+
+$TIME=120;
+
+$PS="ps -auxw";
+$LINKDIR="/var/run/apache-mod_bandwidth/link";
+
+unless(fork) {
+ unless (fork) {
+ sleep 1 until getppid == 1;
+ while (1) {
+ &do_clean;
+ sleep($TIME);
+ }
+ exit 0;
+ }
+ exit 0;
+} wait;
+
+sub do_clean {
+ local(%ppid);
+
+ open(INP, "$PS |");
+ while(<INP>) {
+ if (($process) =/^\S+\s+(\d+)\s+.+httpd\s/) {
+ $ppid{$process}=1;
+ }
+ }
+ close(INP);
+
+ opendir(DIR, $LINKDIR);
+ local(@filename)=readdir(DIR);
+ closedir(DIR);
+
+ for($i=0; $i <= $#filename; $i++) {
+ if ($filename[$i] =~ /^\d+$/) {
+ if (! $ppid{$filename[$i]}) {
+ unlink("$LINKDIR/$filename[$i]");
+ }
+ }
+ }
+}
--- /dev/null
+<HTML>
+<HEAD>
+<TITLE>CohProg SaRL - Network Consulting</TITLE>
+<!--INCLUDE="/v3/template/style.txt"-->
+<style type="text/css">
+<!--
+
+TD.main {
+ background-image:url("/v3/graph/bgmain.jpg");
+}
+
+TD.top {
+ background-image:url("/v3/graph/bgtop.gif");
+}
+
+TD.normal {
+ background-image:url("/v3/graph/empty.gif");
+}
+
+DIV.ctitle {
+ font-family: arial, verdana, helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+DIV.ctext {
+ font-family: verdana, helvetica, sans-serif;
+ font-weight: normal;
+ font-size: 12px;
+}
+
+B.ctextbold {
+ font-family: verdana, helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 12px;
+}
+
+-->
+</style>
+<!--INCLUDE="/v3/javascript/script-en.txt"-->
+<style type="text/css">
+a.mlink {
+text-decoration: none;
+color: black;}
+
+.title
+{position: absolute;
+width: 100px;
+height: 25px;
+left: 0px;
+z-index: 10;
+font-family: verdana, helvetica, sans-serif;
+font-weight: bold;
+font-size: 12px;}
+
+.submenu
+{position: absolute;
+left: 90px;
+width: 120px;
+border: 1px solid black;
+margin: 0pt;
+padding: 0pt;
+color: black;
+background-color: lightgrey;
+layer-background-color: lightgrey;
+font-family: verdana, helvetica, sans-serif;
+font-size: 10px;
+visibility: hidden;}
+
+</style>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Original: Fredrik Fridsten (fredrik.fridsten@home.se) -->
+<!-- Web Site: http://hem.passagen.se/dred -->
+
+<!-- This script and many more are available free online at -->
+<!-- The JavaScript Source!! http://javascript.internet.com -->
+
+<!-- Begin
+
+// ADDITIONAL NOTES
+// The input variables to the toggle function are the number of the submenu to open/close,
+// starting with 0, and the number of pixels to move the objects below.
+// For example toggle(1,60) opens/closes the second submenu and moves the objects below 60 pixels.
+
+var nom = 9; // Number of menus
+var submenuheigh = 13;
+var submenuspacing = 10;
+var usePictures = 1; // use pictures? 1 = yes, 0 = no
+
+var ttls = new Array(); // An array for the title objects
+var subs = new Array(); // An array for the submenu objects
+var lastn;
+var lastmove;
+
+var mimageo = new Array();
+var mimagec = new Array();
+
+mimageo[1] = '/v3/menu/home-en.jpg';
+mimageo[2] = '/v3/menu/hosting-en.jpg';
+mimageo[3] = '/v3/menu/line-en.jpg';
+mimageo[4] = '/v3/menu/produces-en.jpg';
+mimageo[5] = '/v3/menu/consulting-en.jpg';
+mimageo[6] = '/v3/menu/support-en.jpg';
+mimageo[7] = '/v3/menu/info-en.jpg';
+mimageo[8] = '/v3/menu/webmail-en.jpg';
+mimageo[9] = '/v3/menu/mod-en.jpg';
+
+mimagec[1] = '/v3/menu/home-en.jpg';
+mimagec[2] = '/v3/menu/hosting-en.jpg';
+mimagec[3] = '/v3/menu/line-en.jpg';
+mimagec[4] = '/v3/menu/produces-en.jpg';
+mimagec[5] = '/v3/menu/consulting-en.jpg';
+mimagec[6] = '/v3/menu/support-en.jpg';
+mimagec[7] = '/v3/menu/info-en.jpg';
+mimagec[8] = '/v3/menu/webmail-en.jpg';
+mimagec[9] = '/v3/menu/mod-en.jpg';
+
+if (document.layers) {
+visible = 'show';
+hidden = 'hide';
+}
+else
+if (document.all) {
+visible = 'visible';
+hidden = 'hidden';
+}
+for (var i = 1; i <= nom; i++) {
+ttls[i] = ('title' + i);
+subs[i] = ('submenu' +i);
+}
+function picopen(n) {
+title = ('title' + n);
+pic = ('pic' + n);
+if (document.layers) {
+document.layers[title].document.images[pic].src = mimageo[n];
+}
+else if (document.all) {
+document.all(pic).src = mimageo[n];
+ }
+}
+function picclose(n) {
+title = ('title' + n);
+pic = ('pic' + n);
+if (document.layers) {
+document.layers[title].document.images[pic].src = mimagec[n];
+}
+else if (document.all) {
+document.all(pic).src = mimagec[n];
+ }
+}
+lastn = (nom + 1);
+lastmove = 0;
+function lasttoggle(n,move) {
+if (n <= nom) {
+menu = ('submenu' + n);
+if (document.layers) {
+submenu = document.layers[menu];
+}
+else if (document.all) {
+submenu = document.all(menu).style;
+}
+if (submenu.visibility == visible) {
+submenu.visibility = hidden;
+picclose(n); // Remove this if you don't use pictures
+for (var i = (n+1); i <= nom; i++) {
+if (document.layers) {
+document.layers[ttls[i]].top -= move;
+document.layers[subs[i]].top -= move;
+}
+else if (document.all) {
+document.all(ttls[i]).style.pixelTop -= move;
+document.all(subs[i]).style.pixelTop -= move;
+ }
+ }
+ }
+ }
+}
+function toggle(n,tmove) {
+move = (tmove*submenuheigh)+submenuspacing;
+menu = ('submenu' + n);
+if (document.layers) {
+submenu = document.layers[menu];
+}
+else if (document.all) {
+submenu = document.all(menu).style;
+}
+if (submenu.visibility == visible) {
+submenu.visibility = hidden;
+if (usePictures) picclose(n);
+for (var i = (n+1); i <= nom; i++) {
+if (document.layers) {
+document.layers[ttls[i]].top -= move;
+document.layers[subs[i]].top -= move;
+}
+else if (document.all) {
+document.all(ttls[i]).style.pixelTop -= move;
+document.all(subs[i]).style.pixelTop -= move;
+ }
+ }
+}
+else {
+submenu.visibility = visible;
+if (usePictures) picopen(n);
+if (lastn != n) {
+lasttoggle(lastn,lastmove);
+}
+for (var i = (n+1); i <= nom; i++) {
+if (document.layers) {
+document.layers[ttls[i]].top += move;
+document.layers[subs[i]].top += move;
+}
+if (document.all) {
+document.all(ttls[i]).style.pixelTop += move;
+document.all(subs[i]).style.pixelTop += move;
+ }
+ }
+}
+lastn = n;
+lastmove = move;
+}
+// End -->
+</script>
+
+
+<SCRIPT LANGUAGE="JavaScript">
+function open() {return true;}
+</SCRIPT>
+</HEAD>
+<!--INCLUDE="/v3/template/header.txt"-->
+<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="0000FF" VLINK="blueviolet" BACKGROUND="/v3/graph/bg.gif" TOPMARGIN="0" LEFTMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
+<!--INCLUDE="/v3/template/top-en.txt"-->
+<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH="100%" HEIGHT="100%">
+<TR>
+ <TD VALIGN=TOP bgcolor=black width=83 height=90><img src="/v3/graph/topleft.jpg" width=83 height=90></TD>
+ <TD VALIGN=TOP bgcolor=black width=134 height=90><img src="/v3/graph/topcohprog1.jpg" width=134 height=90></TD>
+ <TD VALIGN=TOP bgcolor=black width=277 height=90 class=top><img src="/v3/graph/topcohprog2.jpg" width=277 height=90></TD>
+ <TD VALIGN=TOP width="100%" class=top><IMG SRC="/v3/graph/empty.gif" width=1 height=90></TD>
+</TR>
+<TR>
+ <TD valign=top width=83 height="100%"><img src="/v3/graph/left1.jpg" width=83 height=171></TD>
+ <TD bgcolor=white valign=top width=134 height="100%"><img src="/v3/graph/left2.jpg" width=134 height=171></TD>
+ <TD HEIGHT="100%" width="100%" colspan=2 valign=top class=main>
+<!-- Being page content -->
+<br>
+<br>
+<br>
+<br>
+<table border=0 cellspacing=0 cellpadding=0 width="480">
+<tr>
+ <td class=normal colspan=3><img src="/v3/graph/blue1.gif" width=100 height=2></td>
+</tr><tr>
+ <td valign=top class=normal rowspan=2><img src="/v3/graph/blue1.gif" width=2 height=50></td>
+ <td valign=top width="100%" bgcolor="lightgrey" class=normal>
+ <table border=0 width="100%" cellpadding=20 cellspacing=0>
+ <tr><td width="476">
+ <div class=ctitle>Mod_bandwidth documentation</div><P>
+ <div class=ctext>
+
+<b class=ctextbold>Installation :</b><P>
+WARNING: It is very important to give the lowest priority to mod_bandwidth
+so other modules will have the time to do their job before the documents
+are transmited ! For that reason, it is important to follow those steps :<P>
+<OL>
+<LI> <b class=ctextbold>APACI installation</b><br>
+<UL>
+ <LI>Copy the file mod_bandwidth.c to your Apache source directory.<br>
+ <LI>Run the ./configure script with the following directives : --add-module=mod_bandwidth.c \<br>--permute-module=BEGIN:bandwidth<br>
+ <LI>Compile and install Apache.<P>
+</UL>
+ <b class=ctextbold>Manual installation</b><br>
+<UL>
+ <LI>Copy the file mod_bandwidth.c to the "src/modules/extra" directory of your Apache sources.<br>
+ <LI>Copy the "src/Configuration.tmpl" file to "src/Configuration"<br>
+ <LI>Edit the "src/Configuration" file and add near the begining :<br>
+ AddModule modules/extra/mod_bandwidth.o<br>
+ (This is the reverse of old Apache versions)<br>
+ <LI>Run the "./Configure" script<br>
+ <LI>Compile and install Apache
+</UL>
+<P>
+<LI>Create the needed directories and make sure that they are "read/write/execute" for the user under which Apache run. By default, mod_bandwidth use the following directories but they can be changed using the BandWidthDataDir configuration directive:<P>
+ /tmp/apachebw<BR>
+ /tmp/apachebw/link<br>
+ /tmp/apachebw/master<P>
+
+ Note that if any of those directories doesn't exist, or if they can't
+ be accessed by the server, the module is totaly disabled except for
+ logging an error message in the logfile.
+<P>
+ Be careful that on some systems the content of the /tmp directory
+ is deleted at boot time or every so often by a cronjob. If that the
+ case, either disable this feature or change the location of the
+ directories used by the module using the BandWidthDataDir configuration directive.
+</OL>
+<P>
+ <b class=ctextbold>Global configuration directives :</b><P>
+
+ <UL>
+ <LI><b class=ctextbold>BandWidthDataDir</b><br>
+ Syntax : BandWidthDataDir <directory><br>
+ Default : "/tmp/apachebw"<br>
+ Context : server config
+<P>
+ Sets the name of the root directory used by mod_bandwidth to store
+ its internal temporary information. Don't forget to create the needed
+ directories : <directory>/master and <directory>/link<P>
+<LI><b class=ctextbold>BandWidthModule</b><br>
+ Syntax : BandWidthModule <On|Off><br>
+ Default : Off<br>
+ Context : per server config<P>
+
+ Enable or disable totaly the whole module. By default, the module is
+ disable so it is safe to compile it in the server anyway.
+<P>
+ PLEASE, NOTE THAT IF YOU SET A BANDWIDTH LIMIT INSIDE A VIRTUALHOST
+ BLOCK, YOU ALSO __NEED__ TO PUT THE "BandWidthModule On" DIRECTIVE
+ INSIDE THAT VIRTUALHOST BLOCK !
+<P>
+ IF YOU SET BANDWIDTH LIMITS INSIDE DIRECTORY BLOCKS (OUTSIDE OF
+ ANY VIRTUALHOST BLOCK), YOU ONLY NEED TO PUT THE "BandWidthModule On"
+ DIRECTIVE ONCE, OUTSIDE OF ANY VIRTUALHOST OR DIRECTORY BLOCK.
+<P>
+<LI><b class=ctextbold>BandWidthPulse</b><br>
+ Syntax : BandWidthPulse <microseconds><br>
+ Default :<BR>
+ Context : per server config<P>
+
+ Change the algorithm used to calculate bandwidth and transmit data.
+ In normal mode (old mode), the module try to transmit data in packets
+ of 1KB. That mean that if the bandwidth available is of 512B, the
+ module will transmit 1KB, wait 2 seconds, transmit another 1KB and
+ so one.
+<P>
+ Seting a value with "BandWidthPulse", will change the algorithm so
+ that the server will always wait the same amount of time between
+ sending packets but the size of the packets will change.
+ The value is in microseconds.
+ For example, if you set "BandWidthPulse 1000000" (1 sec) and the
+ bandwidth available is of 512B, the sever will transmit 512B,
+ wait 1 second, transmit 512B and so on.
+<P>
+ The advantage is a smother flow of data. The disadvantage is
+ a bigger overhead of data transmited for packet header.
+ Setting too small a value (bellow 1/5 of a sec) is not realy
+ useful and will put more load on the system and generate more
+ traffic for packet header.
+<P>
+ Note also that the operating system may do some buffering on
+ it's own and so defeat the purpose of setting small values.
+<P>
+ This may be very useful on especialy crowded network connection :
+ In normal mode, several seconds may happen between the sending of
+ a full packet. This may lead to timeout or people may believe that
+ the connection is hanging. Seting a value of 1000000 (1 sec) would
+ guarantee that some data are sent every seconds...
+<P>
+</UL>
+<b class=ctextbold>Directory / VirtualServer configuration directives</b><P>
+<UL>
+<LI><b class=ctextbold>BandWidth</b><br>
+ Syntax : BandWidth <domain|ip|all> <rate><br>
+ Default : none<BR>
+ Context : per directory, .htaccess<P>
+
+ Limit the bandwidth for files in this directory and
+ sub-directories based on the remote host <domain> or
+ <ip> address or for <all> remote hosts.
+ <P>
+ Ip addresses may now be specified in the network/mask format.
+ (Ie: 192.168.0.0/21 )
+ <P>
+ The <rate> is in Bytes/second.
+ A <rate> of "0" means no bandwidth limit.
+ <P>
+ Several BandWidth limits can be set for the same
+ directory to set different limits for different
+ hosts. In this case, the order of the "BandWidth"
+ keywords is important as the module will take the
+ first entry which matches the client address.
+<P>
+ Example :<br>
+ <Directory /home/www><BR>
+ BandWidth ecp.fr 0<BR>
+ BandWidth 138.195 0<BR>
+ BandWidth all 1024<BR>
+ </Directory><P>
+<P>
+ This will limit the bandwith for directory /home/www and
+ all it's subdirectories to 1024Bytes/sec, except for
+ .ecp.fr or 138.195..where no limit is set.
+<P>
+<LI><b class=ctextbold>LargeFileLimit</b><br>
+ Syntax : LargeFileLimit <filesize> <rate><br>
+ Default : none<br>
+ Context : per directory, .htaccess<P>
+
+ Set a maximal <rate> (in bytes/sec) to use when transfering
+ a file of <filesize> KBytes or more.
+<P>
+ Several "LargeFileLimit" can be set for various files sizes
+ to create range. The rate used for a given file size will be
+ the one of the matching range.
+ <P>
+ A <rate> of "0" mean that there isn't any limit based on
+ the size.
+<P>
+ A <rate> of "-1" mean that there isn't any limit for that type
+ of file. It's override even a BandWidth limit. I found this usefull
+ to give priority to very small files (html pages, very small pictures)
+ while seting limits for larger files... (users with their video files
+ can go to hell ! :)
+<P>
+ Example :<BR>
+ If the following limits are set :<BR>
+ LargeFileLimit 200 3072<BR>
+ LargeFileLimit 1024 2048<P>
+
+ That's mean that a file of less than 200KBytes won't be
+ limited based on his size. A file with a size between
+ 200KBytes (included) and 1023Kbytes (included) will be
+ limited to 3072Bytes/sec and a file of 1024Kbytes or more
+ will be limited to 2048Bytes/sec.
+<P>
+<LI><b class=ctextbold>MinBandWidth</b><br>
+ Syntax : MinBandWidth <domain|ip|all> <rate><BR>
+ Default : all 256<BR>
+ Context : per directory, .htaccess<P>
+
+ Set a minimal bandwidth to use for transfering data. This
+ over-ride both BandWidth and LargeFileLimit rules as well
+ as the calculated rate based on the number of connections.
+<P>
+ The first argument is used in the same way as the first
+ argument of BandWidth.
+<P>
+ <rate> is in bytes per second.
+<P>
+ A rate of "0" explicitly means to use the default minimal
+ value (256 Bytes/sec).
+<P>
+ A rate of "-1" means that the minimal rate is equal to the
+ actual rate defined by BandWidth and LargeFileLimit.
+ In fact, that means that the final rate won't depend
+ of the number of connections but only on what was defined.
+<P>
+ Example :<br>
+ If BandWidth is set to "3072" (3KBytes/sec) and MinBandWidth
+ is set to "1024" (1KBytes/sec) that means :<BR>
+ - if there is one connection, the file will be transfered
+ at 3072 Bytes/sec.<BR>
+ - if there is two connections, each files will be transfered
+ at 1536 Bytes/sec.<BR>
+ - if there is three or more connections, each files will be
+ transfered at 1024 Bytes/sec. (Minimal of 1024 Bytes/sec).
+<P>
+ If MinBandWidth is set to "-1" that means :<BR>
+ - if there is one connection, the file will be transfered
+ at 3072 Bytes/sec.<BR>
+ - if there is two or more connections, each files will be
+ transfered at 3072 Bytes/sec. In effect, the rate doesn't
+ depend anymore on the number of connections but only on
+ the configuration values.
+<P>
+ Note that the total transfer rate will never exceed your physical
+ bandwidth limitation.
+<P>
+ Note : If both a "BandWidth" and a "LargeFileLimit" limit apply,
+ the lowest one will be used. (But never lower than the
+ "MinBandWidth" rate)
+<P>
+ If both a virtual server limit is defined and another
+ apply for a directory under this virtual server, the
+ directory limit will over-ride it.
+ <P>
+ If a limit is defined outside a Directory or VirtualHost
+ directive, it will act as default on a per virtual server
+ basis. (Ie: each virtual server will have that limit,
+ _independantly_ of the other servers)
+</UL>
+<P>
+<B class=ctextbold>Runing Apache with mod_bandwidth :</B><P>
+For correct results, it is important that there isn't any "dead" links in
+the "link" directory of mod_bandwidth when you start the server.<P>
+It may be a good idee to run the "cleanlink.pl" script we provide to
+automaticaly remove dead links<br>
+ </div>
+ </td></tr>
+ </table>
+ </td>
+ <td valign=bottom width=2 class=normal rowspan=2><img src="/v3/graph/blue1.gif" width=2 height=50></td>
+</tr><tr>
+ <td colspan=2 class=normal align=right><img src="/v3/graph/blue1.gif" width=100 height=2></td>
+</tr>
+</table>
+<!-- End page content -->
+<!--INCLUDE="/v3/template/footer-en.txt"-->
+</center>
+</TD>
+</TR>
+<TR>
+<TD COLSPAN=2>
+<div class="title" id="title1" style="top: 260px">
+<a class="mlink" href="http://www.cohprog.com/"><img name="pic1" src="/v3/menu/home-en.jpg" border="0"></a>
+</div>
+
+<div class="title" id="title2" style="top: 285px">
+<a class="mlink" href="#" onclick="javascript: toggle(2,7); return false"><img name="pic2" src="/v3/menu/hosting-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu2" style="top: 305px">
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/intro-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Introduction</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/mailprices-en.html" ><img src="/v3/graph/arrow.jpg" border=0>E-mail / DNS</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/webprices-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Hosting prices</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/coprices-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Co-location and<br><img src="/v3/graph/empty.gif" width="9" border=0>Dedicated hosting</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/domain-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Domain registration</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webhosting/whois-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Domain availability</a>
+</div>
+
+<div class="title" id="title3" style="top: 310px">
+<a class="mlink" href="#" onclick="javascript: toggle(3,3); return false"><img name="pic3" src="/v3/menu/line-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu3" style="top: 330px">
+ <a class="mlink" href="http://www.cohprog.com/v3/dsl/intro-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Intoduction</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/dsl/location-en.html" ><img src="/v3/graph/arrow.jpg" border=0>POP Locations</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/dsl/prices-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Prices</a>
+</div>
+
+<div class="title" id="title4" style="top: 335px">
+<a class="mlink" href="#" ><img name="pic4" src="/v3/menu/produces-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu4" style="top: 355px">
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Database</a><br>
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Shopping cart</a><br>
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>On-line auction</a><br>
+</div>
+
+<div class="title" id="title5" style="top: 360px">
+<a class="mlink" href="#" ><img name="pic5" src="/v3/menu/consulting-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu5" style="top: 380px">
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Network</a><br>
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Administration</a><br>
+ <a class="mlink" href="" ><img src="/v3/graph/arrow.jpg" border=0>Development</a><br>
+</div>
+
+<div class="title" id="title6" style="top: 385px">
+<a class="mlink" href="#" onclick="javascript: toggle(6,4); return false"><img name="pic6" src="/v3/menu/support-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu6" style="top: 405px">
+ <a class="mlink" href="http://www.cohprog.com/v3/support/linefaq-en.html" ><img src="/v3/graph/arrow.jpg" border=0>E-mail/Line FAQ</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/support/webfaq-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Webhosting FAQ</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/support/stat-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Web statistics</a><br>
+ <a class="mlink" href="mailto:support@cohprog.com" ><img src="/v3/graph/arrow.jpg" border=0>Email support</a><br>
+</div>
+
+<div class="title" id="title7" style="top: 410px">
+<a class="mlink" href="#" onclick="javascript: toggle(7,3); return false"><img name="pic7" src="/v3/menu/info-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu7" style="top: 430px">
+ <a class="mlink" href="http://www.cohprog.com/v3/info/about-en.html" ><img src="/v3/graph/arrow.jpg" border=0>About us</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/info/customers-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Our customers</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/info/contact-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Contact us</a><br>
+</div>
+
+<div class="title" id="title8" style="top: 435px">
+<a class="mlink" href="#" onclick="javascript: toggle(8,3); return false"><img name="pic8" src="/v3/menu/webmail-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu8" style="top: 455px">
+ <a class="mlink" href="http://webmail.cohprog.com" ><img src="/v3/graph/arrow.jpg" border=0>Login</a><br>
+ <a class="mlink" href="https://webmail.cohprog.com" ><img src="/v3/graph/arrow.jpg" border=0>Secure login</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/webmail/help-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Help</a><br>
+</div>
+
+<div class="title" id="title9" style="top: 485px">
+<a class="mlink" href="#" onclick="javascript: toggle(9,4); return false"><img name="pic9" src="/v3/menu/mod-en.jpg" border="0"></a>
+</div>
+
+<div class="submenu" id="submenu9" style="top: 505px">
+ <a class="mlink" href="http://www.cohprog.com/v3/bandwidth/intro-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Introduction</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/bandwidth/doc-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Documentation</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/bandwidth/download-en.html" ><img src="/v3/graph/arrow.jpg" border=0>Download</a><br>
+ <a class="mlink" href="http://www.cohprog.com/v3/bandwidth/faq-en.html" ><img src="/v3/graph/arrow.jpg" border=0>FAQ</a><br>
+</div>
+
+<!--INCLUDE="/v3/javascript/menu-en.txt"-->
+</TR>
+</TR>
+<tr>
+<td colspan=2><br></td>
+<td colspan=2>
+<table>
+<tr><td align=center class=normal>
+<a href="/v3/webhosting/intro-en.html">Web hosting</a> |
+<a href="/v3/dsl/intro-en.html">Leased lines</a> |
+Produces |
+Consulting |
+<a href="/v3/support/">Support</a> |
+<a href="/v3/info/about-en.html">About us</a> |
+<a href="/v3/info/contact-en.html">Contact us</a>
+</td></tr>
+<tr><td align=center class=normal>
+<a href="/v3/info/customers-en.html">Our customers</a> |
+<a href="/v3/webmail/help-en.html">Webmail</a> |
+<a href="/v3/bandwidth/intro-en.html">Apache mod_bandwidth</a>
+</td></tr>
+</table>
+<br>
+<br>
+</td>
+</tr>
+<TR>
+<TD><br></TD><TD colspan=2>
+<font size="2">Copyright ©2000 CohProg Sàrl. All rights reserved.</font></td></tr>
+</TABLE>
+</BODY>
+</HTML>
--- /dev/null
+BandWidthDataDir "/var/run/apache-mod_bandwidth"
+
+# BandWidthModule <On|Off>
+# BandWidthPulse <microseconds>
+# BandWidth <domain|ip|all> <rate>
+# LargeFileLimit <filesize> <rate>
+# MinBandWidth <domain|ip|all> <rate>
+
+