Class: Aikido::Zen::Middleware::UserAgentChecker

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

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of UserAgentChecker.



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

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

Instance Method Details

#bypassed?(request) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/aikido/zen/middleware/user_agent_checker.rb', line 35

def bypassed?(request)
  @settings.bypassed_ips.include?(request.client_ip)
end

#call(env) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/aikido/zen/middleware/user_agent_checker.rb', line 13

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

  return @app.call(env) if bypassed?(request)

  user_agent = request.user_agent

  if @settings.blocked_user_agent?(user_agent)
    user_agent_keys = @settings.user_agent_keys(user_agent)
    @zen.track_user_agent(user_agent_keys)

    return @config.blocked_responder.call(request, :user_agent)
  end

  if @settings.monitored_user_agent?(user_agent)
    user_agent_keys = @settings.user_agent_keys(user_agent)
    @zen.track_user_agent(user_agent_keys)
  end

  @app.call(env)
end