mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-02 00:05:27 +00:00
fix #3024
This commit is contained in:
parent
5f74adc2df
commit
54e2daa21e
@ -14,11 +14,13 @@ class AllowRemote:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def clientconnect(self, layer):
|
def clientconnect(self, layer):
|
||||||
address = layer.client_conn.address
|
address = ipaddress.ip_address(layer.client_conn.address[0])
|
||||||
|
if isinstance(address, ipaddress.IPv6Address):
|
||||||
|
address = address.ipv4_mapped or address
|
||||||
|
|
||||||
accept_connection = (
|
accept_connection = (
|
||||||
ctx.options.allow_remote or
|
ctx.options.allow_remote or
|
||||||
ipaddress.ip_address(address[0]).is_private or
|
ipaddress.ip_address(address).is_private or
|
||||||
ctx.options.proxyauth is not None
|
ctx.options.proxyauth is not None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -5,27 +5,49 @@ from mitmproxy.addons import allowremote, proxyauth
|
|||||||
from mitmproxy.test import taddons
|
from mitmproxy.test import taddons
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("allow_remote, ip, should_be_killed", [
|
@pytest.mark.parametrize("allow_remote, should_be_killed, address", [
|
||||||
(True, "192.168.1.3", False),
|
(True, False, ("10.0.0.1",)),
|
||||||
(True, "122.176.243.101", False),
|
(True, False, ("172.20.0.1",)),
|
||||||
(False, "192.168.1.3", False),
|
(True, False, ("192.168.1.1",)),
|
||||||
(False, "122.176.243.101", True),
|
(True, False, ("1.1.1.1",)),
|
||||||
(True, "::ffff:1:2", False),
|
(True, False, ("8.8.8.8",)),
|
||||||
(True, "fe80::", False),
|
(True, False, ("216.58.207.174",)),
|
||||||
(True, "2001:4860:4860::8888", False),
|
(True, False, ("::ffff:1.1.1.1",)),
|
||||||
(False, "::ffff:1:2", False),
|
(True, False, ("::ffff:8.8.8.8",)),
|
||||||
(False, "fe80::", False),
|
(True, False, ("::ffff:216.58.207.174",)),
|
||||||
(False, "2001:4860:4860::8888", True),
|
(True, False, ("::ffff:10.0.0.1",)),
|
||||||
|
(True, False, ("::ffff:172.20.0.1",)),
|
||||||
|
(True, False, ("::ffff:192.168.1.1",)),
|
||||||
|
(True, False, ("fe80::",)),
|
||||||
|
(True, False, ("2001:4860:4860::8888",)),
|
||||||
|
(False, False, ("10.0.0.1",)),
|
||||||
|
(False, False, ("172.20.0.1",)),
|
||||||
|
(False, False, ("192.168.1.1",)),
|
||||||
|
(False, True, ("1.1.1.1",)),
|
||||||
|
(False, True, ("8.8.8.8",)),
|
||||||
|
(False, True, ("216.58.207.174",)),
|
||||||
|
(False, True, ("::ffff:1.1.1.1",)),
|
||||||
|
(False, True, ("::ffff:8.8.8.8",)),
|
||||||
|
(False, True, ("::ffff:216.58.207.174",)),
|
||||||
|
(False, False, ("::ffff:10.0.0.1",)),
|
||||||
|
(False, False, ("::ffff:172.20.0.1",)),
|
||||||
|
(False, False, ("::ffff:192.168.1.1",)),
|
||||||
|
(False, False, ("fe80::",)),
|
||||||
|
(False, True, ("2001:4860:4860::8888",)),
|
||||||
])
|
])
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_allowremote(allow_remote, ip, should_be_killed):
|
async def test_allowremote(allow_remote, should_be_killed, address):
|
||||||
|
if allow_remote:
|
||||||
|
# prevent faulty tests
|
||||||
|
assert not should_be_killed
|
||||||
|
|
||||||
ar = allowremote.AllowRemote()
|
ar = allowremote.AllowRemote()
|
||||||
up = proxyauth.ProxyAuth()
|
up = proxyauth.ProxyAuth()
|
||||||
with taddons.context(ar, up) as tctx:
|
with taddons.context(ar, up) as tctx:
|
||||||
tctx.options.allow_remote = allow_remote
|
tctx.options.allow_remote = allow_remote
|
||||||
|
|
||||||
with mock.patch('mitmproxy.proxy.protocol.base.Layer') as layer:
|
with mock.patch('mitmproxy.proxy.protocol.base.Layer') as layer:
|
||||||
layer.client_conn.address = (ip, 12345)
|
layer.client_conn.address = address
|
||||||
|
|
||||||
ar.clientconnect(layer)
|
ar.clientconnect(layer)
|
||||||
if should_be_killed:
|
if should_be_killed:
|
||||||
|
Loading…
Reference in New Issue
Block a user