]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/tile/templates/default/export.erb
Block a scale used by a scraper
[chef.git] / cookbooks / tile / templates / default / export.erb
index dfd076252167166384bc5c1397ba3b08200b18c3..b91c3957f349b8ff52f5eb07ba2e922314606de9 100644 (file)
@@ -58,6 +58,10 @@ form = cgi.FieldStorage()
 if not os.environ.has_key('HTTP_USER_AGENT'):
   os.environ['HTTP_USER_AGENT'] = 'NONE'
 
+# Make sure we have a referer
+if not os.environ.has_key('HTTP_REFERER'):
+  os.environ['HTTP_REFERER'] = 'NONE'
+
 # Get the load average
 cputimes = [float(n) for n in open("/proc/stat").readline().rstrip().split()[1:-1]]
 idletime = cputimes[3] / sum(cputimes)
@@ -66,11 +70,19 @@ idletime = cputimes[3] / sum(cputimes)
 if idletime < 0.2:
   # Abort if the CPU idle time on the machine is too low
   output_error("The server is too busy at the moment. Please wait a few minutes before trying again.", "503 Service Unavailable")
+elif form.getvalue("scale") == "4600":
+  # Block scraper
+  output_error("The server is too busy at the moment. Please wait a few minutes before trying again.", "503 Service Unavailable")
 <% @blocks["user_agents"].each do |user_agent| -%>
 elif os.environ['HTTP_USER_AGENT'] == '<%= user_agent %>':
   # Block scraper
   output_error("The server is too busy at the moment. Please wait a few minutes before trying again.", "503 Service Unavailable")
 <% end -%>
+<% @blocks["referers"].each do |referer| -%>
+elif os.environ['HTTP_REFERER'] == '<%= referer %>':
+  # Block scraper
+  output_error("The server is too busy at the moment. Please wait a few minutes before trying again.", "503 Service Unavailable")
+<% end -%>
 elif not form.has_key("bbox"):
   # No bounding box specified
   output_error("No bounding box specified")