diff --git a/shadowsocks/common.py b/shadowsocks/common.py index 6c377f5..a39112e 100644 --- a/shadowsocks/common.py +++ b/shadowsocks/common.py @@ -159,12 +159,14 @@ def pack_addr(address): address = address[:255] # TODO return b'\x03' + chr(len(address)) + address + # add socks5 request header -def add_header(address, port ,data): +def add_header(address, port, data): header = b'' - header = pack_addr(address) + struct.pack('>H', port) + data + header = pack_addr(address) + struct.pack('>H', port) + data return header + def parse_header(data): addrtype = ord(data[0]) dest_addr = None diff --git a/shadowsocks/tunnel.py b/shadowsocks/tunnel.py index 470c90f..281175b 100644 --- a/shadowsocks/tunnel.py +++ b/shadowsocks/tunnel.py @@ -24,18 +24,19 @@ import logging import signal sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../')) -from shadowsocks import shell, daemon, eventloop, tcprelay, udprelay, asyncdns +from shadowsocks import shell, daemon, eventloop, udprelay, asyncdns + def get_tunnel_udp_server(config, dns_resolver): if config["dns_service"]: config["local_port"] = config.copy()["dns_local_port"] logging.info("starting tunnel at %s:%d" % - (config['local_address'], config['local_port'])) + (config['local_address'], config['local_port'])) else: logging.info("dns_service is False") - return + return - #tcp_server = tcprelay.TCPRelay(config, dns_resolver, True) + # tcp_server = tcprelay.TCPRelay(config, dns_resolver, True) tunnel_udp_server = udprelay.UDPRelay(config, dns_resolver, True) tunnel_udp_server.is_tunnel = True return tunnel_udp_server @@ -57,12 +58,12 @@ def main(): tunnel_udp_server = get_tunnel_udp_server(config, dns_resolver) loop = eventloop.EventLoop() dns_resolver.add_to_loop(loop) - #tcp_server.add_to_loop(loop) + # tcp_server.add_to_loop(loop) tunnel_udp_server.add_to_loop(loop) def handler(signum, _): logging.warn('received SIGQUIT, doing graceful shutting down..') - #tcp_server.close(next_tick=True) + # tcp_server.close(next_tick=True) tunnel_udp_server.close(next_tick=True) signal.signal(getattr(signal, 'SIGQUIT', signal.SIGTERM), handler) diff --git a/shadowsocks/udprelay.py b/shadowsocks/udprelay.py index 057cd52..3e8adfd 100644 --- a/shadowsocks/udprelay.py +++ b/shadowsocks/udprelay.py @@ -157,7 +157,7 @@ class UDPRelay(object): self._stat_callback(self._listen_port, len(data)) if self._is_local: if self.is_tunnel: - #add socks5 header to data + # add socks5 header to data dns_server = self.dns_server dns_server_port = self.dns_server_port data = common.add_header(dns_server, dns_server_port, data) @@ -182,7 +182,8 @@ class UDPRelay(object): if header_result is None: return addrtype, dest_addr, dest_port, header_length = header_result - logging.info("udp data to %s:%d from %s:%d" %(dest_addr, dest_port, r_addr[0], r_addr[1])) + logging.info("udp data to %s:%d from %s:%d" + %(dest_addr, dest_port, r_addr[0], r_addr[1])) if self._is_local: server_addr, server_port = self._get_a_server() else: @@ -285,7 +286,8 @@ class UDPRelay(object): response = b'\x00\x00\x00' + data client_addr = self._client_fd_to_server_addr.get(sock.fileno()) if client_addr: - logging.debug("send udp response to %s:%d" %(client_addr[0], client_addr[1])) + logging.debug("send udp response to %s:%d" + %(client_addr[0], client_addr[1])) self._server_socket.sendto(response, client_addr) else: # this packet is from somewhere else we know