Class: TCellAgent::AppSensorRuleSet

Inherits:
Object
  • Object
show all
Defined in:
lib/tcell_agent/appsensor/rules/appsensor_rule_set.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAppSensorRuleSet

Returns a new instance of AppSensorRuleSet.



15
16
17
18
# File 'lib/tcell_agent/appsensor/rules/appsensor_rule_set.rb', line 15

def initialize()
  @safe_pattern = nil
  @patterns = []
end

Instance Attribute Details

#patternsObject

Returns the value of attribute patterns.



13
14
15
# File 'lib/tcell_agent/appsensor/rules/appsensor_rule_set.rb', line 13

def patterns
  @patterns
end

#safe_patternObject

Returns the value of attribute safe_pattern.



13
14
15
# File 'lib/tcell_agent/appsensor/rules/appsensor_rule_set.rb', line 13

def safe_pattern
  @safe_pattern
end

Instance Method Details

#add_pattern_from_dict(rule_dict) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/tcell_agent/appsensor/rules/appsensor_rule_set.rb', line 40

def add_pattern_from_dict(rule_dict)
  return unless rule_dict

  pattern_id = rule_dict.fetch("id", nil)
  pattern = rule_dict.fetch("ruby", nil)
  if pattern == nil
    pattern = rule_dict.fetch("common", nil)
  elsif pattern == "disabled"
    return
  end

  return if pattern_id == nil or pattern == nil

  pattern_regex = Regexp.new(pattern, Regexp::MULTILINE | Regexp::IGNORECASE)
  enabled = rule_dict.fetch("enabled", true)

  rule_pattern = AppSensorRulePattern.new(pattern_id, pattern_regex, enabled)
  @patterns.push(rule_pattern)
end

#check_violation(param_name, param_value, active_pattern_ids, v1_compatability_enabled) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/tcell_agent/appsensor/rules/appsensor_rule_set.rb', line 20

def check_violation(param_name, param_value, active_pattern_ids, v1_compatability_enabled)
  return nil if param_value.nil? || (@safe_pattern && param_value.match(@safe_pattern))

  @patterns.each do |pattern|
    next if pattern.nil? || pattern.enabled == false

    if v1_compatability_enabled || active_pattern_ids.fetch(pattern.pattern_id, false)
      pattern_result = param_value.match(pattern.pattern_regex)

      if pattern_result
        return {"param" => param_name, "value" => param_value, "pattern" => pattern.pattern_id}
      end
    end
  end

  return nil
rescue
  return nil
end

#set_safe_pattern_from_string(safe_pattern_str) ⇒ Object



60
61
62
63
64
# File 'lib/tcell_agent/appsensor/rules/appsensor_rule_set.rb', line 60

def set_safe_pattern_from_string(safe_pattern_str)
  if safe_pattern_str != nil
    @safe_pattern = Regexp.new(safe_pattern_str)
  end
end