【问题标题】:Subversion: Get ip-address of user in pre-commit hook?颠覆:在预提交挂钩中获取用户的 IP 地址?
【发布时间】:2011-11-23 16:54:45
【问题描述】:

我们正在托管一个用于分布式软件开发的 subversion 存储库。因此,非员工可以访问我们的一些源代码。我们公司的 IT 安全政策要求我们对从公司 Intranet 外部上传的所有文件进行病毒扫描。所有内部计算机都配备了最新的病毒扫描程序。

我们计划将病毒扫描集成到 Subversion 预提交挂钩中。但这会在执行大型提交时导致延迟。因此,我们只想扫描源自我们内部网之外的提交。为了识别来源,我们需要执行提交的用户的 IP 地址。由于我们的一些员工在家工作,我们无法使用用户名来识别来自互联网的提交。

最后我的问题是:

如何获取在颠覆预提交挂钩中执行提交的 IP 地址?

【问题讨论】:

    标签: svn pre-commit-hook virus-scanning


    【解决方案1】:

    假设你用 Perl 编写你的钩子,在这种情况下,你可以使用以下库:DocumentationClientIP

    您可以通过此链接从 Git 安装库: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)选择所有“文件”,为ESTABLISHED 选择grep(这是客户端和服务器之间的连接)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多