]> git.openstreetmap.org Git - nominatim.git/blob - lib/init-website.php
rate limiting using memcache
[nominatim.git] / lib / init-website.php
1 <?php
2 //echo "<a href=\"http://localhost/nominatim/search.php?format=xml&addressdetails=1&accept-language=en&street=&suburb=&city=Dammam&county=&state=&country=SA&postcode=&\">x</a>";
3 //exit;
4 //phpinfo();
5 //exit;
6         require_once('init.php');
7
8         if (CONST_ClosedForIndexing && strpos(CONST_ClosedForIndexingExceptionIPs, ','.$_SERVER["REMOTE_ADDR"].',') === false)
9         {
10                 echo "Closed for re-indexing...";
11                 exit;
12         }
13
14         $aBucketKeys = array();
15         if (isset($_SERVER["HTTP_REFERER"])) $aBucketKeys[] = str_replace('www.','',strtolower(parse_url($_SERVER["HTTP_REFERER"], PHP_URL_HOST)));
16         if (isset($_SERVER["REMOTE_ADDR"])) $aBucketKeys[] = $_SERVER["REMOTE_ADDR"];
17         if (isset($_GET["email"])) $aBucketKeys[] = $_GET["email"];
18
19         $fBucketVal = doBucket($aBucketKeys, 
20                         (defined('CONST_ConnectionBucket_PageType')?constant('CONST_ConnectionBucket_Cost_'.CONST_ConnectionBucket_PageType):1) + user_busy_cost(),
21                         CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_BlockLimit);
22
23         if (strpos(CONST_BlockedIPs, ','.$_SERVER["REMOTE_ADDR"].',') !== false || $fBucketVal >= CONST_ConnectionBucket_BlockLimit)
24         {
25                 echo "Your IP has been blocked. \n";
26                 echo "Please create a nominatim trac ticket (http://trac.openstreetmap.org/newticket?component=nominatim) to request this to be removed. \n";
27                 echo "Information on the Nominatim usage policy can be found here: http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy \n";
28                 exit;
29         }
30
31         if ($fBucketVal > CONST_ConnectionBucket_WaitLimit)
32         {
33                 sleep(($fBucketVal - CONST_ConnectionBucket_WaitLimit)/CONST_ConnectionBucket_LeakRate);
34         }
35 var_dump($fBucketVal);
36 exit;
37         header('Content-type: text/html; charset=utf-8');