Class: Mihari::Emitters::TheHive

Inherits:
Base
  • Object
show all
Defined in:
lib/mihari/emitters/the_hive.rb

Constant Summary

Constants included from Concerns::Retriable

Concerns::Retriable::DEFAULT_CONDITION, Concerns::Retriable::RETRIABLE_ERRORS

Instance Attribute Summary collapse

Attributes inherited from Base

#rule

Attributes inherited from Actor

#options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

inherited, #result

Methods inherited from Actor

key, key_aliases, keys, #result, #retry_exponential_backoff, #retry_interval, #retry_times, #timeout, type, #validate_configuration!

Methods included from Concerns::Retriable

#retry_on_error

Methods included from Concerns::Configurable

#configuration_keys?

Constructor Details

#initialize(rule:, options: nil, **params) ⇒ TheHive

Returns a new instance of TheHive.

Parameters:

  • rule (Mihari::Rule)
  • options (Hash, nil) (defaults to: nil)
  • params (Hash)


20
21
22
23
24
25
26
27
# File 'lib/mihari/emitters/the_hive.rb', line 20

def initialize(rule:, options: nil, **params)
  super(rule: rule, options: options)

  @url = params[:url] || Mihari.config.thehive_url
  @api_key = params[:api_key] || Mihari.config.thehive_api_key

  @artifacts = []
end

Instance Attribute Details

#api_keyString? (readonly)

Returns:

  • (String, nil)


10
11
12
# File 'lib/mihari/emitters/the_hive.rb', line 10

def api_key
  @api_key
end

#artifactsArray<Mihari::Models::Artifact>

Returns:



13
14
15
# File 'lib/mihari/emitters/the_hive.rb', line 13

def artifacts
  @artifacts
end

#urlString? (readonly)

Returns:

  • (String, nil)


7
8
9
# File 'lib/mihari/emitters/the_hive.rb', line 7

def url
  @url
end

Class Method Details

.configuration_keysObject



57
58
59
# File 'lib/mihari/emitters/the_hive.rb', line 57

def configuration_keys
  %w[thehive_url thehive_api_key]
end

Instance Method Details

#call(artifacts) ⇒ Object

Create a Hive alert

Parameters:



48
49
50
51
52
53
54
# File 'lib/mihari/emitters/the_hive.rb', line 48

def call(artifacts)
  return if artifacts.empty?

  @artifacts = artifacts

  client.alert payload
end

#configured?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/mihari/emitters/the_hive.rb', line 32

def configured?
  api_key? && url?
end

#targetString

Returns:

  • (String)


39
40
41
# File 'lib/mihari/emitters/the_hive.rb', line 39

def target
  URI(url).host || "N/A"
end