lib/web_console/request.rb in web-console-2.2.1 vs lib/web_console/request.rb in web-console-2.3.0

- old
+ new

@@ -1,13 +1,8 @@ module WebConsole # Web Console tailored request object. class Request < ActionDispatch::Request - # While most of the servers will return blank content type if none given, - # Puma will return text/plain. - cattr_accessor :acceptable_content_types - @@acceptable_content_types = [Mime::HTML, Mime::TEXT, Mime::URL_ENCODED_FORM] - # Configurable set of whitelisted networks. cattr_accessor :whitelisted_ips @@whitelisted_ips = Whitelist.new # Define a vendor MIME type. We can call it using Mime::WEB_CONSOLE_V2 constant. @@ -21,37 +16,35 @@ whitelisted_ips.include?(strict_remote_ip) end # Determines the remote IP using our much stricter whitelist. def strict_remote_ip - GetSecureIp.new(env, whitelisted_ips).to_s + GetSecureIp.new(self, whitelisted_ips).to_s end - # Returns whether the request is from an acceptable content type. - # - # We can render a console for HTML and TEXT by default. If a client didn't - # specified any content type and the server returned it as blank, we'll - # render it as well. - def acceptable_content_type? - content_type.blank? || content_type.in?(acceptable_content_types) - end - # Returns whether the request is acceptable. def acceptable? xhr? && accepts.any? { |mime| Mime::WEB_CONSOLE_V2 == mime } end - class GetSecureIp < ActionDispatch::RemoteIp::GetIp - def initialize(env, proxies) - @env = env - @check_ip = true - @proxies = proxies - end + private - def filter_proxies(ips) - ips.reject do |ip| - @proxies.include?(ip) + class GetSecureIp < ActionDispatch::RemoteIp::GetIp + def initialize(req, proxies) + # After rails/rails@07b2ff0 ActionDispatch::RemoteIp::GetIp initializes + # with a ActionDispatch::Request object instead of plain Rack + # environment hash. Keep both @req and @env here, so we don't if/else + # on Rails versions. + @req = req + @env = req.env + @check_ip = true + @proxies = proxies end + + def filter_proxies(ips) + ips.reject do |ip| + @proxies.include?(ip) + end + end end - end end end