summaryrefslogtreecommitdiff
path: root/lib/facter/couchdb_pwhash_alg.rb
blob: 42b96b75fa41c8b30c162e82d6bfe8a9e26ef5cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
require 'facter'

def version_parts ( version )
  # gives back a hash containing major, minor and patch numbers
  # of a give version string

  parts = Hash.new
  first, *rest = version.split(".")
  parts["major"] = first
  parts["minor"] = rest[0]
  parts["patch"] = rest[1]
  return parts
end

def couchdb_pwhash_alg
  # couchdb uses sha1 as pw hash algorithm until v. 1.2,
  # but pbkdf2 from v.1.3 on.
  # see http://docs.couchdb.org/en/1.4.x/configuring.html for
  # details

  couchdb_version = Facter.value(:couchdb_version)
  version = version_parts (couchdb_version)
  major = version["major"].to_i
  alg = case major
    when 0 then alg = 'n/a'
    when 1 then
      minor = version['minor'].to_i
      if minor < 3
        alg = 'sha1'
      else
        alg = 'pbkdf2'
      end
  else
    alg = 'pbkdf2'
  end
  return alg
end

Facter.add(:couchdb_pwhash_alg) do
  setcode do
    couchdb_pwhash_alg
  end
end