def main(): addr = config.tun_addr or config.uri_addr port = config.tun_port or config.uri_port uri = config.uri factory = WebSocketServerFactory(uri) factory.protocol = WSTunServerProtocol factory.server = '' # hide Server field of handshake HTTP header factory.autoPingInterval = 400 # only used to clear half-open connections factory.autoPingTimeout = 30 factory.openHandshakeTimeout = 8 # timeout after TCP established and before succeeded WS handshake try: server = loop.run_until_complete(loop.create_server(factory, addr, port)) except OSError: die('wstan server failed to bind on %s:%d' % (addr, port)) so = server.sockets[0] if len(server.sockets) == 1 and so.family == socket.AF_INET6 and hasattr(socket, 'IPPROTO_IPV6'): # force user to specify URI in wstan server is a bad design, this try to fix # inconvenience in dual stack server so.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0) # default 1 in Linux loop.set_exception_handler(silent_timeout_err_handler) async_(clean_seen_nonce()) print('wstan server -- listening on %s:%d' % (addr, port)) try: loop.run_forever() except KeyboardInterrupt: pass finally: server.close() loop.close()
def main(): addr = config.tun_addr or config.uri_addr port = config.tun_port or config.uri_port uri = config.uri factory = WebSocketServerFactory(uri) factory.protocol = WSTunServerProtocol factory.server = '' # hide Server field of handshake HTTP header factory.autoPingInterval = 400 # only used to clear half-open connections factory.autoPingTimeout = 30 factory.openHandshakeTimeout = 8 # timeout after TCP established and before succeeded WS handshake try: server = loop.run_until_complete( loop.create_server(factory, addr, port)) except OSError: die('wstan server failed to bind on %s:%d' % (addr, port)) so = server.sockets[0] if len(server.sockets) == 1 and so.family == socket.AF_INET6 and hasattr( socket, 'IPPROTO_IPV6'): # force user to specify URI in wstan server is a bad design, this try to fix # inconvenience in dual stack server so.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0) # default 1 in Linux loop.set_exception_handler(silent_timeout_err_handler) async_(clean_seen_nonce()) print('wstan server -- listening on %s:%d' % (addr, port)) try: loop.run_forever() except KeyboardInterrupt: pass finally: server.close() loop.close()
def main(): addr = config.tun_addr or config.uri_addr port = config.tun_port or config.uri_port try: c = loop.create_server_tfo if config.tfo else loop.create_server server = loop.run_until_complete(c(factory, addr, port)) except OSError: die('wstan server failed to bind on %s:%d' % (addr, port)) so = server.sockets[0] if len(server.sockets) == 1 and so.family == socket.AF_INET6 and hasattr( socket, 'IPPROTO_IPV6'): # force user to specify URI in wstan server is a bad design, this try to fix # inconvenience in dual stack server so.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0) # default 1 in Linux loop.set_exception_handler(silent_timeout_err_handler) async_(clean_seen_nonce()) print('wstan server -- listening on %s:%d' % (addr, port)) try: loop.run_forever() except KeyboardInterrupt: pass finally: server.close() loop.close()
def main(): try: server = loop.run_until_complete( asyncio.start_server(dispatch_proxy, 'localhost', config.port)) except OSError: die('wstan client failed to bind on localhost:%d' % config.port) print('wstan client -- SOCKS5/HTTP(S) server listening on localhost:%d' % config.port) try: loop.run_forever() except KeyboardInterrupt: pass finally: server.close() loop.close()