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