Codebase list django-ipware / 8a0d05f
New upstream version 2.0.2 James Valleroy 6 years ago
6 changed file(s) with 43 addition(s) and 10 deletion(s). Raw diff Collapse all Expand all
1010 - "pypy3"
1111
1212 env:
13 - DJANGO="django==2.0.1"
14 - DJANGO="django==1.11.9"
15 - DJANGO="django==1.8.18"
13 - DJANGO="django==2.0.4"
14 - DJANGO="django==1.11.12"
1615
1716 install:
1817 - pip install $DJANGO
2827 matrix:
2928 exclude:
3029 - python: "2.7"
31 env: DJANGO="django==2.0.1"
30 env: DJANGO="django==2.0.4"
3231 - python: "pypy"
33 env: DJANGO="django==2.0.1"
32 env: DJANGO="django==2.0.4"
3433
3534 script: coverage run --source=ipware manage.py test
3635
0 ## 2.0.2
1
2 Enhancement:
3 - Added the ability to private the request precedence order on each call
4
05 ## 2.0.1
16
27 Enhancement:
6565 ```python
6666 # The default meta precedence order
6767 IPWARE_META_PRECEDENCE_ORDER = (
68 'HTTP_X_FORWARDED_FOR', 'X_FORWARDED_FOR', # <client>, <proxy1>, <proxy2
68 'HTTP_X_FORWARDED_FOR', 'X_FORWARDED_FOR', # <client>, <proxy1>, <proxy2>
6969 'HTTP_CLIENT_IP',
7070 'HTTP_X_REAL_IP',
7171 'HTTP_X_FORWARDED',
7676 'REMOTE_ADDR',
7777 )
7878 ```
79
79 **Alternativley**, you can provide your custom `request header meta precedence order` when calling `get_client_ip()`.
80 ```python
81 get_client_ip(request, request_header_order=['X_FORWARDED_FOR'])
82 get_client_ip(request, request_header_order=['X_FORWARDED_FOR', 'HTTP_X_FORWARDED_FOR'])
83 ```
8084
8185 - ### Private Prefixes
8286
44
55 __author__ = 'Val Neekman @ Neekware Inc. [@vneekman]'
66 __description__ = "A Django application to retrieve user's IP address"
7 __version__ = '2.0.1'
7 __version__ = '2.0.2'
55 request,
66 proxy_order='left-most',
77 proxy_count=None,
8 proxy_trusted_ips=None
8 proxy_trusted_ips=None,
9 request_header_order=None,
910 ):
1011 client_ip = None
1112 routable = False
1617 if proxy_trusted_ips is None:
1718 proxy_trusted_ips = []
1819
19 for key in defs.IPWARE_META_PRECEDENCE_ORDER:
20 if request_header_order is None:
21 request_header_order = defs.IPWARE_META_PRECEDENCE_ORDER
22
23 for key in request_header_order:
2024 value = util.get_request_meta(request, key)
2125 if value:
2226 ips, ip_count = util.get_ips_from_string(value)
229229 }
230230 ip = get_client_ip(request)
231231 self.assertEqual(ip, ("100.128.0.9", True))
232
233 def test_request_header_order_specific(self):
234 request = HttpRequest()
235 request.META = {
236 'HTTP_X_REAL_IP': '192.168.1.1',
237 'REMOTE_ADDR': '177.139.233.139',
238 'HTTP_X_FORWARDED_FOR': '177.139.233.139, 198.84.193.157, 198.84.193.158',
239 }
240 ip = get_client_ip(request, request_header_order=['HTTP_X_FORWARDED_FOR'])
241 self.assertEqual(ip, ("177.139.233.139", True))
242
243
244 def test_request_header_order_multiple(self):
245 request = HttpRequest()
246 request.META = {
247 'HTTP_X_FORWARDED_FOR': '177.139.233.139, 198.84.193.157, 198.84.193.158',
248 'X_FORWARDED_FOR': '177.139.233.138, 198.84.193.157, 198.84.193.158',
249 'REMOTE_ADDR': '177.139.233.133',
250 }
251 ip = get_client_ip(request, request_header_order=['X_FORWARDED_FOR', 'HTTP_X_FORWARDED_FOR'])
252 self.assertEqual(ip, ("177.139.233.138", True))