From c41cfc4bbc00661a1455a0292b365654153c3246 Mon Sep 17 00:00:00 2001 From: shelld3v <59408894+shelld3v@users.noreply.github.com> Date: Tue, 27 Oct 2020 19:09:33 +0700 Subject: [PATCH 1/3] Multiple bug fixes --- core/tcpserver.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/tcpserver.py b/core/tcpserver.py index 4a5e816..21dbdbe 100644 --- a/core/tcpserver.py +++ b/core/tcpserver.py @@ -63,18 +63,18 @@ def forward_data(self): [self.socket, sys.stdin], [], [self.socket, sys.stdin]) try: - buffer = self.socket.recv(100) + buffer = self.socket.recv(1024) while(buffer != ''): self.socket_state = True - sys.stdout.write(buffer) + sys.stdout.write(buffer.decode()) sys.stdout.flush() - buffer = self.socket.recv(100) - if(buffer == ''): - return + buffer = self.socket.recv(1024) + return except socket.error: pass + while(1): r, w, e = select.select([sys.stdin], [], [], 0) if(len(r) == 0): @@ -82,5 +82,5 @@ def forward_data(self): c = sys.stdin.read(1) if(c == ''): return - if(self.socket.sendall(c) != None): + if(self.socket.sendall(c.encode()) != None): return From 2cd05d06cf3830b50d3bd4151902efb50191a85d Mon Sep 17 00:00:00 2001 From: shelld3v <59408894+shelld3v@users.noreply.github.com> Date: Tue, 27 Oct 2020 19:55:14 +0700 Subject: [PATCH 2/3] Reset the workflow for the TCP Server --- core/tcpserver.py | 50 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/core/tcpserver.py b/core/tcpserver.py index 21dbdbe..8e43eee 100644 --- a/core/tcpserver.py +++ b/core/tcpserver.py @@ -2,6 +2,7 @@ from utils.loggers import log import sys import select +import threading class TcpServer: @@ -19,6 +20,9 @@ def __init__(self, port, timeout): if not self.socket: return + log.info("Incoming connection accepted") + + threading.Thread(target=self.receive_data).start() self.forward_data() def connect_socket(self): @@ -29,6 +33,7 @@ def connect_socket(self): else: server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + try: server.setsockopt(socket.SOL_SOCKET, socket.TCP_NODELAY, 1) except socket.error: @@ -52,35 +57,28 @@ def connect_socket(self): raise - def forward_data(self): - - log.info("Incoming connection accepted") - - self.socket.setblocking(0) - + def receive_data(self): while(1): - read_ready, write_ready, in_error = select.select( - [self.socket, sys.stdin], [], [self.socket, sys.stdin]) - + self.socket_state = True try: - buffer = self.socket.recv(1024) - while(buffer != ''): + data = '' + while 1: + packet = self.socket.recv(1024) + data += packet.decode() - self.socket_state = True + if len(packet) < 1024: + break - sys.stdout.write(buffer.decode()) - sys.stdout.flush() - buffer = self.socket.recv(1024) - return + sys.stdout.write(data) + sys.stdout.flush() except socket.error: - pass + self.socket_state = False - while(1): - r, w, e = select.select([sys.stdin], [], [], 0) - if(len(r) == 0): - break - c = sys.stdin.read(1) - if(c == ''): - return - if(self.socket.sendall(c.encode()) != None): - return + + def forward_data(self): + + self.socket.setblocking(0) + + while(1): + i = sys.stdin.read(1) + self.socket.sendall(i.encode()) From 415b3d3feff31fe3c7dce6cfc6a6cc54ab0d2480 Mon Sep 17 00:00:00 2001 From: shelld3v <59408894+shelld3v@users.noreply.github.com> Date: Tue, 27 Oct 2020 20:45:28 +0700 Subject: [PATCH 3/3] Remove an useless import --- core/tcpserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/tcpserver.py b/core/tcpserver.py index 8e43eee..b6a1bd4 100644 --- a/core/tcpserver.py +++ b/core/tcpserver.py @@ -1,9 +1,9 @@ import socket from utils.loggers import log import sys -import select import threading + class TcpServer: def __init__(self, port, timeout):