Module: Sqreen::Actions

Defined in:
lib/sqreen/actions.rb,
lib/sqreen/actions/base.rb,
lib/sqreen/actions/block_ip.rb,
lib/sqreen/actions/block_user.rb,
lib/sqreen/actions/repository.rb,
lib/sqreen/actions/redirect_ip.rb,
lib/sqreen/actions/users_index.rb,
lib/sqreen/actions/actions_index.rb,
lib/sqreen/actions/redirect_user.rb,
lib/sqreen/actions/ip_ranges_index.rb,
lib/sqreen/actions/user_action_class.rb,
lib/sqreen/actions/unknown_action_type.rb,
lib/sqreen/actions/ip_range_indexed_action_class.rb

Overview

Implements actions (behavior taken in response to agent signals)

Defined Under Namespace

Modules: IpRangeIndexedActionClass, UserActionClass Classes: ActionsIndex, Base, BlockIp, BlockUser, IpRangesIndex, RedirectIp, RedirectUser, Repository, UnknownActionType, UsersIndex

Class Method Summary collapse

Class Method Details

.deserialize_action(hash) ⇒ Sqreen::Actions::Base



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/sqreen/actions.rb', line 20

def self.deserialize_action(hash)
  action_type = hash['action']
  raise 'no action type available' unless action_type

  subclass = Sqreen::Actions::Base.get_type_class(action_type)
  raise Sqreen::Actions::UnknownActionType, action_type unless subclass

  id = hash['action_id']
  raise 'no action id available' unless id

  duration = hash['duration']
  if !duration.nil? && duration <= 0
    Sqreen.log.debug "Action #{id} is already expired"
    return nil
  end

  opts = {
    :duration => duration,
    :send_response => hash['send_response'],
  }

  subclass.new(id, opts, hash['parameters'] || {})
end