Пример #1
0
    def decodeExtended(self, data):
        try:
            tmp = msgpack.loads(zlib.decompress(data))
        except zlib.error:
            logger.error("Error decompressing message")
            raise
        except (msgpack.exceptions.UnpackException,
                msgpack.exceptions.ExtraData):
            logger.error("Error msgunpacking message")
            raise

        try:
            msgType = tmp[""]
        except KeyError:
            logger.error("Message type missing")
            raise

        msgObj = messagetypes.constructObject(tmp)
        if msgObj is None:
            raise ValueError("Malformed message")
        try:
            msgObj.process()
        except:
            raise ValueError("Malformed message")
        if msgType == "message":
            self.subject = msgObj.subject
            self.body = msgObj.body
Пример #2
0
    def decodeExtended(self, data):
        """Handle extended encoding"""
        dc = zlib.decompressobj()
        tmp = ""
        while len(tmp) <= BMConfigParser().safeGetInt("zlib", "maxsize"):
            try:
                got = dc.decompress(
                    data,
                    BMConfigParser().safeGetInt("zlib", "maxsize") + 1 -
                    len(tmp))
                # EOF
                if got == "":
                    break
                tmp += got
                data = dc.unconsumed_tail
            except zlib.error:
                logger.error("Error decompressing message")
                raise MsgDecodeException("Error decompressing message")
        else:
            raise DecompressionSizeException(len(tmp))

        try:
            tmp = msgpack.loads(tmp)
        except (msgpack.exceptions.UnpackException,
                msgpack.exceptions.ExtraData):
            logger.error("Error msgunpacking message")
            raise MsgDecodeException("Error msgunpacking message")

        try:
            msgType = tmp[""]
        except KeyError:
            logger.error("Message type missing")
            raise MsgDecodeException("Message type missing")

        msgObj = messagetypes.constructObject(tmp)
        if msgObj is None:
            raise MsgDecodeException("Malformed message")
        try:
            msgObj.process()
        except:
            raise MsgDecodeException("Malformed message")
        if msgType == "message":
            self.subject = msgObj.subject
            self.body = msgObj.body
Пример #3
0
    def decodeExtended(self, data):
        dc = zlib.decompressobj()
        tmp = ""
        while len(tmp) <= BMConfigParser().safeGetInt("zlib", "maxsize"):
            try:
                got = dc.decompress(data, BMConfigParser().safeGetInt("zlib", "maxsize") + 1 - len(tmp))
                # EOF
                if got == "":
                    break
                tmp += got
                data = dc.unconsumed_tail
            except zlib.error:
                logger.error("Error decompressing message")
                raise MsgDecodeException("Error decompressing message")
        else:
            raise DecompressionSizeException(len(tmp))

        try:
            tmp = msgpack.loads(tmp)
        except (msgpack.exceptions.UnpackException,
                msgpack.exceptions.ExtraData):
            logger.error("Error msgunpacking message")
            raise MsgDecodeException("Error msgunpacking message")

        try:
            msgType = tmp[""]
        except KeyError:
            logger.error("Message type missing")
            raise MsgDecodeException("Message type missing")

        msgObj = messagetypes.constructObject(tmp)
        if msgObj is None:
            raise MsgDecodeException("Malformed message")
        try:
            msgObj.process()
        except:
            raise MsgDecodeException("Malformed message")
        if msgType == "message":
            self.subject = msgObj.subject
            self.body = msgObj.body
Пример #4
0
from os import listdir, path
from pprint import pprint
import sys
import traceback

data = {"": "message", "subject": "subject", "body": "body"}
#data = {"": "vote", "msgid": "msgid"}
#data = {"fsck": 1}

import messagetypes

if __name__ == '__main__':
    try:
        msgType = data[""]
    except KeyError:
        print "Message type missing"
        sys.exit(1)
    else:
        print "Message type: %s" % (msgType)
    msgObj = messagetypes.constructObject(data)
    if msgObj is None:
        sys.exit(1)
    try:
        msgObj.process()
    except:
        pprint(sys.exc_info())