summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvarac <varacanero@zeromail.org>2013-04-24 16:49:56 +0200
committervarac <varacanero@zeromail.org>2013-04-24 16:49:56 +0200
commit7b6c9a29b1333ce733dd5d7c0dadd7f90513b261 (patch)
tree836d3b8819217c10d4afdfbf5b76444980abb3dd
parentec9d3c4629586caa910323c7cd5ffe769843ad42 (diff)
Use pre-salted+hashed admin pw for couchdb (Feature #1941)
-rw-r--r--manifests/base.pp17
-rw-r--r--manifests/init.pp2
2 files changed, 14 insertions, 5 deletions
diff --git a/manifests/base.pp b/manifests/base.pp
index 5b70546..fb87ae9 100644
--- a/manifests/base.pp
+++ b/manifests/base.pp
@@ -56,10 +56,19 @@ class couchdb::base {
require => Package['couchdb'];
}
- # salt and encrypt admin pw
- $sha1_and_salt = str2sha1_and_salt($::couchdb::admin_pw)
- $sha1 = $sha1_and_salt[0]
- $salt = $sha1_and_salt[1]
+ if $::couchdb::admin_salt == '' {
+ # unhashed, plaintext pw, no salt. For couchdb >= 1.2
+ $sha1_and_salt = str2sha1_and_salt($::couchdb::admin_pw)
+ $sha1 = $sha1_and_salt[0]
+ $salt = $sha1_and_salt[1]
+ } else {
+ # prehashed pw with salt, for couchdb < 1.2
+ # salt and encrypt pw
+ # str_and_salt2sha1 is a function from leap's stdlib module
+ $salt = $::couchdb::admin_salt
+ $pw_and_salt = [ $::couchdb::admin_pw, $salt ]
+ $sha1 = str_and_salt2sha1($pw_and_salt)
+ }
file { '/etc/couchdb/local.d/admin.ini':
content => "[admins]
diff --git a/manifests/init.pp b/manifests/init.pp
index f8639f1..5c03342 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,4 +1,4 @@
-class couchdb ( $admin_pw = '', $bigcouch = false, $bigcouch_cookie = '', $ednp_port = '9001' )
+class couchdb ( $admin_pw = '', $admin_salt = '', $bigcouch = false, $bigcouch_cookie = '', $ednp_port = '9001' )
{
if $admin_pw == '' {