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_dates(query = nil) ⇒ Object



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

def expiry_dates(query = nil)
  warn '[DEPRECATION] The shadow `expiry_dates` property is deprecated and will be removed' \
   ' in InSpec 3.0.  Please use `expiry_date` instead.'
  query.nil? ? expiry_date : 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_changes(query = nil) ⇒ Object



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

def last_changes(query = nil)
  warn '[DEPRECATION] The shadow `last_changes` property is deprecated and will be removed' \
   ' in InSpec 3.0.  Please use `last_change` instead.'
  query.nil? ? last_change : last_change(query)
end

#linesObject



115
116
117
118
119
# File 'lib/resources/shadow.rb', line 115

def lines
  warn '[DEPRECATION] The shadow `lines` property is deprecated and will be removed' \
    ' in InSpec 3.0.'
  shadow_content.to_s.split("\n")
end

#passwords(query = nil) ⇒ Object



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

def passwords(query = nil)
  warn '[DEPRECATION] The shadow `passwords` property is deprecated and will be removed' \
   ' in InSpec 3.0.  Please use `password` instead.'
  query.nil? ? password : password(query)
end

#to_sObject



121
122
123
124
# File 'lib/resources/shadow.rb', line 121

def to_s
  f = @filters.empty? ? '' : ' with'+@filters
  "/etc/shadow#{f}"
end

#users(query = nil) ⇒ Object



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

def users(query = nil)
  warn '[DEPRECATION] The shadow `users` property is deprecated and will be removed' \
   ' in InSpec 3.0.  Please use `user` instead.'
  query.nil? ? user : user(query)
end