Class: ActionDispatch::HostAuthorization::Permissions
    Do not use.  This class is for internal use only.
  
| Relationships & Source Files | |
| Inherits: | Object | 
| Defined in: | actionpack/lib/action_dispatch/middleware/host_authorization.rb | 
Class Method Summary
- .new(hosts) ⇒ Permissions constructor
Instance Attribute Summary
- #empty? ⇒ Boolean readonly
Instance Method Summary
- #allows?(host) ⇒ Boolean
- #extract_hostname(host) private
- #sanitize_hosts(hosts) private
- #sanitize_regexp(host) private
- #sanitize_string(host) private
Constructor Details
    .new(hosts)  ⇒ Permissions 
  
# File 'actionpack/lib/action_dispatch/middleware/host_authorization.rb', line 36
def initialize(hosts) @hosts = sanitize_hosts(hosts) end
Instance Attribute Details
    #empty?  ⇒ Boolean  (readonly)
  
  [ GitHub ]
# File 'actionpack/lib/action_dispatch/middleware/host_authorization.rb', line 40
def empty? @hosts.empty? end
Instance Method Details
    #allows?(host)  ⇒ Boolean 
  
# File 'actionpack/lib/action_dispatch/middleware/host_authorization.rb', line 44
def allows?(host) @hosts.any? do |allowed| if allowed.is_a?(IPAddr) begin allowed === extract_hostname(host) rescue # IPAddr#=== raises an error if you give it a hostname instead of IP. Treat # similar errors as blocked access. false end else allowed === host end end end
#extract_hostname(host) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/middleware/host_authorization.rb', line 83
def extract_hostname(host) host.slice(VALID_IP_HOSTNAME, "host") || host end
#sanitize_hosts(hosts) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/middleware/host_authorization.rb', line 61
def sanitize_hosts(hosts) Array(hosts).map do |host| case host when Regexp then sanitize_regexp(host) when String then sanitize_string(host) else host end end end
#sanitize_regexp(host) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/middleware/host_authorization.rb', line 71
def sanitize_regexp(host) /\A#{host}#{PORT_REGEX}?\z/ end
#sanitize_string(host) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/middleware/host_authorization.rb', line 75
def sanitize_string(host) if host.start_with?(".") /\A#{SUBDOMAIN_REGEX}?#{Regexp.escape(host[1..-1])}#{PORT_REGEX}?\z/i else /\A#{Regexp.escape host}#{PORT_REGEX}?\z/i end end