Skip to content

Commit

Permalink
remove multi thread
Browse files Browse the repository at this point in the history
  • Loading branch information
esdeathlove committed Feb 13, 2017
1 parent f6f1ed5 commit 7ce2dc3
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 140 deletions.
1 change: 0 additions & 1 deletion apiconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
CLOUDSAFE = 1
ANTISSATTACK = 0
AUTOEXEC = 0
MULTI_THREAD = 0

MU_SUFFIX = 'zhaoj.in'
MU_REGEX = '%5m%id.%suffix'
Expand Down
3 changes: 0 additions & 3 deletions db_transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -493,9 +493,6 @@ def del_server_out_of_bound_safe(self, last_rows, rows):
logging.error('more than one user use the same port [%s]' % (port,))
continue

if get_config().MULTI_THREAD == 0:
cfg['node_speedlimit'] = 0.00

if cfg['is_multi_user'] != 0:
cfg['users_table'] = md5_users.copy()
self.mu_port_list.append(port)
Expand Down
165 changes: 52 additions & 113 deletions server_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,121 +121,60 @@ def new_server(self, port, user_config):
port = int(port)
ipv6_ok = False

if user_config['node_speedlimit'] == 0.00:
if 'server_ipv6' in self.config:
if port in self.tcp_ipv6_servers_pool:
logging.info("server already at %s:%d" % (self.config['server_ipv6'], port))
return 'this port server is already running'
else:
a_config = self.config.copy()
a_config.update(user_config)
if len(a_config['server_ipv6']) > 2 and a_config['server_ipv6'][0] == "[" and a_config['server_ipv6'][-1] == "]":
a_config['server_ipv6'] = a_config['server_ipv6'][1:-1]
a_config['server'] = a_config['server_ipv6']
a_config['server_port'] = port
a_config['max_connect'] = 128
a_config['method'] = common.to_str(a_config['method'])
try:
logging.info("starting server at [%s]:%d" % (common.to_str(a_config['server']), port))

tcp_server = tcprelay.TCPRelay(a_config, self.dns_resolver, False, stat_counter=self.stat_counter)
tcp_server.add_to_loop(self.loop)
self.tcp_ipv6_servers_pool.update({port: tcp_server})


udp_server = udprelay.UDPRelay(a_config, self.dns_resolver, False, stat_counter=self.stat_counter)
udp_server.add_to_loop(self.loop)
self.udp_ipv6_servers_pool.update({port: udp_server})

if common.to_str(a_config['server_ipv6']) == "::":
ipv6_ok = True
except Exception as e:
logging.warn("IPV6 %s " % (e,))

if 'server' in self.config:
if port in self.tcp_servers_pool:
logging.info("server already at %s:%d" % (common.to_str(self.config['server']), port))
return 'this port server is already running'
else:
a_config = self.config.copy()
a_config.update(user_config)
a_config['server_port'] = port
a_config['max_connect'] = 128
a_config['method'] = common.to_str(a_config['method'])
try:
logging.info("starting server at %s:%d" % (common.to_str(a_config['server']), port))

tcp_server = tcprelay.TCPRelay(a_config, self.dns_resolver, False)
tcp_server.add_to_loop(self.loop)
self.tcp_servers_pool.update({port: tcp_server})

udp_server = udprelay.UDPRelay(a_config, self.dns_resolver, False)
udp_server.add_to_loop(self.loop)
self.udp_servers_pool.update({port: udp_server})

except Exception as e:
if not ipv6_ok:
logging.warn("IPV4 %s " % (e,))
else:
self.dns_resolver_pool[port] = self.dns_resolver = asyncdns.DNSResolver()
self.eventloop_pool[port] = eventloop.EventLoop()
self.thread_pool[port] = MainThread( (self.eventloop_pool[port], self.dns_resolver_pool[port], self.mgr) )
self.thread_pool[port].start()
if 'server_ipv6' in self.config:
if port in self.tcp_ipv6_servers_pool:
logging.info("server already at %s:%d" % (self.config['server_ipv6'], port))
return 'this port server is already running'
else:
a_config = self.config.copy()
a_config.update(user_config)
if len(a_config['server_ipv6']) > 2 and a_config['server_ipv6'][0] == "[" and a_config['server_ipv6'][-1] == "]":
a_config['server_ipv6'] = a_config['server_ipv6'][1:-1]
a_config['server'] = a_config['server_ipv6']
a_config['server_port'] = port
a_config['max_connect'] = 128
a_config['method'] = common.to_str(a_config['method'])
try:
logging.info("starting server at [%s]:%d" % (common.to_str(a_config['server']), port))

tcp_server = tcprelay.TCPRelay(a_config, self.dns_resolver, False, stat_counter=self.stat_counter)
tcp_server.add_to_loop(self.loop)
self.tcp_ipv6_servers_pool.update({port: tcp_server})

if 'server_ipv6' in self.config:
if port in self.tcp_ipv6_servers_pool:
logging.info("server already at %s:%d" % (self.config['server_ipv6'], port))
return 'this port server is already running'
else:
a_config = self.config.copy()
a_config.update(user_config)
if len(a_config['server_ipv6']) > 2 and a_config['server_ipv6'][0] == "[" and a_config['server_ipv6'][-1] == "]":
a_config['server_ipv6'] = a_config['server_ipv6'][1:-1]
a_config['server'] = a_config['server_ipv6']
a_config['server_port'] = port
a_config['max_connect'] = 128
a_config['method'] = common.to_str(a_config['method'])
try:
logging.info("starting server at [%s]:%d" % (common.to_str(a_config['server']), port))

tcp_server = tcprelay.TCPRelay(a_config, self.dns_resolver_pool[port], False, stat_counter=self.stat_counter)
tcp_server.add_to_loop(self.eventloop_pool[port])
self.tcp_ipv6_servers_pool.update({port: tcp_server})

udp_server = udprelay.UDPRelay(a_config, self.dns_resolver_pool[port], False, stat_counter=self.stat_counter)
udp_server.add_to_loop(self.eventloop_pool[port])
self.udp_ipv6_servers_pool.update({port: udp_server})

if common.to_str(a_config['server_ipv6']) == "::":
ipv6_ok = True
except Exception as e:
logging.warn("IPV6 %s " % (e,))

if 'server' in self.config:
if port in self.tcp_servers_pool:
logging.info("server already at %s:%d" % (common.to_str(self.config['server']), port))
return 'this port server is already running'
else:
a_config = self.config.copy()
a_config.update(user_config)
a_config['server_port'] = port
a_config['max_connect'] = 128
a_config['method'] = common.to_str(a_config['method'])
try:
logging.info("starting server at %s:%d" % (common.to_str(a_config['server']), port))

tcp_server = tcprelay.TCPRelay(a_config, self.dns_resolver_pool[port], False)
tcp_server.add_to_loop(self.eventloop_pool[port])
self.tcp_servers_pool.update({port: tcp_server})

udp_server = udprelay.UDPRelay(a_config, self.dns_resolver_pool[port], False)
udp_server.add_to_loop(self.eventloop_pool[port])
self.udp_servers_pool.update({port: udp_server})

except Exception as e:
if not ipv6_ok:
logging.warn("IPV4 %s " % (e,))

udp_server = udprelay.UDPRelay(a_config, self.dns_resolver, False, stat_counter=self.stat_counter)
udp_server.add_to_loop(self.loop)
self.udp_ipv6_servers_pool.update({port: udp_server})

if common.to_str(a_config['server_ipv6']) == "::":
ipv6_ok = True
except Exception as e:
logging.warn("IPV6 %s " % (e,))

if 'server' in self.config:
if port in self.tcp_servers_pool:
logging.info("server already at %s:%d" % (common.to_str(self.config['server']), port))
return 'this port server is already running'
else:
a_config = self.config.copy()
a_config.update(user_config)
a_config['server_port'] = port
a_config['max_connect'] = 128
a_config['method'] = common.to_str(a_config['method'])
try:
logging.info("starting server at %s:%d" % (common.to_str(a_config['server']), port))

tcp_server = tcprelay.TCPRelay(a_config, self.dns_resolver, False)
tcp_server.add_to_loop(self.loop)
self.tcp_servers_pool.update({port: tcp_server})

udp_server = udprelay.UDPRelay(a_config, self.dns_resolver, False)
udp_server.add_to_loop(self.loop)
self.udp_servers_pool.update({port: udp_server})

except Exception as e:
if not ipv6_ok:
logging.warn("IPV4 %s " % (e,))

return True

Expand Down
2 changes: 1 addition & 1 deletion shadowsocks/tcprelay.py
Original file line number Diff line number Diff line change
Expand Up @@ -1371,7 +1371,7 @@ def __init__(self, config, dns_resolver, is_local, stat_callback=None, stat_coun
if 'node_speedlimit' not in config:
self.bandwidth = 0
else:
self.bandwidth = float(config['node_speedlimit']) * 1024 * 1024 / 8
self.bandwidth = float(config['node_speedlimit']) * 128

self.protocol_data = obfs.obfs(config['protocol']).init_data()
self.obfs_data = obfs.obfs(config['obfs']).init_data()
Expand Down
19 changes: 0 additions & 19 deletions shadowsocks/udprelay.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,9 +283,6 @@ def __init__(self, server, reqid_to_handlers, fd_to_handlers, loop,
self._dns_resolver = dns_resolver
self._local_id = local_id

self._bytesSent = 0
self._timeCreated = time.time()

self._is_local = is_local
self._stage = STAGE_INIT
self._password = config['password']
Expand Down Expand Up @@ -386,14 +383,6 @@ def _write_to_sock(self, data, sock, addr = None):
if not data or not sock:
return False

if float(self._server.bandwidth) > 0:
now = time.time()
connectionDuration = now - self._timeCreated
self._bytesSent += len(data)
requiredDuration = self._bytesSent / self._server.bandwidth
time.sleep(max(requiredDuration - connectionDuration, self._server.latency))


uncomplete = False
retry = 0
if sock == self._local_sock:
Expand Down Expand Up @@ -833,8 +822,6 @@ def handle_client(self, addr, cmd, request_id, data):
self.handle_stream_sync_status(addr, cmd, request_id, pack_id, max_send_id, data)

def handle_event(self, sock, event):
self._bytesSent = 0
self._timeCreated = time.time()

# handle all events in this handler and dispatch them to methods
handle = False
Expand Down Expand Up @@ -1019,12 +1006,6 @@ def __init__(self, config, dns_resolver, is_local, stat_callback=None, stat_coun
self._reqid_to_hd = {}
self._data_to_write_to_server_socket = []

self.latency = 0
if 'node_speedlimit' not in config:
self.bandwidth = 0
else:
self.bandwidth = float(config['node_speedlimit']) * 1024 * 1024 / 8

self._timeouts = [] # a list for all the handlers
# we trim the timeouts once a while
self._timeout_offset = 0 # last checked position for timeout
Expand Down
3 changes: 0 additions & 3 deletions web_transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -331,9 +331,6 @@ def del_server_out_of_bound_safe(self, last_rows, rows):
logging.error('more than one user use the same port [%s]' % (port,))
continue

if get_config().MULTI_THREAD == 0:
cfg['node_speedlimit'] = 0.00

if cfg['is_multi_user'] != 0:
cfg['users_table'] = md5_users.copy()
self.mu_port_list.append(port)
Expand Down

0 comments on commit 7ce2dc3

Please sign in to comment.