def request_handler(listener): sock = listener.accept()[0] handler = handle_socks5_negotiation(sock, negotiate=False) addr, port = next(handler) assert addr == b"localhost" assert port == 443 handler.send(True) # Wrap in TLS context = better_ssl.SSLContext(ssl.PROTOCOL_SSLv23) context.load_cert_chain(DEFAULT_CERTS["certfile"], DEFAULT_CERTS["keyfile"]) tls = context.wrap_socket(sock, server_side=True) buf = b"" while True: buf += tls.recv(65535) if buf.endswith(b"\r\n\r\n"): break assert buf.startswith(b"GET / HTTP/1.1\r\n") tls.sendall(b"HTTP/1.1 200 OK\r\n" b"Server: SocksTestServer\r\n" b"Content-Length: 0\r\n" b"\r\n") tls.close() sock.close()
def request_handler(listener): sock = listener.accept()[0] handler = handle_socks5_negotiation(sock, negotiate=False) addr, port = next(handler) self.assertEqual(addr, b'localhost') self.assertTrue(port, 443) handler.send(True) # Wrap in TLS context = better_ssl.SSLContext(ssl.PROTOCOL_SSLv23) context.load_cert_chain(DEFAULT_CERTS['certfile'], DEFAULT_CERTS['keyfile']) tls = context.wrap_socket(sock, server_side=True) buf = b'' while True: buf += tls.recv(65535) if buf.endswith(b'\r\n\r\n'): break self.assertTrue(buf.startswith(b'GET / HTTP/1.1\r\n')) tls.sendall(b'HTTP/1.1 200 OK\r\n' b'Server: SocksTestServer\r\n' b'Content-Length: 0\r\n' b'\r\n') tls.close() sock.close()