Beispiel #1
0
 def _create_packet(self, id):
     packet = Connection()
     packet.write(self.MAGIC_PREFIX)
     packet.write(struct.pack("!B", id))
     packet.write_uint(0)
     packet.write_int(self.challenge)
     return packet
Beispiel #2
0
 def _create_packet(self):
     packet = Connection()
     packet.write(self.MAGIC_PREFIX)
     packet.write(struct.pack("!B", self.PACKET_TYPE_QUERY))
     packet.write_uint(self._generate_session_id())
     packet.write_int(self.challenge)
     packet.write(self.PADDING)
     return packet
Beispiel #3
0
    def handshake(self):
        packet = Connection()
        packet.write_varint(0)
        packet.write_varint(self.version)
        packet.write_utf(self.host)
        packet.write_ushort(self.port)
        packet.write_varint(1)  # Intention to query status

        self.connection.write_buffer(packet)
Beispiel #4
0
    async def read_status(self):
        request = Connection()
        request.write_varint(0)  # Request status
        self.connection.write_buffer(request)

        response = await self.connection.read_buffer()
        if response.read_varint() != 0:
            raise IOError("Received invalid status response packet.")
        try:
            raw = json.loads(response.read_utf())
        except ValueError:
            raise IOError("Received invalid JSON")
        try:
            return PingResponse(raw)
        except ValueError as e:
            raise IOError("Received invalid status response: %s" % e)
Beispiel #5
0
    async def test_ping(self):
        request = Connection()
        request.write_varint(1)  # Test ping
        request.write_long(self.ping_token)
        sent = datetime.datetime.now()
        self.connection.write_buffer(request)

        response = await self.connection.read_buffer()
        received = datetime.datetime.now()
        if response.read_varint() != 1:
            raise IOError("Received invalid ping response packet.")
        received_token = response.read_long()
        if received_token != self.ping_token:
            raise IOError(
                "Received mangled ping response packet (expected token %d, received %d)" % (self.ping_token, received_token)
            )

        delta = received - sent
        # We have no trivial way of getting a time delta :(
        return (delta.days * 24 * 60 * 60 + delta.seconds) * 1000 + delta.microseconds / 1000.0
Beispiel #6
0
 def setUp(self):
     self.querier = ServerQuerier(Connection())
Beispiel #7
0
 def setUp(self):
     self.pinger = ServerPinger(Connection(),
                                host="localhost",
                                port=25565,
                                version=44)
Beispiel #8
0
 def setup_method(self):
     self.querier = ServerQuerier(Connection())
Beispiel #9
0
 def setup_method(self):
     self.socket = Connection()
     self.server = MinecraftServer("localhost", port=25565)
Beispiel #10
0
 def setup_method(self):
     self.connection = Connection()
Beispiel #11
0
    def test_writeBuffer(self):
        buffer = Connection()
        buffer.write(bytearray.fromhex("7FAA"))
        self.connection.write_buffer(buffer)

        assert self.connection.flush() == bytearray.fromhex("027FAA")
Beispiel #12
0
 def setUp(self):
     self.connection = Connection()
Beispiel #13
0
 async def _read_packet(self):
     packet = Connection()
     packet.receive(await self.connection.read(self.connection.remaining()))
     packet.read(1 + 4)
     return packet
Beispiel #14
0
 def _create_handshake_packet(self):
     packet = Connection()
     packet.write(self.MAGIC_PREFIX)
     packet.write(struct.pack("!B", self.PACKET_TYPE_CHALLENGE))
     packet.write_uint(self._generate_session_id())
     return packet