Added IP masking, based on Google Analytics
Andrew
committed May 01, 2018
commit 309cc5387b85a052c47f4bb19a8023be7f867e93
Showing 3
changed files with
24 additions
and 1 deletions
CHANGELOG.md
+1
-0
| @@ | @@ -1,5 +1,6 @@ |
| ## 2.0.3 [unreleased] | |
| + | - Added IP masking |
| - Fixed `visitable` for Rails 4.2 | |
| ## 2.0.2 | |
ahoy.rb b/lib/ahoy.rb
+3
-0
| @@ | @@ -67,6 +67,9 @@ module Ahoy |
| mattr_accessor :token_generator | |
| self.token_generator = -> { SecureRandom.uuid } | |
| + | mattr_accessor :mask_ip |
| + | self.mask_ip = false |
| + | |
| def self.log(message) | |
| Rails.logger.info { "[ahoy] #{message}" } | |
| end | |
ahoy/visit_properties.rb b/lib/ahoy/visit_properties.rb
+20
-1
| @@ | @@ -1,3 +1,4 @@ |
| + | require "ipaddr" |
| require "browser" | |
| require "referer-parser" | |
| require "user_agent_parser" | |
| @@ | @@ -69,9 +70,27 @@ module Ahoy |
| } | |
| end | |
| + | # masking based on Google Analytics anonymization |
| + | # https://support.google.com/analytics/answer/2763052 |
| + | def ip |
| + | ip = request.remote_ip |
| + | if ip && Ahoy.mask_ip |
| + | addr = IPAddr.new(ip) |
| + | if addr.ipv4? |
| + | # set last octet to 0 |
| + | addr.mask(24).to_s |
| + | else |
| + | # set last 80 bits to zeros |
| + | addr.mask(48).to_s |
| + | end |
| + | else |
| + | ip |
| + | end |
| + | end |
| + | |
| def request_properties | |
| { | |
| - | ip: request.remote_ip, |
| + | ip: ip, |
| user_agent: ensure_utf8(request.user_agent), | |
| referrer: referrer, | |
| landing_page: landing_page, | |