2014-03-02 54 views
0

我想用puppet配置SonarQube服務器。自定義SonarQube管理員用戶傀儡

我的木偶清單安裝軟件,部署我自定義的sonar.properties,部署ssl證書,下載並配置少量插件,並最終啓動服務。

目標是自動配置和重新配置SonarQube。

在我的postconfig步驟中,我啓動了一個puppet exec whith這個SQL來設置我自己的密碼錶單admin用戶。

"UPDATE users SET crypted_password='***********************************', salt='*******************************' where login='admin' 

我如何計算密碼的crypted_pa​​ssword和salt值? (現在我使用的是假的聲納,修改admin通和以dB爲單位看值)

在僞代碼一些像這樣...

crypted_password=crypt('pass') 

哪裏隱窩是

funcion crypt (anypass) 
{ 
........ 
} 

感謝。

回答

0

在sonar-server的ruby源文件中有一個用於通過密碼進行驗證的ruby文件:by_password.rb。在這裏你可以看到聲納如何對密碼進行加密:

def password_digest(password, salt) 
    digest = REST_AUTH_SITE_KEY 
    REST_AUTH_DIGEST_STRETCHES.times do 
     digest = secure_digest(digest, salt, password, REST_AUTH_SITE_KEY) 
    end 
    digest 
end 

secure_digest被定義爲:

def secure_digest(*args) 
    Digest::SHA1.hexdigest(args.flatten.join('--')) 
end 

所以加密的密碼是digest--salt--password--REST_AUTH_SITE_KEY的SHA1重複REST_AUTH_DIGEST_STRETCHES倍。 REST_AUTH_SITE_KEY和REST_AUTH_DIGEST_STRETCHES的值在/web/WEB-INF/config/initializers/site_keys.rb中設置,默認爲空字符串和1。

這是實現您的目標的一種方式。在我看來,更好的方法是通過creating a user via Sonar's REST API.然而,不幸的是,當時(v4.1.2)通過REST API將用戶添加到組似乎不可能。

+0

是否可以使用REST API創建管理員用戶?如果答案是肯定的,那麼你是對的,REST API是更好的選擇。我會嘗試用戶屬性(http://docs.codehaus.org/pages/viewpage.action?pageId=229743294) – icalvete

+0

實際上它似乎不可能。我已經更新了我的答案以反映這一點。 –

+1

用戶創建完成後,應該可以使用SQL將其添加到管理員組。即使您不知道ID(可能管理員組爲1雖然可能) INSERT INTO groups_users(user_id,group_id)SELECT users.id,groups.id FROM users,groups WHERE users .login ='your_login_name'AND groups.name ='sonar-administrators';' – pghalliday