Sha256: cbc5999d5de5b70a74bfc100425fed6e046e33c48414322a96224f705cdecb13

Contents?: true

Size: 1.09 KB

Versions: 6

Compression:

Stored size: 1.09 KB

Contents

# encoding: utf-8
# copyright: 2015, Vulcano Security GmbH
# author: Christoph Hartmann
# author: Dominik Richter
# license: All rights reserved

require 'utils/simpleconfig'

# Usage:
#
# describe limits_conf do
#   its('*') { should include ['hard','core','0'] }
# end

class LimitsConf < Inspec.resource(1)
  name 'limits_conf'

  def initialize(path = nil)
    @conf_path = path || '/etc/security/limits.conf'
  end

  def method_missing(name)
    read_params[name.to_s]
  end

  def read_params
    return @params if defined?(@params)

    # read the file
    file = inspec.file(@conf_path)
    if !file.file?
      skip_resource "Can't find file \"#{@conf_path}\""
      return @params = {}
    end

    content = file.content
    if content.empty? && file.size > 0
      skip_resource "Can't read file \"#{@conf_path}\""
      return @params = {}
    end

    # parse the file
    conf = SimpleConfig.new(
      content,
      assignment_re: /^\s*(\S+?)\s+(.*?)\s+(.*?)\s+(.*?)\s*$/,
      key_vals: 3,
      multiple_values: true,
    )
    @params = conf.params
  end

  def to_s
    'limits.conf'
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
inspec-0.9.5 lib/resources/limits_conf.rb
inspec-0.9.4 lib/resources/limits_conf.rb
inspec-0.9.3 lib/resources/limits_conf.rb
inspec-0.9.2 lib/resources/limits_conf.rb
inspec-0.9.1 lib/resources/limits_conf.rb
inspec-0.9.0 lib/resources/limits_conf.rb