aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Chard <ian@mysociety.org>2014-11-04 11:26:26 +0000
committerLouise Crow <louise.crow@gmail.com>2014-11-17 18:36:58 +0000
commit355bb967c5c844ea29fde03112dc61b5df93caf1 (patch)
tree099ac24a983b9cabf02c840c1514e30e078e446d
parentab76e4a18904af104ab532cc273ba15d9bef6f75 (diff)
Use a local GeoIP database instead of Gaze if possible
-rw-r--r--Gemfile1
-rw-r--r--app/controllers/application_controller.rb7
-rw-r--r--lib/configuration.rb1
3 files changed, 8 insertions, 1 deletions
diff --git a/Gemfile b/Gemfile
index c50396af5..841be14d7 100644
--- a/Gemfile
+++ b/Gemfile
@@ -11,6 +11,7 @@ gem 'dynamic_form'
gem 'exception_notification'
gem 'fancybox-rails'
gem 'foundation-rails'
+gem 'geoip'
gem 'jquery-rails', '~> 3.0.4'
gem 'jquery-ui-rails'
gem 'json'
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 4d3f40d40..0b98340fa 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -8,6 +8,7 @@
# Email: hello@mysociety.org; WWW: http://www.mysociety.org/
require 'open-uri'
+require 'geoip'
class ApplicationController < ActionController::Base
class PermissionDenied < StandardError
@@ -423,7 +424,11 @@ class ApplicationController < ActionController::Base
def country_from_ip
country = ""
- if !AlaveteliConfiguration::gaze_url.empty?
+ if !AlaveteliConfiguration::geoip_database.empty?
+ if File.file?(AlaveteliConfiguration::geoip_database)
+ country = GeoIP.new(AlaveteliConfiguration::geoip_database).country(request.remote_ip).country_code2
+ end
+ elsif !AlaveteliConfiguration::gaze_url.empty?
begin
country = quietly_try_to_open("#{AlaveteliConfiguration::gaze_url}/gaze-rest?f=get_country_from_ip;ip=#{request.remote_ip}")
rescue ActionDispatch::RemoteIp::IpSpoofAttackError
diff --git a/lib/configuration.rb b/lib/configuration.rb
index 2144f9954..95bf8cdff 100644
--- a/lib/configuration.rb
+++ b/lib/configuration.rb
@@ -39,6 +39,7 @@ module AlaveteliConfiguration
:FRONTPAGE_PUBLICBODY_EXAMPLES => '',
:GA_CODE => '',
:GAZE_URL => '',
+ :GEOIP_DATABASE => '/usr/share/GeoIP/GeoIP.dat',
:HTML_TO_PDF_COMMAND => '',
:INCLUDE_DEFAULT_LOCALE_IN_URLS => true,
:INCOMING_EMAIL_DOMAIN => 'localhost',