Exemplo n.º 1
0
    def check_packet(self):
        try:
            if self.packet_size is not None and len(self._stream) >= self.packet_size:
                p, self._stream = self._stream[:self.packet_size], self._stream[self.packet_size:]
                if not self._stream:
                    self._stream = ""
                p_parsed = packets.packet().parse(p)
                if self.compressed:
                    try:
                        z = zlib.decompressobj()
                        p_parsed.data = z.decompress(p_parsed.data)
                    except zlib.error:

                        self.logger.error("Decompression error in check_packet.")
                        raise
                packet = Packet(packet_id=p_parsed.id, payload_size=p_parsed.payload_size, data=p_parsed.data,
                                original_data=p, direction=self.direction)

                self.compressed = False
                self.protocol.string_received(packet)
                self.reset()
                if self.start_packet():
                    self.check_packet()
        except RuntimeError:
            self.logger.error("Unknown error in check_packet")
Exemplo n.º 2
0
    def check_packet(self):
        try:
            if self.packet_size is not None and len(self._stream) >= self.packet_size:
                p, self._stream = self._stream[:self.packet_size], self._stream[self.packet_size:]
                if not self._stream:
                    self._stream = ""
                p_parsed = packets.packet().parse(p)
                if self.compressed:
                    try:
                        z = zlib.decompressobj()
                        p_parsed.data = z.decompress(p_parsed.data)
                    except zlib.error:

                        self.logger.error("Decompression error in check_packet.")
                        raise
                packet = Packet(packet_id=p_parsed.id, payload_size=p_parsed.payload_size, data=p_parsed.data,
                                original_data=p, direction=self.direction)

                self.compressed = False
                self.protocol.string_received(packet)
                self.reset()
                if self.start_packet():
                    self.check_packet()
        except:
            self.logger.exception("Unknown error in check_packet")
Exemplo n.º 3
0
    def check_packet(self):
        try:
            if self.packet_size is not None and len(self._stream) >= self.packet_size:
                p, self._stream = self._stream[:self.packet_size], self._stream[self.packet_size:]
                if not self._stream:
                    self._stream = ""
                p_parsed = packets.packet().parse(p)
                if self.compressed:
                    try:
                        z = zlib.decompressobj()
                        p_parsed.data = z.decompress(p_parsed.data)
                    except zlib.error:

                        self.logger.error("Decompression error in check_packet.")
                        self.logger.trace("Parsed packet:")
                        self.logger.trace(pprint.pformat(p_parsed))
                        self.logger.trace("Packet data:")
                        self.logger.trace(pprint.pformat(p_parsed.original_data.encode("hex")))
                        self.logger.trace("Following packet data:")
                        self.logger.trace(pprint.pformat(self._stream.encode("hex")))
                        raise
                packet = Packet(packet_id=p_parsed.id, payload_size=p_parsed.payload_size, data=p_parsed.data,
                                original_data=p, direction=self.direction)

                self.compressed = False
                self.protocol.string_received(packet)
                self.reset()
                if self.start_packet():
                    self.check_packet()
        except:
            self.logger.exception("Unknown error in check_packet", exc_info=True)
Exemplo n.º 4
0
def build_packet(packet_type, data):
    """
    Convenience method to build packets for sending.
    :param packet_type: An integer 1 <= packet_type <= 53
    :param data: Data to send.
    :return: The build packet.
    :rtype : str
    """
    length = len(data)
    return packets.packet().build(
        Container(id=packet_type, payload_size=length, data=data))
Exemplo n.º 5
0
def build_packet(packet_type, data):
    """
    Convenience method to build packets for sending.
    :param packet_type: An integer 1 <= packet_type <= 53
    :param data: Data to send.
    :return: The build packet.
    :rtype : str
    """
    length = len(data)
    return packets.packet().build(
        Container(id=packet_type, payload_size=length, data=data))
Exemplo n.º 6
0
    def check_packet(self):
        try:
            if (
                    self.packet_size is not None and
                    len(self._stream) >= self.packet_size
            ):
                p = self._stream[:self.packet_size]
                self._stream = self._stream[self.packet_size:]
                if not self._stream:
                    self._stream = ''
                p_parsed = packets.packet().parse(p)
                if self.compressed:
                    try:
                        z = zlib.decompressobj()
                        p_parsed.data = z.decompress(p_parsed.data)
                    except zlib.error:
                        self.logger.error(
                            'Decompression error in check_packet.'
                        )
                        self.logger.debug('Parsed packet:')
                        self.logger.debug(pprint.pformat(p_parsed))
                        self.logger.debug('Packet data:')
                        self.logger.debug(
                            pprint.pformat(
                                p_parsed.original_data.encode('hex')
                            )
                        )
                        self.logger.debug('Following packet data:')
                        self.logger.debug(
                            pprint.pformat(self._stream.encode('hex'))
                        )
                        raise
                packet = Packet(
                    packet_id=p_parsed.id,
                    payload_size=p_parsed.payload_size,
                    data=p_parsed.data,
                    original_data=p,
                    direction=self.direction
                )

                self.compressed = False
                self.protocol.string_received(packet)
                self.reset()
                if self.start_packet():
                    self.check_packet()
        except RuntimeError:
            self.logger.error('Unknown error in check_packet')
Exemplo n.º 7
0
    def check_packet(self):
        try:
            if (self.packet_size is not None
                    and len(self._stream) >= self.packet_size):
                p = self._stream[:self.packet_size]
                self._stream = self._stream[self.packet_size:]
                if not self._stream:
                    self._stream = ''
                p_parsed = packets.packet().parse(p)
                if self.compressed:
                    try:
                        z = zlib.decompressobj()
                        p_parsed.data = z.decompress(p_parsed.data)
                    except zlib.error:
                        self.logger.error(
                            'Decompression error in check_packet.')
                        self.logger.debug('Parsed packet:')
                        self.logger.debug(pprint.pformat(p_parsed))
                        self.logger.debug('Packet data:')
                        self.logger.debug(
                            pprint.pformat(
                                p_parsed.original_data.encode('hex')))
                        self.logger.debug('Following packet data:')
                        self.logger.debug(
                            pprint.pformat(self._stream.encode('hex')))
                        raise
                packet = Packet(packet_id=p_parsed.id,
                                payload_size=p_parsed.payload_size,
                                data=p_parsed.data,
                                original_data=p,
                                direction=self.direction)

                self.compressed = False
                self.protocol.string_received(packet)
                self.reset()
                if self.start_packet():
                    self.check_packet()
        except RuntimeError:
            self.logger.error('Unknown error in check_packet')