class Inspec::Resources::EtcHostsAllow
def initialize(hosts_allow_path = nil)
def initialize(hosts_allow_path = nil) @conf_path = hosts_allow_path || '/etc/hosts.allow' @content = nil @params = nil read_content end
def parse_conf(content)
def parse_conf(content) content.map do |line| data, = parse_comment_line(line, comment_char: '#', standalone_comments: false) parse_line(data) unless data == '' end.compact end
def parse_line(line)
def parse_line(line) daemon, clients_and_options = line.split(/:\s+/, 2) daemon = daemon.strip clients_and_options ||= '' clients, options = clients_and_options.split(/\s+:\s+/, 2) client_list = clients.split(/,/).map(&:strip) options ||= '' options_list = options.split(/:\s+/).map(&:strip) { 'daemon' => daemon, 'client_list' => client_list, 'options' => options_list, } end
def read_content
def read_content @content = '' @params = {} @content = split_daemons(read_file(@conf_path)) @params = parse_conf(@content) end
def read_file(conf_path = @conf_path)
def read_file(conf_path = @conf_path) read_file_content(conf_path).lines end
def split_daemons(content)
def split_daemons(content) split_daemons_list = [] content.each do |line| data, = parse_comment_line(line, comment_char: '#', standalone_comments: false) next unless data != '' data.split(':')[0].split(',').each do |daemon| split_daemons_list.push("#{daemon} : " + line.split(':', 2)[1]) end end split_daemons_list end