Module: LogrageUtil

Defined in:
lib/generators/rockstart/monitoring/lograge/templates/lograge_util.rb

Overview

Utility functions used with Lograge generated by rockstart:security:lograge

Class Method Summary collapse

Class Method Details

.format_rack_attack_blocklist(name, start, finish, request_id, payload) ⇒ Object

format a blocklist.rack_attack message from rack:attack



12
13
14
# File 'lib/generators/rockstart/monitoring/lograge/templates/lograge_util.rb', line 12

def format_rack_attack_blocklist(name, start, finish, request_id, payload)
  format_rack_attack_event(name, start, finish, request_id, payload, status: 403)
end

.format_rack_attack_event(name, start, finish, request_id, payload, status:) ⇒ Object

rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/ParameterLists



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/generators/rockstart/monitoring/lograge/templates/lograge_util.rb', line 17

def format_rack_attack_event(name, start, finish, request_id, payload, status:)
  req = payload[:request]
  matched_rule = req.env["rack.attack.matched"]

  filter_parameters = Rails.application.config.filter_parameters
  params = ActiveSupport::ParameterFilter.new(filter_parameters).filter(req.params)
  remote_ip = IpAnonymizer.mask_ip(req.ip) if req.ip.present?

  message_payload = {
    method: req.request_method,
    path: req.path,
    format: params[:format] || "html",
    controller: Rack::Attack.name,
    action: "#{name}[#{matched_rule}]",
    status: status,
    duration: (finish - start).to_f.round(2),
    params: params.except("controller", "action", "format", "id"),
    host: req.host,
    remote_ip: remote_ip,
    request_id: request_id
  }
  Lograge.lograge_config.formatter.call(message_payload)
end

.format_rack_attack_throttle(name, start, finish, request_id, payload) ⇒ Object

format a throttle.rack_attack message from rack:attack



7
8
9
# File 'lib/generators/rockstart/monitoring/lograge/templates/lograge_util.rb', line 7

def format_rack_attack_throttle(name, start, finish, request_id, payload)
  format_rack_attack_event(name, start, finish, request_id, payload, status: 429)
end