# HG changeset patch # User Marcin Kuzminski # Date 2012-04-12 20:49:13 # Node ID 79e4d6b9c1f0535c21db325e3ff9b3d140ceaade # Parent 9d27481228a1bff00a87d407a3dd5f35dc8a2e39 Added HTTP_X_FORWARDED_FOR as another method of extracting IP for pull/push logs. - moved all to base controller diff --git a/rhodecode/lib/base.py b/rhodecode/lib/base.py --- a/rhodecode/lib/base.py +++ b/rhodecode/lib/base.py @@ -116,6 +116,17 @@ class BaseVCSController(object): return True + def _get_ip_addr(self, environ): + proxy_key = 'HTTP_X_REAL_IP' + proxy_key2 = 'HTTP_X_FORWARDED_FOR' + def_key = 'REMOTE_ADDR' + + return environ.get(proxy_key2, + environ.get(proxy_key, + environ.get(def_key, '0.0.0.0') + ) + ) + def __call__(self, environ, start_response): start = time.time() try: diff --git a/rhodecode/lib/middleware/simplegit.py b/rhodecode/lib/middleware/simplegit.py --- a/rhodecode/lib/middleware/simplegit.py +++ b/rhodecode/lib/middleware/simplegit.py @@ -99,9 +99,7 @@ class SimpleGit(BaseVCSController): if not is_git(environ): return self.application(environ, start_response) - proxy_key = 'HTTP_X_REAL_IP' - def_key = 'REMOTE_ADDR' - ipaddr = environ.get(proxy_key, environ.get(def_key, '0.0.0.0')) + ipaddr = self._get_ip_addr(environ) username = None # skip passing error to error controller environ['pylons.status_code_redirect'] = True diff --git a/rhodecode/lib/middleware/simplehg.py b/rhodecode/lib/middleware/simplehg.py --- a/rhodecode/lib/middleware/simplehg.py +++ b/rhodecode/lib/middleware/simplehg.py @@ -69,9 +69,7 @@ class SimpleHg(BaseVCSController): if not is_mercurial(environ): return self.application(environ, start_response) - proxy_key = 'HTTP_X_REAL_IP' - def_key = 'REMOTE_ADDR' - ipaddr = environ.get(proxy_key, environ.get(def_key, '0.0.0.0')) + ipaddr = self._get_ip_addr(environ) # skip passing error to error controller environ['pylons.status_code_redirect'] = True