lib/mihari/analyzers/rule.rb in mihari-4.6.1 vs lib/mihari/analyzers/rule.rb in mihari-4.7.0
- old
+ new
@@ -49,19 +49,21 @@
option :tags, default: proc { [] }
option :allowed_data_types, default: proc { ALLOWED_DATA_TYPES }
option :disallowed_data_values, default: proc { [] }
option :emitters, optional: true
+ option :enrichers, optional: true
attr_reader :source
def initialize(**kwargs)
super(**kwargs)
@source = id
@emitters = emitters || DEFAULT_EMITTERS
+ @enrichers = enrichers || DEFAULT_ENRICHERS
validate_analyzer_configurations
end
#
@@ -107,9 +109,24 @@
def normalized_artifacts
@normalized_artifacts ||= artifacts.uniq(&:data).select(&:valid?).select do |artifact|
allowed_data_types.include? artifact.data_type
end.reject do |artifact|
disallowed_data_value? artifact.data
+ end
+ end
+
+ #
+ # Enriched artifacts
+ #
+ # @return [Array<Mihari::Artifact>]
+ #
+ def enriched_artifacts
+ @enriched_artifacts ||= Parallel.map(unique_artifacts) do |artifact|
+ enrichers.each do |enricher|
+ artifact.enrich_by_enricher(enricher[:enricher])
+ end
+
+ artifact
end
end
#
# Normalized disallowed data values