Skip to content
Snippets Groups Projects
Commit 1b09e75f authored by Chris Hines's avatar Chris Hines
Browse files

cleanup some parts of twsproxy

parent 6a164d97
No related branches found
No related tags found
4 merge requests!77Revert "disable agressive kill and restart",!37Test,!36Dev,!35Dev
Pipeline #11103 passed
......@@ -3,11 +3,9 @@ def tesserver():
app.config['ENABLELAUNCH'] = True
from flask_cors import CORS, cross_origin
CORS(app, supports_credentials=True, origin="*")
print("try to run tesserver")
app.run(host='localhost',debug=False,port=8080)
print('app is running')
def tws():
def tws(stop=None):
from twsproxy import server
import sys
import os
......@@ -19,21 +17,29 @@ def tws():
port = int(sys.argv[1])
except:
port = 8090
server = server.TWSServer(port,5)
logger.debug("initialised server object")
server = server.TWSServer(port,5,stop)
server.run()
def stopThreads(signum,frame,event,old_handler):
import logging
logger = logging.getLogger()
event.set()
if callable(old_handler):
old_handler(signum,frame)
return
def main():
import logging
import signal
logging.basicConfig(filename="tes.log",format="%(asctime)s %(levelname)s:%(process)s: %(message)s")
logger=logging.getLogger()
logger.setLevel(logging.DEBUG)
old_handler = signal.getsignal(signal.SIGINT)
signal.signal(signal.SIGINT, lambda x,y: stopThreads(x,y,stop,old_handler))
import threading
print("create thread")
twsthread = threading.Thread(target=tws)
stop=threading.Event()
twsthread = threading.Thread(target=tws,args=[stop])
twsthread.start()
print("thread started")
tesserver()
twsthread.join()
......
......@@ -126,55 +126,6 @@ class TWSProxy(threading.Thread):
raise RuntimeError("socket connection broken")
totalsent = totalsent + sent
@staticmethod
def twosocks(client,server,initshutdown):
import threading
logger=logging.getLogger()
closed = False
clientopen = True
serveropen = True
shuttype = socket.SHUT_RD
while serveropen or clientopen:
r,w,e = select.select([client,server],[],[],TWSProxy.TIMEOUT)
if client in r:
try:
buff = client.recv(TWSProxy.MAXBUFF)
msglength = len(buff)
if msglength > 0:
TWSProxy.reliablesend(server,buff,msglength)
else:
clientopen = False
server.shutdown(shuttype)
except:
clientopen = False
if server in r:
try:
buff = server.recv(TWSProxy.MAXBUFF)
msglength = len(buff)
if msglength > 0:
TWSProxy.reliablesend(client,buff,msglength)
else:
client.shutdown(shuttype)
# print("server closed socket for reading")
serveropen = False
except:
serveropen = False
# If the client has finished sending, and we've finished transmitting to the server
# The server may still have some data to transmit to the client
closed = False
while not closed:
r,w,e = select.select([server],[],[],TWSProxy.TIMEOUT)
buff = server.recv(TWSProxy.MAXBUFF)
msglength = len(buff)
if msglength > 0:
try:
TWSProxy.reliablesend(client,buff,msglength)
except BrokenPipeError as e:
pass
else:
closed = True
@staticmethod
def sockcopy(src,dest,initshutdown):
......
......@@ -4,24 +4,24 @@ import logging
class TWSServer:
import socket
def __init__(self,port,maxconn):
def __init__(self,port,maxconn,stop=None):
self.port = port
print('init tws proxy')
print(port)
self.maxconn = maxconn
if stop is None:
self.stop = threading.Event()
else:
self.stop = stop
def run(self):
logger = logging.getLogger()
serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
print(serversocket)
serversocket.settimeout(5)
#bind the socket to a public host,
# and a well-known port
for port in range(self.port,self.port+1):
try:
print('try bind to {}'.format(port))
serversocket.bind(('0.0.0.0', port))
print("bind success")
#become a server socket
serversocket.listen(self.maxconn)
break
......@@ -30,8 +30,11 @@ class TWSServer:
print(e)
pass
openconnections = []
while 1:
(clientsocket, address) = serversocket.accept()
while not self.stop.is_set():
try:
(clientsocket, address) = serversocket.accept()
except socket.timeout:
continue
clientsocket.setblocking(True)
tunnel = TWSProxy(clientsocket)
tunnel.daemon = True
......@@ -42,3 +45,4 @@ class TWSServer:
c.join()
openconnections.remove(c)
serversocket.close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment