Class: Inspec::Resources::Shadow

Inherits:
Object
  • Object
show all
Includes:
FileReader
Defined in:
lib/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.



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

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.



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

def params
  @params
end

Instance Method Details

#expiry_date(query = nil) ⇒ Object



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

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



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/resources/shadow.rb', line 71

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



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

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



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

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

#password(query = nil) ⇒ Object



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

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



118
119
120
121
# File 'lib/resources/shadow.rb', line 118

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.



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

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