class Inspec::Resources::AideConf
Attributes
params[R]
Public Class Methods
new(aide_conf_path = nil)
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 30 def initialize(aide_conf_path = nil) @conf_path = aide_conf_path || "/etc/aide.conf" @content = nil @rules = nil read_content end
Public Instance Methods
all_have_rule(rule)
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 37 def all_have_rule(rule) # Case when file didn't exist or perms didn't allow an open return false if @content.nil? lines = @params.reject { |line| line["rules"].include? rule } lines.empty? end
to_s()
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 51 def to_s "AIDE Config" end
Private Instance Methods
filter_comments(data)
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 69 def filter_comments(data) content = [] data.each do |line| content_line, = parse_comment_line(line, comment_char: "#", standalone_comments: false) content.push(content_line) end content end
handle_multi_rule(rule_list, i)
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 136 def handle_multi_rule(rule_list, i) # Rules that represent multiple rules (R,L,>) r_rules = %w{p i l n u g s m c md5} l_rules = %w{p i l n u g} grow_log_rules = %w{p l u g i n S} case rule_list[i] when "R" return r_rules when "L" return l_rules when ">" return grow_log_rules end rule_list[i] end
parse_conf(content)
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 78 def parse_conf(content) params = [] content.each do |line| param = parse_line(line) unless param["selection_line"].nil? params.push(param) end end params end
parse_line(line)
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 89 def parse_line(line) line_and_rules = {} # Case when line is a rule line if line.include?(" = ") parse_rule_line(line) # Case when line is a selection line elsif line.start_with?("/", "!", "=") line_and_rules = parse_selection_line(line) end line_and_rules end
parse_rule_line(line)
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 101 def parse_rule_line(line) line.gsub!(/\s+/, "") rule_line_arr = line.split("=") rules_list = rule_line_arr.last.split("+") rule_name = rule_line_arr.first rules_list.each_index do |i| # Cases where rule respresents one or more other rules if @rules.key?(rules_list[i]) rules_list[i] = @rules[rules_list[i]] end rules_list[i] = handle_multi_rule(rules_list, i) end @rules[rule_name] = rules_list.flatten end
parse_selection_line(line)
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 116 def parse_selection_line(line) selec_line_arr = line.split(" ") selection_line = selec_line_arr.first selection_line.chop! if selection_line.end_with?("/") rule_list = selec_line_arr.last.split("+") rule_list.each_index do |i| hash_list = @rules[rule_list[i]] # Cases where rule respresents one or more other rules unless hash_list.nil? rule_list[i] = hash_list end rule_list[i] = handle_multi_rule(rule_list, i) end rule_list.flatten! { "selection_line" => selection_line, "rules" => rule_list, } end
read_content()
click to toggle source
# File lib/inspec/resources/aide_conf.rb, line 57 def read_content return @content unless @content.nil? @rules = {} raw_conf = read_file_content(@conf_path) # If there is a file and it contains content, continue @content = filter_comments(raw_conf.lines) @params = parse_conf(@content) end