Module: Metasploit::Model::Search::Operator::Help

Included in:
Base
Defined in:
lib/metasploit/model/search/operator/help.rb

Overview

Methods to lookup help text for an operator with a given #name registered to a given #klass.

Instance Method Summary collapse

Instance Method Details

#helpObject

Note:

This uses I18n.translate along with Translation#search_i18n_scope, the value is not cached to support changing the I18n.locale and getting the correct help message for that locale.

The help for this operator.



14
15
16
17
18
19
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/metasploit/model/search/operator/help.rb', line 14

def help
  defaults = []
  klass_i18n_scope = klass.i18n_scope

  klass.lookup_ancestors.each do |ancestor|
    # a specific operator for a given Class#ancestors member
    defaults << :"#{klass_i18n_scope}.ancestors.#{ancestor.model_name.i18n_key}.search.operator.names.#{name}.help"
  end

  operator_class = self.class
  operator_i18n_scope = operator_class.i18n_scope

  operator_class.lookup_ancestors.each do |ancestor|
    # a specific name for a given operator
    defaults << :"#{operator_i18n_scope}.search.operator.ancestors.#{ancestor.model_name.i18n_key}.names.#{name}.help"
    # a specific operator class
    defaults << :"#{operator_i18n_scope}.search.operator.ancestors.#{ancestor.model_name.i18n_key}.help"
  end

  # use first default as key because it is most specific default, that is closest to klass.
  key = defaults.shift
  options = {
      default: defaults,
      model: klass.model_name.human,
      name: name
  }

  ::I18n.translate(key, options)
end