Class: Aikido::Zen::Middleware::CheckAllowedAddresses

Inherits:
Object
  • Object
show all
Defined in:
lib/aikido/zen/middleware/check_allowed_addresses.rb

Overview

Middleware that rejects requests from IPs blocked in the Aikido dashboard.

Instance Method Summary collapse

Constructor Details

#initialize(app, config: Aikido::Zen.config, settings: Aikido::Zen.runtime_settings) ⇒ CheckAllowedAddresses

Returns a new instance of CheckAllowedAddresses.



7
8
9
10
11
# File 'lib/aikido/zen/middleware/check_allowed_addresses.rb', line 7

def initialize(app, config: Aikido::Zen.config, settings: Aikido::Zen.runtime_settings)
  @app = app
  @config = config
  @settings = settings
end

Instance Method Details

#call(env) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/aikido/zen/middleware/check_allowed_addresses.rb', line 13

def call(env)
  request = Aikido::Zen::Middleware.request_from(env)

  allowed_ips = @settings.endpoints[request.route].allowed_ips

  if allowed_ips.empty? || allowed_ips.include?(request.ip)
    @app.call(env)
  else
    @config.blocked_responder.call(request, :ip)
  end
end