2011-09-23 47 views
2

我們正在爲分佈式軟件開發託管一個subversion版本庫。所以非員工可以訪問我們的一些sorce代碼。我們公司的IT安全政策要求我們對所有從公司內部網以外上傳的文件進行病毒掃描。所有內部電腦都配備了最新的病毒掃描儀。Subversion:在pre-commit hook中獲取用戶的ip地址?

我們正計劃在Subversion precommit-hook中整合病毒掃描。但是這會在執行大型提交時導致延遲。所以我們只想掃描發自我們內部網之外的提交。爲了識別來源,我們需要執行提交的用戶的IP地址。由於我們的一些員工在家工作,我們不能使用用戶名來識別來自互聯網的提交。

因此最後我的問題:

我怎樣才能從中提交IST在顛覆進行預提交掛鉤IP-ADRESS?

回答

2

讓我想象你寫在Perl你的鉤子,在這種情況下,你可以使用下面的lib:DocumentationClientIP

你可以從Git的通過這個鏈接安裝的lib:GITClientIP(或使用包含的代碼) 。

安裝後,你需要添加像在你的代碼的東西:

use SVN::Utils::ClientIP qw(ssh_client_ip); 

    print "The client's IP address is ", ssh_client_ip(); 
2

我使用lsof的(的bash腳本預提交):

srcip=$(/usr/sbin/lsof -Pn -p $PPID | grep ESTABLISHED)

,或者僅獲得IP:

srcip=$(/usr/sbin/lsof -Pn|grep ssh|grep ESTA|cut -d\> -f 2|cut -d: -f 1)

當客戶端連接到服務器時,執行預先提交。 lsof顯示所有打開的文件(包括TCP連接等);我選擇此進程的所有「文件」(-p $PPID)和grep的ESTABLISHED(這是客戶端和服務器之間的連接)。