]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Mon, 17 Dec 2012 22:07:03 +0000 (23:07 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Mon, 17 Dec 2012 22:07:03 +0000 (23:07 +0100)
Conflicts:
lib/init-website.php
settings/settings.php

1  2 
lib/init-website.php
settings/settings.php
sql/partitions.src.sql
website/reverse.php

diff --combined lib/init-website.php
index ce046eaa6b752ef8d9bb41e4ef1e8025b5fc000a,bcf3ebf7a0aeb6674e874ebbf3ed7413572373dc..eb275af290e8b15b8aa791eddbd3bc72eb859613
@@@ -1,4 -1,64 +1,16 @@@
  <?php
-     require_once('init.php');
+       require_once('init.php');
+       if (CONST_NoAccessControl)
+       {
+               header("Access-Control-Allow-Origin: *");
+               header("Access-Control-Allow-Methods: OPTIONS,GET");
+               if (!empty($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
+               {
+                       header("Access-Control-Allow-Headers: ".$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
+               }
+       }
+       if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') exit;
 -      if (CONST_ClosedForIndexing && strpos(CONST_ClosedForIndexingExceptionIPs, ','.$_SERVER["REMOTE_ADDR"].',') === false)
 -      {
 -              echo "Closed for re-indexing...";
 -              exit;
 -      }
 -
 -      $aBucketKeys = array();
 -
 -      if (isset($_SERVER["HTTP_REFERER"])) $aBucketKeys[] = str_replace('www.','',strtolower(parse_url($_SERVER["HTTP_REFERER"], PHP_URL_HOST)));
 -      if (isset($_SERVER["REMOTE_ADDR"])) $aBucketKeys[] = $_SERVER["REMOTE_ADDR"];
 -      if (isset($_GET["email"])) $aBucketKeys[] = $_GET["email"];
 -
 -      $fBucketVal = doBucket($aBucketKeys, 
 -                      (defined('CONST_ConnectionBucket_PageType')?constant('CONST_ConnectionBucket_Cost_'.CONST_ConnectionBucket_PageType):1) + user_busy_cost(),
 -                      CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_BlockLimit);
 -
 -      if ($fBucketVal > CONST_ConnectionBucket_WaitLimit && $fBucketVal < CONST_ConnectionBucket_BlockLimit)
 -      {
 -              $m = getBucketMemcache();
 -              $iCurrentSleeping = $m->increment('sleepCounter');
 -              if (false === $iCurrentSleeping)
 -              {
 -                      $m->add('sleepCounter', 0);
 -                      $iCurrentSleeping = $m->increment('sleepCounter');
 -              }
 -              if ($iCurrentSleeping >= CONST_ConnectionBucket_MaxSleeping || isBucketSleeping($aBucketKeys))
 -              {
 -                      // Too many threads sleeping already.  This becomes a hard block.
 -                      $fBucketVal = doBucket($aBucketKeys, CONST_ConnectionBucket_BlockLimit, CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_BlockLimit);
 -              }
 -              else
 -              {
 -                      setBucketSleeping($aBucketKeys, true);
 -                      sleep(($fBucketVal - CONST_ConnectionBucket_WaitLimit)/CONST_ConnectionBucket_LeakRate);
 -                      $fBucketVal = doBucket($aBucketKeys, CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_LeakRate, CONST_ConnectionBucket_BlockLimit);
 -                      setBucketSleeping($aBucketKeys, false);
 -              }
 -              $m->decrement('sleepCounter');
 -      }
 -
 -      if (strpos(CONST_BlockedIPs, ','.$_SERVER["REMOTE_ADDR"].',') !== false || $fBucketVal >= CONST_ConnectionBucket_BlockLimit)
 -      {
 -              echo "Your IP has been blocked. \n";
 -              echo "Please create a nominatim trac ticket (http://trac.openstreetmap.org/newticket?component=nominatim) to request this to be removed. \n";
 -              echo "Information on the Nominatim usage policy can be found here: http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy \n";
 -              exit;
 -      }
 -
 -      header('Content-type: text/html; charset=utf-8');
  
 +    header('Content-type: text/html; charset=utf-8');
diff --combined settings/settings.php
index 5cc368eca4d1b8f3768ad1fc42c45dac31dd17af,cd97b4a76fd7c9feda9ba19278df5c7880b394d6..5231692fa04a2b9a27d14ca010aad7bc59053814
        }
  
        // Website settings
 -      @define('CONST_ClosedForIndexing', false);
 -      @define('CONST_ClosedForIndexingExceptionIPs', '');
+       @define('CONST_NoAccessControl', true);
        @define('CONST_BlockedIPs', '');
 +      @define('CONST_IPBanFile', CONST_BasePath.'/settings/ip_blocks');
 +      @define('CONST_WhitelistedIPs', '');
 +      @define('CONST_BlockedUserAgents', '');
 +      @define('CONST_BlockReverseMaxLoad', 15);
        @define('CONST_BulkUserIPs', '');
  
 -      @define('CONST_Website_BaseURL', 'http://'.php_uname('n').'/');
 +      @define('CONST_Website_BaseURL', 'http://nominatim.openstreetmap.org/');
        @define('CONST_Tile_Default', 'Mapnik');
  
        @define('CONST_Default_Language', 'xx');
diff --combined sql/partitions.src.sql
index 3fb7962c4e5d3a62bb0d6ca8e6b641ed10aeb2a0,8d5e8eff039d65462d9e4ec0aa79ee5478a20ab9..ab5b116302b6918364eb7ce05c66f6a61671f8b8
@@@ -25,21 -25,21 +25,21 @@@ create type nearfeaturecentr as 
  );
  
  CREATE TABLE location_area_country () INHERITS (location_area_large);
 -CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry);
 +CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry) TABLESPACE ssd;
  
  CREATE TABLE search_name_country () INHERITS (search_name_blank);
 -CREATE INDEX idx_search_name_country_place_id ON search_name_country USING BTREE (place_id);
 -CREATE INDEX idx_search_name_country_name_vector ON search_name_country USING GIN (name_vector) WITH (fastupdate = off);
 +CREATE INDEX idx_search_name_country_place_id ON search_name_country USING BTREE (place_id) TABLESPACE ssd;
 +CREATE INDEX idx_search_name_country_name_vector ON search_name_country USING GIN (name_vector) WITH (fastupdate = off) TABLESPACE ssd;
  
  -- start
  CREATE TABLE location_area_large_-partition- () INHERITS (location_area_large);
 -CREATE INDEX idx_location_area_large_-partition-_place_id ON location_area_large_-partition- USING BTREE (place_id);
 -CREATE INDEX idx_location_area_large_-partition-_geometry ON location_area_large_-partition- USING GIST (geometry);
 +CREATE INDEX idx_location_area_large_-partition-_place_id ON location_area_large_-partition- USING BTREE (place_id) TABLESPACE ssd;
 +CREATE INDEX idx_location_area_large_-partition-_geometry ON location_area_large_-partition- USING GIST (geometry) TABLESPACE ssd;
  
  CREATE TABLE search_name_-partition- () INHERITS (search_name_blank);
 -CREATE INDEX idx_search_name_-partition-_place_id ON search_name_-partition- USING BTREE (place_id);
 -CREATE INDEX idx_search_name_-partition-_centroid ON search_name_-partition- USING GIST (centroid);
 -CREATE INDEX idx_search_name_-partition-_name_vector ON search_name_-partition- USING GIN (name_vector) WITH (fastupdate = off);
 +CREATE INDEX idx_search_name_-partition-_place_id ON search_name_-partition- USING BTREE (place_id) TABLESPACE ssd;
 +CREATE INDEX idx_search_name_-partition-_centroid ON search_name_-partition- USING GIST (centroid) TABLESPACE ssd;
 +CREATE INDEX idx_search_name_-partition-_name_vector ON search_name_-partition- USING GIN (name_vector) WITH (fastupdate = off) TABLESPACE ssd;
  
  CREATE TABLE location_property_-partition- () INHERITS (location_property);
  CREATE INDEX idx_location_property_-partition-_place_id ON location_property_-partition- USING BTREE (place_id);
@@@ -52,8 -52,8 +52,8 @@@ CREATE TABLE location_road_-partition- 
    country_code VARCHAR(2)
    );
  SELECT AddGeometryColumn('location_road_-partition-', 'geometry', 4326, 'GEOMETRY', 2);
 -CREATE INDEX idx_location_road_-partition-_geometry ON location_road_-partition- USING GIST (geometry);
 -CREATE INDEX idx_location_road_-partition-_place_id ON location_road_-partition- USING BTREE (place_id);
 +CREATE INDEX idx_location_road_-partition-_geometry ON location_road_-partition- USING GIST (geometry) TABLESPACE ssd;
 +CREATE INDEX idx_location_road_-partition-_place_id ON location_road_-partition- USING BTREE (place_id) TABLESPACE ssd;
  
  -- end
  
@@@ -178,7 -178,7 +178,7 @@@ BEGI
            ST_Distance(centroid, point) as distance, null as isguess
            FROM search_name_-partition-
            WHERE name_vector @> ARRAY[isin_token]
-           AND ST_DWithin(centroid, point, 0.01) 
+           AND ST_DWithin(centroid, point, 0.03)
            AND search_rank between 22 and 27
        ORDER BY distance ASC limit 1
      LOOP
diff --combined website/reverse.php
index 2c62948fbb7a20d1d89612ee28ba0a52b266a5cc,1cdbf46754f1f6bdcbea1367b195fcde94ef78dd..95889fc4ad15956c036006044871cc6ef3d175d3
@@@ -4,22 -4,6 +4,22 @@@
        require_once(dirname(dirname(__FILE__)).'/lib/init-website.php');
        require_once(CONST_BasePath.'/lib/log.php');
  
 +    if (preg_match(CONST_BlockedUserAgents, $_SERVER["HTTP_USER_AGENT"]) > 0)
 +    {
 +        $fLoadAvg = getLoadAverage();
 +        if ($fLoadAvg >= CONST_BlockReverseMaxLoad) {
 +            header('HTTP/1.0 403 Forbidden');
 +            header('Content-type: text/html; charset=utf-8');
 +              echo "<html><body><h1>App temporarily blocked</h1>";
 +            echo "Your application has been temporarily blocked from the OpenStreetMap Nominatim ";
 +            echo "geolocation service due to high server load.";
 +            echo "\n</body></html>\n";
 +            exit;
 +        }
 +
 +    }
 +
 +
          if (strpos(CONST_BulkUserIPs, ','.$_SERVER["REMOTE_ADDR"].',') !== false)
          {
                  $fLoadAvg = getLoadAverage();
                $sSQL .= " get_name_by_language(name, ARRAY['ref']) as ref,";
                $sSQL .= " st_y(st_centroid(geometry)) as lat, st_x(st_centroid(geometry)) as lon";
                $sSQL .= " from placex where place_id = $iPlaceID ";
- //var_dump($sSQL);
                $aPlace = $oDB->getRow($sSQL);
+ //var_dump($sSQL, $aPlace); exit;
  
                if ($bShowAddressDetails)
                {