mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-26 18:18:25 +00:00
[sans-io] minor fixes, make dev server usable again
This commit is contained in:
parent
c8f1b3d7f9
commit
a4c357a1a2
@ -29,8 +29,6 @@ class ProxyConnectionHandler(server.ConnectionHandler):
|
|||||||
super().__init__(r, w, options)
|
super().__init__(r, w, options)
|
||||||
|
|
||||||
async def handle_hook(self, hook: commands.Hook) -> None:
|
async def handle_hook(self, hook: commands.Hook) -> None:
|
||||||
if isinstance(hook, commands.Log):
|
|
||||||
return # FIXME: these are already logged at the server, the "real" log messes up order.
|
|
||||||
q = asyncio.Queue()
|
q = asyncio.Queue()
|
||||||
|
|
||||||
hook.data.reply = AsyncReply(
|
hook.data.reply = AsyncReply(
|
||||||
|
@ -8,7 +8,6 @@ The counterpart to commands are events.
|
|||||||
"""
|
"""
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from mitmproxy import log
|
|
||||||
from mitmproxy.proxy2.context import Connection
|
from mitmproxy.proxy2.context import Connection
|
||||||
|
|
||||||
|
|
||||||
@ -86,7 +85,6 @@ class Hook(Command):
|
|||||||
|
|
||||||
|
|
||||||
class Log(Command):
|
class Log(Command):
|
||||||
blocking = False
|
|
||||||
message: str
|
message: str
|
||||||
level: str
|
level: str
|
||||||
|
|
||||||
|
@ -132,21 +132,42 @@ class ConnectionHandler(metaclass=abc.ABCMeta):
|
|||||||
|
|
||||||
|
|
||||||
class SimpleConnectionHandler(ConnectionHandler):
|
class SimpleConnectionHandler(ConnectionHandler):
|
||||||
"""Simple handler that does not process any hooks."""
|
"""Simple handler that does not really process any hooks."""
|
||||||
|
|
||||||
async def handle_hook(self, hook: commands.Hook) -> None:
|
hook_handlers: typing.Dict[str, typing.Callable]
|
||||||
|
|
||||||
|
def __init__(self, reader, writer, options, hooks):
|
||||||
|
super().__init__(reader, writer, options)
|
||||||
|
self.hook_handlers = hooks
|
||||||
|
|
||||||
|
async def handle_hook(
|
||||||
|
self,
|
||||||
|
hook: commands.Hook
|
||||||
|
) -> None:
|
||||||
|
if hook.name in self.hook_handlers:
|
||||||
|
self.hook_handlers[hook.name](hook.data)
|
||||||
if hook.blocking:
|
if hook.blocking:
|
||||||
self.server_event(events.HookReply(hook))
|
self.server_event(events.HookReply(hook))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
opts = moptions.Options()
|
opts = moptions.Options()
|
||||||
opts.mode = "reverse:example.com"
|
# opts.mode = "reverse:example.com"
|
||||||
|
|
||||||
async def handle(reader, writer):
|
async def handle(reader, writer):
|
||||||
await SimpleConnectionHandler(reader, writer, opts).handle_client()
|
layer_stack = [
|
||||||
|
# layers.TLSLayer,
|
||||||
|
lambda c: layers.HTTPLayer(c, HTTPMode.regular),
|
||||||
|
layers.TCPLayer,
|
||||||
|
]
|
||||||
|
|
||||||
|
def next_layer(nl: layer.NextLayer):
|
||||||
|
nl.layer = layer_stack.pop(0)(nl.context)
|
||||||
|
|
||||||
|
await SimpleConnectionHandler(reader, writer, opts, {
|
||||||
|
"next_layer": next_layer
|
||||||
|
}).handle_client()
|
||||||
|
|
||||||
coro = asyncio.start_server(handle, '127.0.0.1', 8080, loop=loop)
|
coro = asyncio.start_server(handle, '127.0.0.1', 8080, loop=loop)
|
||||||
server = loop.run_until_complete(coro)
|
server = loop.run_until_complete(coro)
|
||||||
|
Loading…
Reference in New Issue
Block a user