diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2014-06-02 09:45:54 -0300 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2014-06-02 09:45:54 -0300 |
commit | 4f989942feca2fa898eb5b70ea18bb22fcfa6c63 (patch) | |
tree | 80b3752b99219b705cbb6a30f3029d7b4c9b7a45 | |
parent | b437c64afc770cf6703ea8dd60a064ba8842a3cb (diff) | |
download | askbot-4f989942feca2fa898eb5b70ea18bb22fcfa6c63.tar.gz askbot-4f989942feca2fa898eb5b70ea18bb22fcfa6c63.tar.bz2 askbot-4f989942feca2fa898eb5b70ea18bb22fcfa6c63.zip |
added remote ip fixer middleware
-rw-r--r-- | askbot/middleware/remote_ip.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/askbot/middleware/remote_ip.py b/askbot/middleware/remote_ip.py new file mode 100644 index 00000000..18280d0d --- /dev/null +++ b/askbot/middleware/remote_ip.py @@ -0,0 +1,21 @@ +"""Fixes REMOTE_IP meta value +based on the HTTP_X_FORWARDED_FOR value, if used. +Enable this middleware if using django site behind a proxy +server or a load balancer. + +Add to the MIDDLEWARE_CLASSES: + + 'askbot.middleware.remote_ip.SetRemoteIPFromXForwardedFor', +""" + +class SetRemoteIPFromXForwardedFor(object): + def process_request(self, request): + try: + real_ip = request.META['HTTP_X_FORWARDED_FOR'] + except KeyError: + pass + else: + # HTTP_X_FORWARDED_FOR can be a comma-separated list of IPs. + # Take just the first one. + real_ip = real_ip.split(",")[0] + request.META['REMOTE_ADDR'] = real_ip |