2017-06-19 31 views
1

對於我現有的gitolite3-安裝,我想添加匿名訪問,僅限於一定數量的存儲庫。應該允許所有這些存儲庫讀取,而寫入操作應該受到保護。通過推送將數據傳遞給gitolite-VREF

爲此,我想通過一個令牌傳遞給gitolite存儲庫。 VREF收到令牌並檢查它是否有效。如果是,則允許對存儲庫執行寫入操作。該gitolite-conf的應該是這樣的:

repo @anonrepos 
    RW = @all 

    option deny-rules = 1 
    - VREF/MYTOKENREF = @all 

(如果配置中有錯誤,那麼我複製他們從他們所在的PC錯誤)
而對於我想到的VREF:

#!/usr/bin/python3 

token = input() 
if is_valid(token): # TODO: define is_valid 
    exit(0) # Allow the push 
else: 
    exit(1) # Deny it 

這麼多的理論。當我嘗試推送時,由於pythons input()引發EOFError,我得到一個錯誤。所以我不能通過stdin將信息傳遞給vref,也不能通過sys.argv

還是我錯了?有沒有辦法將令牌傳遞給我的vref,也許通過一些git-command-line-trickery?或者,如果我確信其背後的人是合法的,我是否還有其他方式可以允許匿名推送(字面上每個人都可以推送,所以我需要保護這些存儲庫)?我正在考慮將即將推出的提交的提交標識列入白名單,但這不是一種靈活的方式。

注:有人推應該是這樣的過程他:那他要推到倉庫的人的消息,我創建一個令牌,並將其發送給他,最後他推到倉庫成功使用提供的令牌。

+0

這個東西的一般規則是 「通過環境變量傳遞」。但我不確定如何使用gitolite來設置它。 – torek

+0

@torek這是一個好主意,儘管我想盡可能簡單地實現推送並傳遞環境變量並不容易在Windows系統上設置 – Sirac

回答

1

另一種方法是定義一組用戶,您不填充。

repo test-ldap-devel 
    RW+ = @devel 

要確定用戶是devel的組中(和授權推),則寫一個程序,給定一個用戶名,查詢用戶參考並返回該用戶組的一個空格分隔的列表是的成員。
然後把完整路徑,這個程序稱爲GROUPLIST_PGM一個rc變量,就像這樣:

GROUPLIST_PGM   => '/home/git/bin/ldap-query-groups', 

這通常是一記LDAP參考實現(如in this example),但你可以使用任何其他引用。

這可以代替傳遞似乎有問題的令牌的概念。

+0

謝謝,我會看看它並嘗試使其工作 – Sirac

+0

我還沒有嘗試過,我還有其他的事情要做。但我同意使用LDAP是要走的路。我會做別的,而不是你所建議的,但我會標記你爲答案,直到我創建一個答案來描述我所做的。 – Sirac

+0

@Sirac當然,我會upvote你的答案(只保留我的「選擇」;)) – VonC