Exemplo n.º 1
0
 def testProxyConnect(self):
     ws = websocket.WebSocket()
     ws.connect("ws://127.0.0.1:" + LOCAL_WS_SERVER_PORT,
                http_proxy_host="127.0.0.1",
                http_proxy_port="8899",
                proxy_type="http")
     ws.send("Hello, Server")
     server_response = ws.recv()
     self.assertEqual(server_response, "Hello, Server")
     # self.assertEqual(_start_proxied_socket("wss://api.bitfinex.com/ws/2", OptsList(), proxy_info(http_proxy_host="127.0.0.1", http_proxy_port="8899", proxy_type="http"))[1], ("api.bitfinex.com", 443, '/ws/2'))
     self.assertEqual(
         _get_addrinfo_list(
             "api.bitfinex.com", 443, True,
             proxy_info(http_proxy_host="127.0.0.1",
                        http_proxy_port="8899",
                        proxy_type="http")),
         (socket.getaddrinfo("127.0.0.1", 8899, 0, socket.SOCK_STREAM,
                             socket.SOL_TCP), True, None))
     self.assertEqual(
         connect(
             "wss://api.bitfinex.com/ws/2", OptsList(),
             proxy_info(http_proxy_host="127.0.0.1",
                        http_proxy_port=8899,
                        proxy_type="http"), None)[1],
         ("api.bitfinex.com", 443, '/ws/2'))
Exemplo n.º 2
0
 def testConnect(self):
     # Not currently testing an actual proxy connection, so just check whether TypeError is raised. This requires internet for a DNS lookup
     self.assertRaises(
         TypeError, _open_proxied_socket, "wss://example.com", OptsList(),
         proxy_info(http_proxy_host=None,
                    http_proxy_port=None,
                    proxy_type=None))
     self.assertRaises(
         TypeError, _open_proxied_socket, "wss://example.com", OptsList(),
         proxy_info(http_proxy_host="example.com",
                    http_proxy_port="8080",
                    proxy_type="http"))
     self.assertRaises(
         TypeError, _open_proxied_socket, "wss://example.com", OptsList(),
         proxy_info(http_proxy_host="example.com",
                    http_proxy_port="8080",
                    proxy_type="socks4"))
     self.assertRaises(
         TypeError, _open_proxied_socket, "wss://example.com", OptsList(),
         proxy_info(http_proxy_host="example.com",
                    http_proxy_port="8080",
                    proxy_type="socks5h"))
     self.assertRaises(
         TypeError, _get_addrinfo_list, None, 80, True,
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http"))
     self.assertRaises(
         TypeError, _get_addrinfo_list, None, 80, True,
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http"))
     self.assertRaises(
         socks.ProxyConnectionError, connect, "wss://example.com",
         OptsList(),
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port=8080,
                    proxy_type="socks4"), None)
     self.assertRaises(
         socket.timeout, connect, "wss://google.com", OptsList(),
         proxy_info(http_proxy_host="8.8.8.8",
                    http_proxy_port=8080,
                    proxy_type="http"), None)
     self.assertEqual(
         connect(
             "wss://google.com", OptsList(),
             proxy_info(http_proxy_host="8.8.8.8",
                        http_proxy_port=8080,
                        proxy_type="http"), True),
         (True, ("google.com", 443, "/")))
     self.assertRaises(
         OverflowError, connect, "wss://example.com", OptsList(),
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port=99999,
                    proxy_type="socks4",
                    timeout=2), False)
Exemplo n.º 3
0
 def testConnect(self):
     # Not currently testing an actual proxy connection, so just check whether TypeError is raised
     self.assertRaises(
         TypeError, _open_proxied_socket, "wss://example.com", OptsList(),
         proxy_info(http_proxy_host="example.com",
                    http_proxy_port="8080",
                    proxy_type="http"))
     self.assertRaises(
         TypeError, _open_proxied_socket, "wss://example.com", OptsList(),
         proxy_info(http_proxy_host="example.com",
                    http_proxy_port="8080",
                    proxy_type="socks4"))
     self.assertRaises(
         TypeError, _open_proxied_socket, "wss://example.com", OptsList(),
         proxy_info(http_proxy_host="example.com",
                    http_proxy_port="8080",
                    proxy_type="socks5h"))
Exemplo n.º 4
0
    def testConnect(self):
        # Not currently testing an actual proxy connection, so just check whether proxy errors are raised. This requires internet for a DNS lookup
        if ws._http.HAVE_PYTHON_SOCKS:
            # Need this check, otherwise case where python_socks is not installed triggers
            # websocket._exceptions.WebSocketException: Python Socks is needed for SOCKS proxying but is not available
            self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4", timeout=1))
            self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4a", timeout=1))
            self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5", timeout=1))
            self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5h", timeout=1))
            self.assertRaises(ProxyConnectionError, connect, "wss://example.com", OptsList(), proxy_info(http_proxy_host="127.0.0.1", http_proxy_port=9999, proxy_type="socks4", timeout=1), None)

        self.assertRaises(TypeError, _get_addrinfo_list, None, 80, True, proxy_info(http_proxy_host="127.0.0.1", http_proxy_port="9999", proxy_type="http"))
        self.assertRaises(TypeError, _get_addrinfo_list, None, 80, True, proxy_info(http_proxy_host="127.0.0.1", http_proxy_port="9999", proxy_type="http"))
        self.assertRaises(socket.timeout, connect, "wss://google.com", OptsList(), proxy_info(http_proxy_host="8.8.8.8", http_proxy_port=9999, proxy_type="http", timeout=1), None)
        self.assertEqual(
            connect("wss://google.com", OptsList(), proxy_info(http_proxy_host="8.8.8.8", http_proxy_port=8080, proxy_type="http"), True),
            (True, ("google.com", 443, "/")))
Exemplo n.º 5
0
 def testProxyInfo(self):
     self.assertEqual(
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http").proxy_protocol, "http")
     self.assertRaises(ProxyError,
                       proxy_info,
                       http_proxy_host="127.0.0.1",
                       http_proxy_port="8080",
                       proxy_type="badval")
     self.assertEqual(
         proxy_info(http_proxy_host="example.com",
                    http_proxy_port="8080",
                    proxy_type="http").proxy_host, "example.com")
     self.assertEqual(
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http").proxy_port, "8080")
     self.assertEqual(
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http").auth, None)
     self.assertEqual(
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http",
                    http_proxy_auth=("my_username123",
                                     "my_pass321")).auth[0],
         "my_username123")
     self.assertEqual(
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http",
                    http_proxy_auth=("my_username123",
                                     "my_pass321")).auth[1], "my_pass321")
Exemplo n.º 6
0
 def testProxyInfo(self):
     self.assertEqual(
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http").type, "http")
     self.assertRaises(ValueError,
                       proxy_info,
                       http_proxy_host="127.0.0.1",
                       http_proxy_port="8080",
                       proxy_type="badval")
     self.assertEqual(
         proxy_info(http_proxy_host="example.com",
                    http_proxy_port="8080",
                    proxy_type="http").host, "example.com")
     self.assertEqual(
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http").port, "8080")
     self.assertEqual(
         proxy_info(http_proxy_host="127.0.0.1",
                    http_proxy_port="8080",
                    proxy_type="http").auth, None)
Exemplo n.º 7
0
 def testProxyConnect(self):
     self.assertEqual(
         _open_proxied_socket(
             "wss://api.bitfinex.com/ws/2", OptsList(),
             proxy_info(http_proxy_host="127.0.0.1",
                        http_proxy_port="8899",
                        proxy_type="http"))[1],
         ("api.bitfinex.com", 443, '/ws/2'))
     self.assertEqual(
         _get_addrinfo_list(
             "api.bitfinex.com", 443, True,
             proxy_info(http_proxy_host="127.0.0.1",
                        http_proxy_port="8899",
                        proxy_type="http")),
         (socket.getaddrinfo("127.0.0.1", 8899, 0, socket.SOCK_STREAM,
                             socket.SOL_TCP), True, None))
     self.assertEqual(
         connect(
             "wss://api.bitfinex.com/ws/2", OptsList(),
             proxy_info(http_proxy_host="127.0.0.1",
                        http_proxy_port=8899,
                        proxy_type="http"), None)[1],
         ("api.bitfinex.com", 443, '/ws/2'))
Exemplo n.º 8
0
 def _connect(self, ssl_opt, **options):
     """Connect method, doesn't follow redirects."""
     proxy = websocket_http_utils.proxy_info(**options)
     sockopt = SockOpt(ssl_opt)
     # We don't need to connect and do the handshake if the caller already
     # specified a websocket.
     if self.sock:
         hostname, port, resource, _ = websocket_http_utils.parse_url(
             self.url)
         addrs = (hostname, port, resource)
     else:
         self.sock, addrs = websocket_http_utils.connect(
             self.url, sockopt, proxy, None)
         websocket_handshake.handshake(self.sock, *addrs, **options)
     self.connected = True
     return addrs