Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions castle/context/get_default.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from castle.headers.filter import HeadersFilter
from castle.client_id.extract import ClientIdExtract
from castle.headers.extract import HeadersExtract
from castle.ip.extract import IPExtract
from castle.ips.extract import IPsExtract

__version__ = VERSION

Expand All @@ -28,7 +28,7 @@ def call(self):
return context

def _ip(self):
return IPExtract(self.pre_headers).call()
return IPsExtract(self.pre_headers).call()

def _client_id(self):
return ClientIdExtract(self.pre_headers, self.cookies).call()
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion castle/ip/extract.py → castle/ips/extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
DEPTH_RELATED = ['X-Forwarded-For']


class IPExtract(object):
class IPsExtract(object):
def __init__(self, headers, config=configuration):
self.headers = headers
if len(config.ip_headers) > 0:
Expand Down
2 changes: 1 addition & 1 deletion castle/test/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
'castle.test.headers.extract_test',
'castle.test.headers.filter_test',
'castle.test.headers.format_test',
'castle.test.ip.extract_test',
'castle.test.ips.extract_test',
'castle.test.logger_test',
'castle.test.payload.prepare_test',
'castle.test.secure_mode_test',
Expand Down
20 changes: 10 additions & 10 deletions castle/test/ip/extract_test.py → castle/test/ips/extract_test.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@

from castle.test import unittest
from castle.ip.extract import IPExtract
from castle.ips.extract import IPsExtract
from castle.configuration import configuration


class IPExtractTestCase(unittest.TestCase):
class IPsExtractTestCase(unittest.TestCase):
def tearDown(self):
configuration.ip_headers = []
configuration.trusted_proxies = []
Expand All @@ -13,21 +13,21 @@ def tearDown(self):

def test_extract_ip(self):
headers = {'X-Forwarded-For': '1.2.3.5'}
self.assertEqual(IPExtract(headers).call(), '1.2.3.5')
self.assertEqual(IPsExtract(headers).call(), '1.2.3.5')

def test_extract_ip_when_second_header(self):
headers = {'Cf-Connecting-Ip': '1.2.3.4', 'X-Forwarded-For': '1.1.1.1, 1.2.2.2, 1.2.3.5'}
configuration.ip_headers = ["HTTP_CF_CONNECTING_IP", "X-Forwarded-For"]
self.assertEqual(
IPExtract(headers).call(),
IPsExtract(headers).call(),
'1.2.3.4'
)

def test_extract_ip_when_second_header_with_different_setting(self):
headers = {'Cf-Connecting-Ip': '1.2.3.4', 'X-Forwarded-For': '1.1.1.1, 1.2.2.2, 1.2.3.5'}
configuration.ip_headers = ["CF-CONNECTING-IP", "X-Forwarded-For"]
self.assertEqual(
IPExtract(headers).call(),
IPsExtract(headers).call(),
'1.2.3.4'
)

Expand All @@ -37,7 +37,7 @@ def test_extract_ip_when_all_trusted_proxies(self):
"""
headers = {'Remote-Addr': '127.0.0.1', 'X-Forwarded-For': xf_header}
self.assertEqual(
IPExtract(headers).call(),
IPsExtract(headers).call(),
'127.0.0.1'
)

Expand All @@ -48,7 +48,7 @@ def test_extract_ip_when_trust_proxy_chain(self):
headers = {'Remote-Addr': '6.6.6.4', 'X-Forwarded-For': xf_header}
configuration.trust_proxy_chain = True
self.assertEqual(
IPExtract(headers).call(),
IPsExtract(headers).call(),
'6.6.6.6'
)

Expand All @@ -59,21 +59,21 @@ def test_extract_ip_when_trust_proxy_depth(self):
headers = {'Remote-Addr': '6.6.6.4', 'X-Forwarded-For': xf_header}
configuration.trusted_proxy_depth = 1
self.assertEqual(
IPExtract(headers).call(),
IPsExtract(headers).call(),
'2.2.2.3'
)

def test_extract_ip_for_spoof_ip_attempt(self):
headers = {'Client-Ip': '6.6.6.6', 'X-Forwarded-For': '6.6.6.6, 2.2.2.3, 192.168.0.7'}
self.assertEqual(
IPExtract(headers).call(),
IPsExtract(headers).call(),
'2.2.2.3'
)

def test_extract_ip_for_spoof_ip_attempt_when_all_trusted_proxies(self):
headers = {'Client-Ip': '6.6.6.6', 'X-Forwarded-For': '6.6.6.6, 2.2.2.3, 192.168.0.7'}
configuration.trusted_proxies = [r'^2.2.2.\d$']
self.assertEqual(
IPExtract(headers).call(),
IPsExtract(headers).call(),
'6.6.6.6'
)