Ticket #412 (closed defect: fixed)
Translogger uses REMOTE_ADDR even when HTTP_X_FORWARDED_FOR is present
| Reported by: | sgala | Owned by: | ianb |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.4.1 |
| Component: | paste | Version: | svn-trunk |
| Severity: | normal | Keywords: | |
| Cc: |
Description
When paste is transparently proxied, REMOTE_ADDR is always the proxy address. If the HTTP_X_FORWARDED_FOR header is present, it indicates the original client address. The following patch solves it in a transparent way (if HTTP_X_FORWARDED_FOR is not present it falls back on REMOTE_ADDR)
$ diff -u translogger.py.orig /usr/share/pyshared/paste/translogger.py --- translogger.py.orig 2010-03-13 13:09:54.549933880 +0100 +++ /usr/share/pyshared/paste/translogger.py 2010-03-13 12:23:05.461932856 +0100 @@ -79,7 +79,7 @@
elif offset < 0:
offset = "%0.4d" % (offset)
d = {
- 'REMOTE_ADDR': environ.get('REMOTE_ADDR') or '-', + 'REMOTE_ADDR': environ.get('HTTP_X_FORWARDED_FOR') or environ.get('REMOTE_ADDR') or '-',
'REMOTE_USER': environ.get('REMOTE_USER') or '-', 'REQUEST_METHOD': method, 'REQUEST_URI': req_uri,
