]> git.pld-linux.org Git - packages/apache1-mod_bandwidth.git/commitdiff
- new
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 26 Mar 2002 23:26:58 +0000 (23:26 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    apache-mod_bandwidth-cleanlink.pl -> 1.1
    apache-mod_bandwidth-doc.html -> 1.1
    apache1-mod_bandwidth-cleanlink.pl -> 1.1
    apache1-mod_bandwidth-doc.html -> 1.1
    apache1-mod_bandwidth.conf -> 1.1

apache-mod_bandwidth-cleanlink.pl [new file with mode: 0644]
apache-mod_bandwidth-doc.html [new file with mode: 0644]
apache1-mod_bandwidth-cleanlink.pl [new file with mode: 0644]
apache1-mod_bandwidth-doc.html [new file with mode: 0644]
apache1-mod_bandwidth.conf [new file with mode: 0644]

diff --git a/apache-mod_bandwidth-cleanlink.pl b/apache-mod_bandwidth-cleanlink.pl
new file mode 100644 (file)
index 0000000..5d277f4
--- /dev/null
@@ -0,0 +1,51 @@
+#!/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]");
+         }
+      }
+   }
+}
diff --git a/apache-mod_bandwidth-doc.html b/apache-mod_bandwidth-doc.html
new file mode 100644 (file)
index 0000000..04218f3
--- /dev/null
@@ -0,0 +1,623 @@
+<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 &lt;directory&gt;<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 : &lt;directory&gt;/master and &lt;directory&gt;/link<P>
+<LI><b class=ctextbold>BandWidthModule</b><br>
+    Syntax  : BandWidthModule &lt;On|Off&gt;<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 &lt;microseconds&gt;<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 &lt;domain|ip|all&gt; &lt;rate&gt;<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 &lt;domain&gt; or
+    &lt;ip&gt; address or for &lt;all&gt; remote hosts.
+    <P> 
+    Ip addresses may now be specified in the network/mask format.
+    (Ie: 192.168.0.0/21 )
+    <P> 
+    The &lt;rate&gt; is in Bytes/second.
+    A &lt;rate&gt; 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>
+       &lt;Directory /home/www&gt;<BR>
+       BandWidth ecp.fr 0<BR>
+       BandWidth 138.195 0<BR>
+       BandWidth all 1024<BR>
+       &lt;/Directory&gt;<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 &lt;filesize&gt; &lt;rate&gt;<br>
+    Default : none<br>
+    Context : per directory, .htaccess<P>
+    Set a maximal &lt;rate&gt; (in bytes/sec) to use when transfering
+    a file of &lt;filesize&gt; 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 &lt;rate&gt; of "0" mean that there isn't any limit based on
+    the size.
+<P> 
+    A &lt;rate&gt; 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 &lt;domain|ip|all&gt; &lt;rate&gt;<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> 
+    &lt;rate&gt; 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 &copy;2000 CohProg S&agrave;rl. All rights reserved.</font></td></tr>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/apache1-mod_bandwidth-cleanlink.pl b/apache1-mod_bandwidth-cleanlink.pl
new file mode 100644 (file)
index 0000000..5d277f4
--- /dev/null
@@ -0,0 +1,51 @@
+#!/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]");
+         }
+      }
+   }
+}
diff --git a/apache1-mod_bandwidth-doc.html b/apache1-mod_bandwidth-doc.html
new file mode 100644 (file)
index 0000000..04218f3
--- /dev/null
@@ -0,0 +1,623 @@
+<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 &lt;directory&gt;<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 : &lt;directory&gt;/master and &lt;directory&gt;/link<P>
+<LI><b class=ctextbold>BandWidthModule</b><br>
+    Syntax  : BandWidthModule &lt;On|Off&gt;<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 &lt;microseconds&gt;<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 &lt;domain|ip|all&gt; &lt;rate&gt;<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 &lt;domain&gt; or
+    &lt;ip&gt; address or for &lt;all&gt; remote hosts.
+    <P> 
+    Ip addresses may now be specified in the network/mask format.
+    (Ie: 192.168.0.0/21 )
+    <P> 
+    The &lt;rate&gt; is in Bytes/second.
+    A &lt;rate&gt; 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>
+       &lt;Directory /home/www&gt;<BR>
+       BandWidth ecp.fr 0<BR>
+       BandWidth 138.195 0<BR>
+       BandWidth all 1024<BR>
+       &lt;/Directory&gt;<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 &lt;filesize&gt; &lt;rate&gt;<br>
+    Default : none<br>
+    Context : per directory, .htaccess<P>
+    Set a maximal &lt;rate&gt; (in bytes/sec) to use when transfering
+    a file of &lt;filesize&gt; 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 &lt;rate&gt; of "0" mean that there isn't any limit based on
+    the size.
+<P> 
+    A &lt;rate&gt; 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 &lt;domain|ip|all&gt; &lt;rate&gt;<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> 
+    &lt;rate&gt; 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 &copy;2000 CohProg S&agrave;rl. All rights reserved.</font></td></tr>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/apache1-mod_bandwidth.conf b/apache1-mod_bandwidth.conf
new file mode 100644 (file)
index 0000000..d5ec35f
--- /dev/null
@@ -0,0 +1,9 @@
+BandWidthDataDir "/var/run/apache-mod_bandwidth"
+
+# BandWidthModule <On|Off>
+# BandWidthPulse <microseconds>
+# BandWidth <domain|ip|all> <rate>
+# LargeFileLimit <filesize> <rate>
+# MinBandWidth <domain|ip|all> <rate>
+
+    
This page took 0.1078 seconds and 4 git commands to generate.