module Rollbar::Util::IPObfuscator

Public Class Methods

obfuscate_ip(ip_string) click to toggle source
# File lib/rollbar/util/ip_obfuscator.rb, line 7
def self.obfuscate_ip(ip_string)
  return ip_string unless Rollbar.configuration.user_ip_obfuscator_secret

  secret = Rollbar.configuration.user_ip_obfuscator_secret
  ip_int32 = IPAddr.new(ip_string, Socket::AF_INET).to_i
  secret_int32 = Digest::MD5.hexdigest(secret)[0..7].to_i(16)
  obfuscated_ip_int32 = ip_int32 ^ secret_int32 % (2 << 31)

  IPAddr.new(obfuscated_ip_int32, Socket::AF_INET).to_s
rescue StandardError
  nil
end