def mailq_preview(self, queueid, attachid=None, imgid=None, allowimgs=None): "preview a queued message" query = Session.query(MailQueueItem) uquery = UserFilter(Session, c.user, query, model=MailQueueItem) query = uquery.filter() try: mailqitem = query.filter(MailQueueItem.id == queueid).one() except NoResultFound: flash_alert(_('The requested queued message was not found.')) redirect(url('mailq-status')) try: task = preview_queued_msg.apply_async(args=[mailqitem.messageid, mailqitem.direction, attachid, imgid], queue=mailqitem.hostname) task.wait(30) if task.result: if imgid: response.content_type = task.result['content_type'] if task.result and 'img' in task.result: info = QUEUEDOWNLOAD_MSG % dict(m=mailqitem.messageid, a=task.result['name']) audit_log(c.user.username, 1, info, request.host, request.remote_addr, now()) return base64.decodestring(task.result['img']) abort(404) if attachid: info = QUEUEDOWNLOAD_MSG % dict(m=mailqitem.messageid, a=task.result['name']) audit_log(c.user.username, 1, info, request.host, request.remote_addr, now()) response.content_type = task.result['mimetype'] dispos = 'attachment; filename="%s"' % task.result['name'] response.headers['Content-Disposition'] = str(dispos) content_len = len(task.result['attachment']) response.headers['Content-Length'] = content_len response.headers['Pragma'] = 'public' response.headers['Cache-Control'] = 'max-age=0' return base64.decodestring(task.result['attachment']) for part in task.result['parts']: if part['type'] == 'html': html = fromstring(part['content']) for element, attribute, link, pos in iterlinks(html): if not link.startswith('cid:'): if not allowimgs and attribute == 'src': element.attrib['src'] = '%simgs/blocked.gif' % media_url() element.attrib['title'] = link flash(_('This message contains external images, which have been blocked. ') + literal(link_to(_('Display images'), url('queue-preview-with-imgs', queueid=queueid), class_='uline'))) else: imgname = link.replace('cid:', '') element.attrib['src'] = url('queue-preview-img', imgid=imgname.replace('/', '__xoxo__'), queueid=queueid) part['content'] = tostring(html) c.message = task.result info = QUEUEPREVIEW_MSG % dict(m=mailqitem.messageid) audit_log(c.user.username, 1, info, request.host, request.remote_addr, now()) else: raise TimeoutError except (TimeoutError, QueueNotFound): flash_alert(_('The message could not be processed')) redirect(url('mailq-status')) c.queueid = queueid c.messageid = mailqitem.messageid return render('/status/preview.html')
def mailq_preview(self, queueid, attachid=None, imgid=None, allowimgs=None): "preview a queued message" query = Session.query(MailQueueItem) uquery = UserFilter(Session, c.user, query, model=MailQueueItem) query = uquery.filter() try: mailqitem = query.filter(MailQueueItem.id == queueid).one() except NoResultFound: flash_alert(_('The requested queued message was not found.')) redirect(url('mailq-status')) try: task = preview_queued_msg.apply_async(args=[mailqitem.messageid, mailqitem.direction, attachid, imgid], queue=mailqitem.hostname) task.wait(30) if task.result: if imgid: response.content_type = task.result['content_type'] if task.result and 'img' in task.result: info = QUEUEDOWNLOAD_MSG % dict(m=mailqitem.messageid, a=task.result['name']) audit_log(c.user.username, 1, info, request.host, request.remote_addr, datetime.now()) return base64.decodestring(task.result['img']) abort(404) if attachid: info = QUEUEDOWNLOAD_MSG % dict(m=mailqitem.messageid, a=task.result['name']) audit_log(c.user.username, 1, info, request.host, request.remote_addr, datetime.now()) response.content_type = task.result['mimetype'] dispos = 'attachment; filename="%s"' % task.result['name'] response.headers['Content-Disposition'] = dispos content_len = len(task.result['attachment']) response.headers['Content-Length'] = content_len response.headers['Pragma'] = 'public' response.headers['Cache-Control'] = 'max-age=0' return base64.decodestring(task.result['attachment']) for part in task.result['parts']: if part['type'] == 'html': html = fromstring(part['content']) for element, attribute, link, pos in iterlinks(html): if not link.startswith('cid:'): if not allowimgs and attribute == 'src': element.attrib['src'] = '%simgs/blocked.gif' % media_url() element.attrib['title'] = link flash(_('This message contains external images, which have been blocked. ') + literal(link_to(_('Display images'), url('queue-preview-with-imgs', queueid=queueid), class_='uline'))) else: imgname = link.replace('cid:', '') element.attrib['src'] = url('queue-preview-img', imgid=imgname.replace('/', '__xoxo__'), queueid=queueid) part['content'] = tostring(html) c.message = task.result info = QUEUEPREVIEW_MSG % dict(m=mailqitem.messageid) audit_log(c.user.username, 1, info, request.host, request.remote_addr, datetime.now()) else: raise TimeoutError except (TimeoutError, QueueNotFound): flash_alert(_('The message could not be processed')) redirect(url('mailq-status')) c.queueid = queueid c.messageid = mailqitem.messageid return render('/status/preview.html')
def mailq_preview(self, queueid, attachid=None, imgid=None, allowimgs=None, richformat=None): "preview a queued message" query = Session.query(MailQueueItem) uquery = UserFilter(Session, c.user, query, model=MailQueueItem) query = uquery.filter() try: mailqitem = query.filter(MailQueueItem.id == queueid).one() except NoResultFound: flash_alert(_('The requested queued message was not found.')) redirect(url('mailq-status')) try: task = preview_queued_msg.apply_async(args=[mailqitem.messageid, mailqitem.direction, attachid, imgid], routing_key=mailqitem.hostname) task.wait(30) if task.result: if imgid: response.content_type = task.result['content_type'] if task.result and 'img' in task.result: info = QUEUEDOWNLOAD_MSG % dict(m=mailqitem.messageid, a=task.result['name']) audit_log(c.user.username, 1, unicode(info), request.host, request.remote_addr, arrow.utcnow().datetime) return base64.decodestring(task.result['img']) abort(404) if attachid: info = QUEUEDOWNLOAD_MSG % dict(m=mailqitem.messageid, a=task.result['name']) audit_log(c.user.username, 1, unicode(info), request.host, request.remote_addr, arrow.utcnow().datetime) response.content_type = task.result['mimetype'] dispos = 'attachment; filename="%s"' % task.result['name'] response.headers['Content-Disposition'] = str(dispos) content_len = len(task.result['attachment']) response.headers['Content-Length'] = content_len response.headers['Pragma'] = 'public' response.headers['Cache-Control'] = 'max-age=0' return base64.decodestring(task.result['attachment']) for part in task.result['parts']: if part['type'] == 'text/html': local_rf = (not task.result['is_multipart'] or richformat) part['content'] = img_fixups(part['content'], queueid, allowimgs, local_rf) c.message = task.result info = QUEUEPREVIEW_MSG % dict(m=mailqitem.messageid) audit_log(c.user.username, 1, unicode(info), request.host, request.remote_addr, arrow.utcnow().datetime) else: raise TimeoutError except (TimeoutError, QueueNotFound), error: msg = _('The message could not be processed') flash_alert(msg) msg = _('The message could not be processed: %s') % error log.info(msg) redirect(url('mailq-status'))
def mailq_preview(self, queueid, attachid=None, imgid=None, allowimgs=None, richformat=None): "preview a queued message" query = Session.query(MailQueueItem) uquery = UserFilter(Session, c.user, query, model=MailQueueItem) query = uquery.filter() try: mailqitem = query.filter(MailQueueItem.id == queueid).one() except NoResultFound: flash_alert(_('The requested queued message was not found.')) redirect(url('mailq-status')) try: task = preview_queued_msg.apply_async( args=[ mailqitem.messageid, mailqitem.direction, attachid, imgid ], routing_key=mailqitem.hostname) task.wait(30) if task.result: if imgid: response.content_type = task.result['content_type'] if task.result and 'img' in task.result: info = QUEUEDOWNLOAD_MSG % dict(m=mailqitem.messageid, a=task.result['name']) audit_log(c.user.username, 1, unicode(info), request.host, request.remote_addr, arrow.utcnow().datetime) return base64.decodestring(task.result['img']) abort(404) if attachid: info = QUEUEDOWNLOAD_MSG % dict(m=mailqitem.messageid, a=task.result['name']) audit_log(c.user.username, 1, unicode(info), request.host, request.remote_addr, arrow.utcnow().datetime) response.content_type = task.result['mimetype'] dispos = 'attachment; filename="%s"' % task.result['name'] response.headers['Content-Disposition'] = str(dispos) content_len = len(task.result['attachment']) response.headers['Content-Length'] = content_len response.headers['Pragma'] = 'public' response.headers['Cache-Control'] = 'max-age=0' return base64.decodestring(task.result['attachment']) for part in task.result['parts']: if part['type'] == 'text/html': local_rf = (not task.result['is_multipart'] or richformat) part['content'] = img_fixups(part['content'], queueid, allowimgs, local_rf) c.message = task.result info = QUEUEPREVIEW_MSG % dict(m=mailqitem.messageid) audit_log(c.user.username, 1, unicode(info), request.host, request.remote_addr, arrow.utcnow().datetime) else: raise TimeoutError except (TimeoutError, QueueNotFound), error: msg = _('The message could not be processed') flash_alert(msg) msg = _('The message could not be processed: %s') % error log.info(msg) redirect(url('mailq-status'))