Sha256: cd5edfa514d1f75cc7240e737709e887108f20afb41b12942baff04e55d5280e
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true module Mihari module Commands module Search include Mixins::Database include Mixins::ErrorNotification def self.included(thor) thor.class_eval do desc "search [RULE]", "Search by a rule" method_option :yes, type: :boolean, aliases: "-y", desc: "yes to overwrite the rule in the database" def search_by_rule(path_or_id) rule = Structs::Rule.from_path_or_id path_or_id # validate begin rule.validate! rescue RuleValidationError return end # check update id = rule.id yes = options["yes"] || false unless yes with_db_connection do rule_ = Mihari::Rule.find(id) next if rule.yaml == rule_.yaml unless yes?("This operation will overwrite the rule in the database (Rule ID: #{id}). Are you sure you want to update the rule? (yes/no)") return end rescue ActiveRecord::RecordNotFound next end end analyzer = rule.to_analyzer with_error_notification do alert = analyzer.run if alert data = Mihari::Entities::Alert.represent(alert) puts JSON.pretty_generate(data.as_json) else Mihari.logger.info "No new alert created in the database" end # record a rule with_db_connection do model = rule.to_model model.save rescue ActiveRecord::RecordNotUnique nil end end end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mihari-4.12.0 | lib/mihari/commands/search.rb |
mihari-4.11.0 | lib/mihari/commands/search.rb |
mihari-4.10.0 | lib/mihari/commands/search.rb |