From 53ffb878a94c3eae7c7f57e05568aedcfb77e57f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 24 Oct 2008 01:48:50 -0400 Subject: [PATCH] git-daemon: set REMOTE_ADDR to client address This allows hooks like pre-receive to look at the client's IP address. Of course the IP address can't be used to get strong security; git-daemon isn't the right thing to use if you need that. However, basic IP address checking can be good enough in some situations. REMOTE_ADDR is the same environment variable used to communicate the client's address to CGI scripts. Signed-off-by: Joey Hess Signed-off-by: Junio C Hamano --- Documentation/git-daemon.txt | 9 +++++++++ daemon.c | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt index b08a08cd95..f1a570a874 100644 --- a/Documentation/git-daemon.txt +++ b/Documentation/git-daemon.txt @@ -270,6 +270,15 @@ selectively enable/disable services per repository:: ---------------------------------------------------------------- +ENVIRONMENT +----------- +'git-daemon' will set REMOTE_ADDR to the IP address of the client +that connected to it, if the IP address is available. REMOTE_ADDR will +be available in the environment of hooks called when +services are performed. + + + Author ------ Written by Linus Torvalds , YOSHIFUJI Hideaki diff --git a/daemon.c b/daemon.c index 3e5582d289..b9ba44c582 100644 --- a/daemon.c +++ b/daemon.c @@ -537,6 +537,10 @@ static int execute(struct sockaddr *addr) #endif } loginfo("Connection from %s:%d", addrbuf, port); + setenv("REMOTE_ADDR", addrbuf, 1); + } + else { + unsetenv("REMOTE_ADDR"); } alarm(init_timeout ? init_timeout : timeout);