From cdb87f15ffa72579679ad1c76591737746905a5d Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Sat, 17 Feb 2024 14:40:33 +0900 Subject: [PATCH] Update server.py --- server.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/server.py b/server.py index 23bcf99..e007f2a 100644 --- a/server.py +++ b/server.py @@ -127,6 +127,10 @@ def proxy_connect(webserver, conn): return (conn, data) +def proxy_filter(response): + # todo + pass + def proxy_server(webserver, port, scheme, method, url, conn, addr, data): try: print("[*] Started the request. %s" % (str(addr[0]))) @@ -137,13 +141,14 @@ def proxy_server(webserver, port, scheme, method, url, conn, addr, data): except Exception as e: raise Exception("SSL negotiation failed. %s" % (str(e))) + response = b'' if server_url == "localhost": sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - + context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE - + ssl_sock = context.wrap_socket(sock, server_hostname=webserver) ssl_sock.connect((webserver, port)) ssl_sock.sendall(data) @@ -153,8 +158,10 @@ def proxy_server(webserver, port, scheme, method, url, conn, addr, data): chunk = ssl_sock.recv(buffer_size) if not chunk: break + response += chuck + proxy_filter(response) conn.send(chunk) - i = i + 1 + i += 1 print("[*] Received %s chucks. (%s bytes per chuck)" % (str(i), str(buffer_size))) else: @@ -175,15 +182,17 @@ def proxy_server(webserver, port, scheme, method, url, conn, addr, data): } } raw_data = json.dumps(proxy_data['data']) - + print("[*] Sending %s bytes..." % (str(len(raw_data)))) - + i = 0 relay = requests.post(server_url, headers=proxy_data['headers'], data=raw_data, stream=True) for chunk in relay.iter_content(chunk_size=buffer_size): + response += chuck + proxy_filter(response) conn.send(chunk) - i = i + 1 - + i += 1 + print("[*] Received %s chucks. (%s bytes per chuck)" % (str(i), str(buffer_size))) print("[*] Request and received. Done. %s" % (str(addr[0])))