6
7
8
9
10
11
12
13
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
|
# File 'lib/siteguard_lite/custom_signature/text_loader.rb', line 6
def self.load(text)
rules = []
rule = nil
line_parser = TextLineParser.new
text.split("\n").each do |line|
parsed = line_parser.parse(line)
if rule&.name == parsed[:name]
rule.add_condition(*parsed[:condition].fetch_values(:key, :value, :comparison_methods))
rule.exclusion_action = parsed[:exclusion_action]
rule.signature = parsed[:signature]
else
rules << rule if rule
rule = Rule.new(
enable: parsed[:enable],
action: parsed[:action],
filter_lifetime: parsed[:filter_lifetime],
name: parsed[:name],
comment: parsed[:comment],
exclusion_action: parsed[:exclusion_action],
signature: parsed[:signature],
)
rule.add_condition(*parsed[:condition].fetch_values(:key, :value, :comparison_methods))
end
end
rules << rule if rule
rules
end
|