summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2014-06-02 09:45:54 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2014-06-02 09:45:54 -0300
commit4f989942feca2fa898eb5b70ea18bb22fcfa6c63 (patch)
tree80b3752b99219b705cbb6a30f3029d7b4c9b7a45
parentb437c64afc770cf6703ea8dd60a064ba8842a3cb (diff)
downloadaskbot-4f989942feca2fa898eb5b70ea18bb22fcfa6c63.tar.gz
askbot-4f989942feca2fa898eb5b70ea18bb22fcfa6c63.tar.bz2
askbot-4f989942feca2fa898eb5b70ea18bb22fcfa6c63.zip
added remote ip fixer middleware
-rw-r--r--askbot/middleware/remote_ip.py21
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