class Rack::Entrance

Public Class Methods

internal_cidrs() click to toggle source
# File lib/rack/entrance.rb, line 11
def self.internal_cidrs
  ENV['ENTRANCE_INTERNAL_CIDRS'].to_s.split ','
end
new(app, options = {}) click to toggle source
# File lib/rack/entrance.rb, line 7
def initialize(app, options = {})
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/entrance.rb, line 15
def call(env)
  @env = env
  request.env['entrance.user_ip']        = user_ip.to_s if user_ip.to_s != ''
  request.env['entrance.internal_cidrs'] = self.class.internal_cidrs
  request.env['entrance.internal']       = internal?
  @app.call env
end
internal?() click to toggle source
# File lib/rack/entrance.rb, line 37
def internal?
  internal_ips.any? { |ip| ip.include?(user_ip) }
end
internal_ips() click to toggle source
# File lib/rack/entrance.rb, line 41
def internal_ips
  @internal_ips ||= self.class.internal_cidrs.map do |cidr|
    begin
      ::IPAddr.new cidr
    rescue ArgumentError
      nil
    end
  end.compact
end
raw_user_ip() click to toggle source
# File lib/rack/entrance.rb, line 27
def raw_user_ip
  (@env["action_dispatch.remote_ip"] || request.ip).to_s
end
request() click to toggle source
# File lib/rack/entrance.rb, line 23
def request
  ::Rack::Request.new @env
end
user_ip() click to toggle source
# File lib/rack/entrance.rb, line 31
def user_ip
  ::IPAddr.new raw_user_ip
rescue ArgumentError
  nil
end