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 = nil) ⇒ Shadow

Returns a new instance of Shadow.



40
41
42
43
44
45
46
47
# File 'lib/resources/shadow.rb', line 40

def initialize(path = '/etc/shadow', opts = nil)
  opts ||= {}
  @path = path || '/etc/shadow'
  @filters = opts[:filters] || ''
  @raw_content = opts[:content] || read_file_content(@path, allow_empty: true)
  @lines = @raw_content.to_s.split("\n")
  @params = @lines.map { |l| parse_shadow_line(l) }
end

Instance Attribute Details

#linesObject (readonly)

Returns the value of attribute lines.



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

def lines
  @lines
end

#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



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

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



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/resources/shadow.rb', line 75

def filter(query = {})
  return self if query.nil? || query.empty?
  res = @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



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

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

#passwords(query = nil) ⇒ Object



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

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



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

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

#users(query = nil) ⇒ Object



95
96
97
98
99
# File 'lib/resources/shadow.rb', line 95

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