Esempio n. 1
0
    def autorelease(self, uuid):
        "release a message without logging in"
        releasereq = get_releasereq(uuid)
        if not releasereq:
            abort(404)

        released = False
        msgid = releasereq.messageid
        to_address = _('Unknown')
        errormsg = _('The message has already been released,'
                    ' you can only use the release link once')
        if releasereq.released is False:
            try:
                msg = Session.query(Message)\
                    .filter(Message.id == releasereq.messageid)\
                    .one()
            except (NoResultFound, MultipleResultsFound):
                abort(404)

            msgid = msg.messageid
            to_address = msg.to_address
            try:
                if msg.isdangerous and c.user and c.user.is_peleb:
                    raise ValueError
                localtmz = config.get('baruwa.timezone', 'Africa/Johannesburg')
                cdte = convert_date(msg.timestamp, localtmz).strftime('%Y%m%d')
                task = release_message.apply_async(
                        args=[msg.messageid,
                            cdte,
                            msg.from_address,
                            msg.to_address.split(','),
                            msg.msgfiles],
                        routing_key=system_hostname() if
                        asbool(config.get('ms.quarantine.shared', 'false'))
                        else msg.hostname.strip())
                task.wait(30)
                if task.status == 'SUCCESS':
                    result = task.result
                    if result['success']:
                        update_autorelease.apply_async(args=[uuid])
                    errormsg = result['error']
                    released = result['success']
            except (ValueError, socket.error, TimeoutError, QueueNotFound):
                released = False
                errormsg = _('Processing of message failed')
                log.info(errormsg)
                result = dict(success=False, error=errormsg)

        c.messageid = msgid
        c.errormsg = errormsg
        c.released = released
        c.releaseaddress = to_address
        return self.render('/messages/autorelease.html')
Esempio n. 2
0
    def autorelease(self, uuid):
        "release a message without logging in"
        releasereq = get_releasereq(uuid)
        if not releasereq:
            abort(404)

        released = False
        msgid = releasereq.messageid
        to_address = _('Unknown')
        errormsg = _('The message has already been released,'
                     ' you can only use the release link once')
        if releasereq.released is False:
            try:
                msg = Session.query(Message)\
                    .filter(Message.id == releasereq.messageid)\
                    .one()
            except (NoResultFound, MultipleResultsFound):
                abort(404)

            msgid = msg.messageid
            to_address = msg.to_address
            try:
                if msg.isdangerous and c.user and c.user.is_peleb:
                    raise ValueError
                localtmz = config.get('baruwa.timezone', 'Africa/Johannesburg')
                cdte = convert_date(msg.timestamp, localtmz).strftime('%Y%m%d')
                task = release_message.apply_async(
                    args=[
                        msg.messageid, cdte, msg.from_address,
                        msg.to_address.split(','), msg.msgfiles
                    ],
                    routing_key=system_hostname() if asbool(
                        config.get('ms.quarantine.shared',
                                   'false')) else msg.hostname.strip())
                task.wait(30)
                if task.status == 'SUCCESS':
                    result = task.result
                    if result['success']:
                        update_autorelease.apply_async(args=[uuid])
                    errormsg = result['error']
                    released = result['success']
            except (ValueError, socket.error, TimeoutError, QueueNotFound):
                released = False
                errormsg = _('Processing of message failed')
                log.info(errormsg)
                result = dict(success=False, error=errormsg)

        c.messageid = msgid
        c.errormsg = errormsg
        c.released = released
        c.releaseaddress = to_address
        return self.render('/messages/autorelease.html')
Esempio n. 3
0
    def autorelease(self, uuid):
        "release a message without logging in"
        releasereq = self._get_releasereq(uuid)
        if not releasereq:
            abort(404)

        released = False
        msgid = releasereq.messageid
        to_address = _('Unknown')
        errormsg = _('The message has already been released,'
                    ' you can only use the release link once')
        if releasereq.released == False:
            try:
                msg = Session.query(Message)\
                    .filter(Message.id == releasereq.messageid)\
                    .one()
            except (NoResultFound, MultipleResultsFound):
                abort(404)

            msgid = msg.messageid
            to_address = msg.to_address
            try:
                localtmz = config.get('baruwa.timezone', 'Africa/Johannesburg')
                task = release_message.apply_async(
                        args=[msg.messageid,
                            convert_date(msg.timestamp, localtmz).strftime('%Y%m%d'),
                            msg.from_address,
                            msg.to_address.split(',')],
                        queue=msg.hostname)
                task.wait(30)
                if task.status == 'SUCCESS':
                    result = task.result
                    if result['success']:
                        update_autorelease.apply_async(args=[uuid])
                    errormsg = result['error']
                    released = result['success']
            except (ValueError, socket.error, TimeoutError, QueueNotFound):
                released = False
                errormsg = _('Processing of message failed')
                result = dict(success=False, error=errormsg)

        c.messageid = msgid
        c.errormsg = errormsg
        c.released = released
        c.releaseaddress = to_address
        return render('/messages/autorelease.html')
Esempio n. 4
0
    def autorelease(self, uuid):
        "release a message without logging in"
        releasereq = self._get_releasereq(uuid)
        if not releasereq:
            abort(404)

        released = False
        msgid = releasereq.messageid
        to_address = _('Unknown')
        errormsg = _('The message has already been released,'
                    ' you can only use the release link once')
        if releasereq.released == False:
            try:
                msg = Session.query(Message)\
                    .filter(Message.id == releasereq.messageid)\
                    .one()
            except (NoResultFound, MultipleResultsFound):
                abort(404)

            msgid = msg.messageid
            to_address = msg.to_address
            try:
                task = release_message.apply_async(
                        args=[msg.messageid,
                            str(msg.date),
                            msg.from_address,
                            msg.to_address.split(',')],
                        queue=msg.hostname)
                task.wait(30)
                if task.status == 'SUCCESS':
                    result = task.result
                    if result['success']:
                        update_autorelease.apply_async(args=[uuid])
                    errormsg = result['error']
                    released = result['success']
            except (ValueError, socket.error, TimeoutError, QueueNotFound):
                released = False
                errormsg = _('Processing of message failed')
                result = dict(success=False, error=errormsg)

        c.messageid = msgid
        c.errormsg = errormsg
        c.released = released
        c.releaseaddress = to_address
        return render('/messages/autorelease.html')