class Mihari::Status

Public Class Methods

check() click to toggle source
# File lib/mihari/status.rb, line 9
def self.check
  new.check
end

Public Instance Methods

check() click to toggle source
# File lib/mihari/status.rb, line 5
def check
  statuses
end

Private Instance Methods

build_status(klass) click to toggle source

Build a status of a class

@param [Class<Mihari::Analyzers::Base>, Class<Mihari::Emitters::Base>] klass

@return [Hash, nil]

# File lib/mihari/status.rb, line 35
def build_status(klass)
  return nil if klass == Mihari::Analyzers::Rule

  is_analyzer = klass.ancestors.include?(Mihari::Analyzers::Base)
  is_emitter = klass.ancestors.include?(Mihari::Emitters::Base)
  is_enricher = klass.ancestors.include?(Mihari::Enrichers::Base)

  instance = is_analyzer ? klass.new("dummy") : klass.new
  is_configured = instance.configured?
  values = instance.configuration_values

  type = "Analyzer"
  type = "Emitter" if is_emitter
  type = "Enricher" if is_enricher

  values ? { is_configured: is_configured, values: values, type: type } : nil
rescue ArgumentError => _e
  nil
end
statuses() click to toggle source

Statuses of analyzers and emitters

@return [Array<Hash>]

# File lib/mihari/status.rb, line 20
def statuses
  (Mihari.analyzers + Mihari.emitters + Mihari.enrichers).map do |klass|
    name = klass.to_s.split("::").last.to_s

    [name, build_status(klass)]
  end.to_h.compact
end