Class: Inspec::Resources::Shadow

Inherits:
Object
  • Object
show all
Includes:
FileReader
Defined in:
lib/inspec/resources/shadow.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from FileReader

#read_file_content

Constructor Details

#initialize(path = "/etc/shadow", opts = {}) ⇒ Shadow

Returns a new instance of Shadow.



38
39
40
41
42
# File 'lib/inspec/resources/shadow.rb', line 38

def initialize(path = "/etc/shadow", opts = {})
  @opts = opts
  @path = path || "/etc/shadow"
  @filters = @opts[:filters] || ""
end

Instance Attribute Details

#paramsObject (readonly)

Returns the value of attribute params.



36
37
38
# File 'lib/inspec/resources/shadow.rb', line 36

def params
  @params
end

Instance Method Details

#expiry_date(query = nil) ⇒ Object



102
103
104
105
# File 'lib/inspec/resources/shadow.rb', line 102

def expiry_date(query = nil)
  Inspec.deprecate(:properties_shadow, "The shadow `expiry_date` property is deprecated. Please use `expiry_dates` instead.")
  query.nil? ? where.expiry_dates : where("expiry_date" => query)
end

#filter(query = {}) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/inspec/resources/shadow.rb', line 64

def filter(query = {})
  return self if query.nil? || query.empty?

  res = set_params
  filters = ""
  query.each do |attr, condition|
    condition = condition.to_s if condition.is_a? Integer
    filters += " #{attr} = #{condition.inspect}"
    res = res.find_all do |line|
      case line[attr.to_s]
      when condition
        true
      else
        false
      end
    end
  end
  content = res.map { |x| x.values.join(":") }.join("\n")
  Shadow.new(@path, content: content, filters: @filters + filters)
end

#last_change(query = nil) ⇒ Object



97
98
99
100
# File 'lib/inspec/resources/shadow.rb', line 97

def last_change(query = nil)
  Inspec.deprecate(:properties_shadow, "The shadow `last_change` property is deprecated. Please use `last_changes` instead.")
  query.nil? ? where.last_changes : where("last_change" => query)
end

#linesObject



107
108
109
110
# File 'lib/inspec/resources/shadow.rb', line 107

def lines
  Inspec.deprecate(:properties_shadow, "The shadow `lines` property is deprecated.")
  shadow_content.to_s.split("\n")
end

#password(query = nil) ⇒ Object



92
93
94
95
# File 'lib/inspec/resources/shadow.rb', line 92

def password(query = nil)
  Inspec.deprecate(:properties_shadow, "The shadow `password` property is deprecated. Please use `passwords` instead.")
  query.nil? ? where.passwords : where("password" => query)
end

#to_sObject



112
113
114
115
# File 'lib/inspec/resources/shadow.rb', line 112

def to_s
  f = @filters.empty? ? "" : " with" + @filters
  "#{@path}#{f}"
end

#user(query = nil) ⇒ Object

Next 4 are deprecated methods. We define them here so we can emit a deprecation message. They are also defined on the Table, above.



87
88
89
90
# File 'lib/inspec/resources/shadow.rb', line 87

def user(query = nil)
  Inspec.deprecate(:properties_shadow, "The shadow `user` property is deprecated. Please use `users` instead.")
  query.nil? ? where.users : where("user" => query)
end