Skip to content

Commit

Permalink
Changes as per [PR #54](muccg/django-iprestrict#54)
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter Dermott committed Aug 26, 2020
1 parent 997e25e commit 110396d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
2 changes: 1 addition & 1 deletion iprestrict/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def extract_client_ip(self, request):
def get_forwarded_for(self, request):
hdr = request.META.get('HTTP_X_FORWARDED_FOR')
if hdr is not None:
return [ip.strip() for ip in hdr.split(',')]
return [ip.strip() for ip in hdr.split(',') if ip != 'unknown']
else:
return []

Expand Down
18 changes: 13 additions & 5 deletions tests/test_middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ class MiddlewareExtractClientIpTest(TestCase):
def setUp(self):
self.middleware = IPRestrictMiddleware()
self.factory = RequestFactory()

def test_remote_addr_only(self):
self.middleware = IPRestrictMiddleware()
request = self.factory.get('', REMOTE_ADDR=LOCAL_IP)
Expand All @@ -111,6 +111,14 @@ def test_remote_addr_empty(self):
client_ip = self.middleware.extract_client_ip(request)
self.assertEquals(client_ip, '')

@override_settings(IPRESTRICT_TRUST_ALL_PROXIES=True)
def test_ignore_bad_forwarded_addr(self):
self.middleware = IPRestrictMiddleware()
request = self.factory.get('', REMOTE_ADDR=LOCAL_IP, HTTP_X_FORWARDED_FOR="unknown,1.2.3.4")

client_ip = self.middleware.extract_client_ip(request)
self.assertEquals(client_ip, '1.2.3.4')

@override_settings(IPRESTRICT_TRUSTED_PROXIES=(PROXY,))
def test_single_proxy(self):
self.middleware = IPRestrictMiddleware()
Expand All @@ -123,9 +131,9 @@ def test_single_proxy(self):
def test_multiple_proxies_one_not_trusted(self):
self.middleware = IPRestrictMiddleware()
proxies = ['2.2.2.2', '3.3.3.3', '4.4.4.4']
request = self.factory.get('', REMOTE_ADDR=PROXY,
request = self.factory.get('', REMOTE_ADDR=PROXY,
HTTP_X_FORWARDED_FOR = ', '.join([LOCAL_IP] + proxies))

try:
client_ip = self.middleware.extract_client_ip(request)
except exceptions.PermissionDenied:
Expand All @@ -137,9 +145,9 @@ def test_multiple_proxies_one_not_trusted(self):
def test_multiple_proxies_all_trusted(self):
self.middleware = IPRestrictMiddleware()
proxies = ['2.2.2.2', '3.3.3.3', '4.4.4.4']
request = self.factory.get('', REMOTE_ADDR=PROXY,
request = self.factory.get('', REMOTE_ADDR=PROXY,
HTTP_X_FORWARDED_FOR = ', '.join([LOCAL_IP] + proxies))

client_ip = self.middleware.extract_client_ip(request)
self.assertEquals(client_ip, LOCAL_IP)

Expand Down

0 comments on commit 110396d

Please sign in to comment.