【发布时间】:2013-07-16 14:12:58
【问题描述】:
我有一个 Apache httpd+mod_wsgi+Mercurial 设置,我想在一个钩子中获得经过身份验证的用户,特别是 pretxnchangegroup 钩子。我读过(很可能是错误的)os.environ['REMOTE_USER'] 应该包含该信息,但看起来不像。
我目前有一个扩展程序,将os.environ 打印到stderr。
import sys
import os
def pretxnchangegroup_hook(ui, repo, **kwargs):
print >> sys.stderr, 'pretxnchangegroup activated'
print >> sys.stderr, os.environ
def reposetup(ui, repo):
ui.setconfig('hooks', 'incoming.accesscontrol', pretxnchangegroup_hook)
使用hg -v push此代码输出:
remote: calling hook incoming.accesscontrol: <function pretxnchangegroup_hook at 0x7f8310221230>
remote: pretxnchangegroup activated
remote: {'LANG': 'C', 'TERM': 'xterm', 'SHLVL': '2', 'PWD': '/', 'PATH': '/sbin:/usr/sbin:/bin:/usr/bin', '_': '/usr/sbin/httpd'}
【问题讨论】:
-
我认为
os.environ['REMOTE_USER']应该这样做。这可能是一个愚蠢的问题,但您的身份验证是否有效 - 即您是否需要输入用户名和密码才能访问 Mercurial 服务器? -
一个WSGI应用下,不在os.environ中。它在环境字典中,作为每个请求的参数传递给 WSGI 应用程序。你如何在 Mercurial 代码中访问它我有节点的想法。
-
@SteveKaye:是的,身份验证正在工作。
-
@GrahamDumpleton:好吧,至少我现在知道 os.environ 不是查找该信息的好地方
标签: python apache mercurial hook mercurial-hook