diff options
author | Ian Chard <ian@mysociety.org> | 2014-11-04 11:26:26 +0000 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2014-11-17 18:36:58 +0000 |
commit | 355bb967c5c844ea29fde03112dc61b5df93caf1 (patch) | |
tree | 099ac24a983b9cabf02c840c1514e30e078e446d | |
parent | ab76e4a18904af104ab532cc273ba15d9bef6f75 (diff) |
Use a local GeoIP database instead of Gaze if possible
-rw-r--r-- | Gemfile | 1 | ||||
-rw-r--r-- | app/controllers/application_controller.rb | 7 | ||||
-rw-r--r-- | lib/configuration.rb | 1 |
3 files changed, 8 insertions, 1 deletions
@@ -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', |