diff --git a/app/src/proxy.py b/app/src/proxy.py index ff7e6b8..eeadb55 100644 --- a/app/src/proxy.py +++ b/app/src/proxy.py @@ -1,33 +1,34 @@ -import asyncio, logging, traceback, weakref +import asyncio, logging, traceback from async_stream import AsyncStream class Proxy: def __init__ (proxy, reader, writer, addr): - proxy.__ServerStream = AsyncStream(proxy, reader, writer, addr) - proxy.__ClientStream = None + proxy.ServerStream = AsyncStream(proxy, reader, writer, addr) + proxy.ClientStream = None async def server_loop(proxy, addr): logging.info(f'Accept connection from {addr}') - await proxy.__ServerStream.loop() - logging.info(f'Stopped server connection loop {addr}') + await proxy.ServerStream.loop() + logging.info(f'Close server connection {addr}') - if proxy.__ClientStream: - logging.debug ("disconnect client connection") - proxy.__ClientStream.disc() + if proxy.ClientStream: + logging.debug ("close client connection") + proxy.ClientStream.close() async def client_loop(proxy, addr): - await proxy.__ClientStream.loop() - logging.info(f'Stopped client connection loop {addr}') - proxy.__ClientStream = None + await proxy.ClientStream.loop() + logging.info(f'Close client connection {addr}') + proxy.ServerStream.remoteStream = None + proxy.ClientStream = None - async def CreateClientStream (proxy, host, port): + async def CreateClientStream (proxy, stream, host, port): addr = (host, port) try: logging.info(f'Connected to {addr}') connect = asyncio.open_connection(host, port) reader, writer = await connect - proxy.__ClientStream = AsyncStream(proxy, reader, writer, addr, weakref.ref(proxy.__ServerStream), server_side=False) + proxy.ClientStream = AsyncStream(proxy, reader, writer, addr, stream, server_side=False) asyncio.create_task(proxy.client_loop(addr)) except ConnectionRefusedError as error: @@ -36,7 +37,7 @@ class Proxy: logging.error( f"Proxy: Exception for {addr}:\n" f"{traceback.format_exc()}") - return weakref.ref(proxy.__ClientStream) + return proxy.ClientStream def __del__ (proxy): - logging.info ("Proxy __del__") \ No newline at end of file + logging.debug ("Proxy __del__") \ No newline at end of file