class Da99_Rack_Protect::Ensure_Host

Constants

HTT_HOST
LOCALHOST
SERVER_NAME

Public Class Methods

new(new_app, *hosts) click to toggle source
# File lib/da99_rack_protect/0050_Ensure_Host.rb, line 10
def initialize new_app, *hosts
  @app = new_app
  @hosts = hosts
end

Public Instance Methods

call(e) click to toggle source
# File lib/da99_rack_protect/0050_Ensure_Host.rb, line 15
def call e
  name     = e[SERVER_NAME]
  host     = e[HTT_HOST]

  is_valid = @hosts.include?(name)

  if !is_valid
    is_local = @hosts.include?(:localhost) && name[LOCALHOST]
    is_valid = is_local
  end

  is_match = host[/\A#{name}(:\d+)?\z/]

  return @app.call(e) if is_valid && is_match
  Da99_Rack_Protect.response 444, :text, 'Invalid host specified by client.'
end