socks5.Request - python examples

Here are the examples of the python api socks5.Request taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

7 Examples 7

3 View Complete Implementation : test_socks.py
Copyright MIT License
Author : mike820324
    @gen_test
    def test_request_with_wrong_socks_command(self):
        self.layer.socks_conn = Mock()
        self.layer.socks_conn.send = Mock(side_effect=self.collect_send_event)

        addr_future = self.layer.handle_request_and_create_destination(
            Request(REQ_COMMAND["BIND"], ADDR_TYPE["DOMAINNAME"],
                    u"localhost", self.port))

        with self.astertRaises(ProtocolError):
            yield addr_future

        self.astertIsNotNone(self.event)
        self.astertIsInstance(self.event, Response)
        self.astertEqual(self.event.status, RESP_STATUS["COMMAND_NOT_SUPPORTED"])
        self.astertEqual(self.event.atyp, ADDR_TYPE["DOMAINNAME"])
        self.astertEqual(self.event.addr, "localhost")
        self.astertEqual(self.event.port, self.port)

0 View Complete Implementation : client.py
Copyright MIT License
Author : mike820324
def do_socks_protocol(sock):
    socks_conn = Connection(our_role="client")
    socks_conn.initiate_connection()

    _event = GreetingRequest((AUTH_TYPE["NO_AUTH"], ))
    print("sending event: {}".format(_event))

    _data = socks_conn.send(_event)
    sock.send(_data)

    while True:
        _data = sock.recv(1024)
        _event = socks_conn.recv(_data)

        if _event != "NeedMoreData":
            break

    print("receiving event: {}".format(_event))

    _event = Request(REQ_COMMAND["CONNECT"], ADDR_TYPE["DOMAINNAME"], "google.com", 80)
    print("sending event: {}".format(_event))
    _data = socks_conn.send(_event)
    sock.send(_data)

    while True:
        _data = sock.recv(1024)
        _event = socks_conn.recv(_data)

        if _event != "NeedMoreData":
            break

    print("receiving event: {}".format(_event))

0 View Complete Implementation : test_socks.py
Copyright MIT License
Author : mike820324
    @gen_test
    def test_socks_request_ipv4(self):
        self.layer.socks_conn = Mock()
        self.layer.socks_conn.send = Mock(side_effect=self.collect_send_event)

        addr_future = self.layer.handle_request_and_create_destination(
            Request(REQ_COMMAND["CONNECT"], ADDR_TYPE["IPV4"],
                    u"127.0.0.1", self.port))

        dest_stream, host, port = yield addr_future

        self.astertIsNotNone(self.event)
        self.astertIsInstance(self.event, Response)
        self.astertEqual(self.event.status, RESP_STATUS["SUCCESS"])
        self.astertEqual(self.event.atyp, ADDR_TYPE["IPV4"])

        self.astertIsNotNone(dest_stream)
        self.astertFalse(dest_stream.closed())
        self.astertEqual(host, IPv4Address(u"127.0.0.1"))
        self.astertEqual(port, self.port)

        dest_stream.close()

0 View Complete Implementation : test_socks.py
Copyright MIT License
Author : mike820324
    @gen_test
    def test_socks_request_remote_dns(self):
        self.layer.socks_conn = Mock()
        self.layer.socks_conn.send = Mock(side_effect=self.collect_send_event)

        addr_future = self.layer.handle_request_and_create_destination(
            Request(REQ_COMMAND["CONNECT"], ADDR_TYPE["DOMAINNAME"],
                    u"localhost", self.port))

        dest_stream, host, port = yield addr_future

        self.astertIsNotNone(self.event)
        self.astertIsInstance(self.event, Response)
        self.astertEqual(self.event.status, RESP_STATUS["SUCCESS"])
        self.astertEqual(self.event.atyp, ADDR_TYPE["DOMAINNAME"])

        self.astertIsNotNone(dest_stream)
        self.astertFalse(dest_stream.closed())
        self.astertEqual(host, "localhost")
        self.astertEqual(port, self.port)

        dest_stream.close()

0 View Complete Implementation : test_socks.py
Copyright MIT License
Author : mike820324
    @gen_test
    def test_handle_connection_timeout(self):
        self.layer.socks_conn = Mock()
        self.layer.socks_conn.send = Mock(side_effect=self.collect_send_event)

        socks_request = Request(
            REQ_COMMAND["CONNECT"], ADDR_TYPE["IPV4"],
            u"1.2.3.4", self.port)

        self.layer.create_dest_stream = Mock(
            side_effect=self.create_raise_exception_function(TimeoutError))
        addr_future = self.layer.handle_request_and_create_destination(
            socks_request)

        with self.astertRaises(DestNotConnectedError):
            yield addr_future

        self.astertIsNotNone(self.event)
        self.astertIsInstance(self.event, Response)
        self.astertEqual(self.event.status, RESP_STATUS["NETWORK_UNREACHABLE"])
        self.astertEqual(self.event.atyp, ADDR_TYPE["IPV4"])
        self.astertEqual(self.event.addr, IPv4Address(u"1.2.3.4"))
        self.astertEqual(self.event.port, self.port)

0 View Complete Implementation : test_socks.py
Copyright MIT License
Author : mike820324
    @gen_test
    def test_handle_stream_closed(self):
        self.layer.socks_conn = Mock()
        self.layer.socks_conn.send = Mock(side_effect=self.collect_send_event)

        socks_request = Request(
            REQ_COMMAND["CONNECT"], ADDR_TYPE["IPV4"],
            u"1.2.3.4", self.port)

        addr_not_support_status = RESP_STATUS["ADDRESS_TYPE_NOT_SUPPORTED"]
        network_unreach_status = RESP_STATUS["NETWORK_UNREACHABLE"]
        general_fail_status = RESP_STATUS["GENRAL_FAILURE"]

        error_cases = [
            (errno.ENOEXEC, addr_not_support_status),
            (errno.EBADF, addr_not_support_status),
            (errno.ETIMEDOUT, network_unreach_status),
            (errno.EADDRINUSE, general_fail_status),
            (55566, general_fail_status)]

        for code, expect_status in error_cases:
            self.layer.create_dest_stream = Mock(
                side_effect=self.create_raise_exception_function(
                    StreamClosedError((code, ))))
            result_future = self.layer.handle_request_and_create_destination(
                socks_request)
            with self.astertRaises(DestNotConnectedError):
                yield result_future

            self.astertIsNotNone(self.event)
            self.astertIsInstance(self.event, Response)
            self.astertEqual(self.event.status, expect_status)
            self.astertEqual(self.event.atyp, ADDR_TYPE["IPV4"])
            self.astertEqual(str(self.event.addr), "1.2.3.4")
            self.astertEqual(self.event.port, self.port)

0 View Complete Implementation : test_socks.py
Copyright MIT License
Author : mike820324
    @gen_test
    def test_process_and_return_context(self):
        client_socks_conn = Connection(our_role="client")
        client_socks_conn.initiate_connection()
        result_future = self.layer.process_and_return_context()
        data = client_socks_conn.send(GreetingRequest([AUTH_TYPE["NO_AUTH"]]))

        yield self.client_stream.write(data)
        data = yield self.client_stream.read_bytes(1024, partial=True)
        event = client_socks_conn.recv(data)

        self.astertIsInstance(event, GreetingResponse)
        self.astertTrue(result_future.running())

        data = client_socks_conn.send(Request(
            REQ_COMMAND["CONNECT"], ADDR_TYPE["DOMAINNAME"],
            u"localhost", self.port))
        yield self.client_stream.write(data)

        data = yield self.client_stream.read_bytes(1024, partial=True)
        event = client_socks_conn.recv(data)

        self.astertIsInstance(event, Response)
        self.astertTrue(result_future.done())
        context = yield result_future
        self.astertEqual(context.host, "localhost")
        self.astertEqual(context.port, self.port)
        self.astertIsNotNone(context.dest_stream)